2011-01-24 2 views
0

Моя установка Drupal 6.19 работает около шести месяцев. Клиент активно использует его для публикации большего количества контента.Drupal (6.19) cron исчерпывает память при индексировании поиска

Однако что-то произошло, потому что теперь cronjob не заканчивается.

Фатальная ошибка: Разрешены памяти размером 134217728 байт исчерпаны (пытались выделить 36230464 байт) в /XXX/modules/search/search.module на линии 444

Как вы видите, у меня есть предел памяти 128M в PHP .ini и search.module пытается выделить довольно большую сумму, 36M. Поскольку я не могу придумать какую-либо причину, почему search.module сделает это, я спрашиваю вас, если у вас есть какие-то намеки, как я могу продолжить. Увеличение ограничения памяти невозможно, поскольку Drupal находится в среде размещения.

Я ограничил индексацию до 10 узлов и изменил кратчайшую длину слова на 5 символов. Я не понимаю, как индексирование 10 узлов все равно будет потреблять всю эту память.

Как отлаживать? Что попробовать? Любые идеи были бы хорошы!

+0

Потребление памяти зависит не только от количества проиндексированных узлов, но и от активированных модулей. Если у вас много активных модулей (или нескольких ресурсных голодных модулей, таких как CCK/views), Drupal будет поглощать много оперативной памяти. – wimvds

+0

Мои плохие люди. Я не понял, что и комментарии индексируются. И другое, чего я не заметил, было то, что у меня было чуть более 250 000 спам-комментариев, которые занимали около 600 М пространства от файловой системы. Можно спросить: как вы можете это пропустить. Ответ: Вы не должны. Спасибо всем. – Jasmo

ответ

0

Посмотрите на строку 444 в /XXX/modules/search/search.module, какой там код?

Я думаю, нам нужно больше узнать о содержании вашего сайта. Насколько большой сайт? Сколько узлов? Сколько текста на узел, примерно?

Проверьте в вашей базе данных, сколько мест хранения используют ваши узлы? Каков размер всей базы данных?

У вас есть модуль, который позволяет вам искать файлы и файлы в файловой системе (например, http://drupal.org/project/search_files)?

0

Хорошо, поэтому вы говорите, что клиент публикует больше контента. У нас нет информации о том, сколько памяти ранее использовалось cronjob. Скорее всего, вы были правы под своими ограничениями по памяти до недавнего времени, и теперь вы прошли. Такие вещи происходят все время, когда люди, которые не знают, что делают, создают веб-сайты.

Как продолжить? Увеличьте распределение памяти для модуля поиска. Я имею в виду, это кажется немного очевидным. Вы беспокоитесь, что это не будет масштабироваться? Ну, вы действительно не знаете наверняка, потому что до сих пор вы не обсуждали проблему.

Одна вещь, о которой нужно подумать, заключается в том, что поисковая система является способом торговли дисковым пространством для ввода-вывода при запуске поиска. Либо вы просматриваете все свои документы (используя ввод-вывод) для каждого поиска, либо смотрите индексы (на диске), чтобы получить информацию. Поэтому вполне естественно, что скрипт cron для индексации вашего сайта потребует определенного объема памяти (как своего рода временного дискового пространства) для выполнения этой работы.

+1

Все правильные моменты - поставьте, я не вижу, как любой из них поможет @Jasmo решить свою проблему. – anschauung

0

Мое первое подозрение в том, что в очереди стоит большой узел, который ставит вас на предел. Есть несколько способов протестировать на это:

Проверьте таблицу search_dataset в вашей базе данных для самых больших sid, что соответствует узлу вашего сайта. Затем посмотрите на узлы с более крупными nid с. Является ли один из них ненормально большим или каким-то странным? Попробуйте отредактировать его, чтобы иметь пустое тело (обязательно сохраните старую ревизию) и посмотрите, поможет ли это.

Если нет - комментарий, и мы попробуем что-то еще.

Смежные вопросы