Drupal (6.19) cron исчерпывает память при поисковой индексации - PullRequest
0 голосов
/ 24 января 2011

Моя установка Drupal 6.19 работала около шести месяцев.Клиент активно использует его, публикуя больше контента.

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

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

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

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

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

Ответы [ 3 ]

0 голосов
/ 24 января 2011

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

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

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

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

0 голосов
/ 26 января 2011

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

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

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

0 голосов
/ 24 января 2011

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

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

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...