Быстрая диагностика зависания крона

Прислано: seaji

чт, 29/11/2007 - 22:08

Другие статьи по теме:

Постоянно сталкивался с зависанием крона (http://drupal.ru/node/2293#comment-60504)
Вот некоторые рецепты.

Индексация

Уменьшите количество документов для индексирования за один запуск крона на стр. настройки поиска.
Лучше запускать крон несколько раз в день.

Рассылка

Если у вас стоит simple news то он может вызывать зависание при рассылке большого количества писем.

Не хватает времени

Попробуйте изменить файл cron.php следующим образом:

<?php
// If not in 'safe mode', increase the maximum execution time:
// if (!ini_get('safe_mode')) {
set_time_limit(1800);
// }
?>

т.е. закомментить эти строки.

Кто виноват?

Что бы выяснить какой модуль виноват в зависании крона сделайте следующее:
В файле includes/module.inc в самой последней функции function module_invoke_all() поменяйте строку 404-405

<?php
foreach (module_implements($hook) as $module) {
    
$function $module .'_'$hook;
?>

на
<?php
foreach (module_implements($hook) as $module) {
    if (
$hook == 'cron') {
    
watchdog('cron_runs'$module); }
    
$function $module .'_'$hook;
?>

Таким образом у вас появится новая категория "cron_runs" в журнале
В этой категории будет список модулей вызывавших крон.
Крайний последний модуль и будет виноват в его зависании.

После диагностики обязательно верните все файлы ядра в исходное состояние т.к. хакать ядро это как вступать в беспорядочные половые отношения.

Комментарии


Настройки просмотра комментариев

Выберите нужный метод показа комментариев и нажмите "Применить"
Опубликовано VladSavitsky в чт, 29/11/2007 - 22:14.

Супер. В закладки.


Опубликовано seaji в чт, 29/11/2007 - 22:24.

Да, чуть не забыл.
Вы еще можете получать такое сообщение как у меня "Попытка перезапуска .... в то время как уже выполняется."
С чем это связано?
А связано это с тем, что wget может запрашивать cron.php до 20 раз подряд если не получает вразумительного ответа.
http://drupal.org/node/150972

Еще бывает полезно закрыть доступ к крону "извне" таким вот образом:
В файле .htaccess пишем:

<Files "cron.php">
Order deny,allow
Allow from xxx.xxx.xxx.xxx
Deny from all
</Files>

Вместо xxx.xxx.xxx.xxx пишете IP с которого разрешаете запуск крона.


Опубликовано seaji в чт, 29/11/2007 - 22:44.

Во, получил результаты, любуйтесь:


Опубликовано Gedler в пт, 30/11/2007 - 08:17.

респект!
решил глянуть, что у меня с кроном происходит и оказалось, что уже 3-й день на одном из сайтов не выполняется в полном объеме...
благодаря предложеному решению выяснил, что модуль update_status ведет себя не вполне корректно.
отключил, буду разбираться.


Опубликовано Valeratal в пт, 30/11/2007 - 20:51.

спасибо


Опубликовано VladSavitsky в вт, 13/05/2008 - 20:36.

Drupal CookBook - Готовить может каждый!Решение было сохранено на сайте DrupalCookBook.ru:
Быстрая диагностика зависания крона.
Авторы, предложившие решения, также указаны в сохранённой статье.


Опубликовано kiev1 в ср, 14/05/2008 - 03:14.

спасибо, надо модуль написать


Опубликовано НовичОК в ср, 28/05/2008 - 19:02.

наверно полезно.


Опубликовано Goodboy в ср, 09/09/2009 - 11:31.

Спасибо, помогло!


Опубликовано kpv_dnepr@drupal.org в пн, 03/05/2010 - 15:55.

Спасибо! Нашел кто виноват, это модуль search, только что с ним теперь делать, как то сайт без поиска - грустно! Уменьшал кол-во индексируемых строк, ничего, зависает. Что скажете?


Опубликовано IrinaStasuk@dru... в вт, 18/05/2010 - 20:38.

И у меня поиск вызывает зависание. Как только его отключаю, то крон выпоняется быстро. Поставила поиск Гугла, но он мне не совсем нравится - находит кучу ненужных страниц, где нужные теряются в общей массе. Да и почему-то при включеном гугловском поиске сайт начал подтормаживать.


Опубликовано seaji в ср, 19/05/2010 - 11:08.

Посмотрите nid последнего индексированного материала. Потом откройте эту страницу и посмотрите в исходный код текста. У меня поиск зависал если в тексте были вордовские спец-теги, когда я копировал и вставлял из ворда.


Опубликовано IrinaStasuk@dru... в чт, 20/05/2010 - 07:05.

Сейчас задам глупый вопрос. А как посмотреть, какой был последний? Я облазила всю базу и не нашла... Хотя у меня такое ощущение, что просто база стала тяжелая для этого модуля - крон не просто зависает, а "кладет" сайт.


Опубликовано seaji в чт, 20/05/2010 - 21:53.

переменная node_cron_last в таблице variable

а вообще Вам стоит произвести поиск по всей базе данных по условию LIKE %cron%


Опубликовано IrinaStasuk@dru... в пт, 21/05/2010 - 07:07.

Спасибо большое за ответ. Переменную я нашла. Все нормально. Но "родной" поиск убрала. Он давно уже не справляется с базой. Поставила Яндекс. Его выборка мне больше понравилась, чем гугловская - находит четко нужные страницы без лишнего мусора. А вот поиск у Гугла слишком уж подробный - находит все страницы, где упоминается нужное слово (даже в перекрестных ссылках), поэтому нужные страницы как-то теряются в этом объеме данных.

Но эксперимент продолжается...


Новое на сайте

Ссылки партнёров