Решение
Индексация
Уменьшите количество документов для индексирования за один запуск крона на стр. настройки поиска.
Лучше запускать крон несколько раз в день.
Рассылка
Если у вас стоит simple news то он может вызывать зависание при рассылке большого количества писем.
Не хватает времени
Попробуйте изменить файл cron.php следующим образом:
// if (!ini_get('safe_mode')) {
set_time_limit(1800);
// }
т.е. закомментить эти строки.
Кто виноват?
Что бы выяснить какой модуль виноват в зависании крона сделайте следующее:
В файле includes/module.inc в самой последней функции function module_invoke_all() поменяйте строку 404-405
$function = $module .'_'. $hook;
на
if ($hook == 'cron') {
watchdog('cron_runs', $module); }
$function = $module .'_'. $hook;
Таким образом у вас появится новая категория "cron_runs" в журнале
В этой категории будет список модулей вызывавших крон.
Крайний последний модуль и будет виноват в его зависании.
После диагностики обязательно верните все файлы ядра в исходное состояние т.к. хакать ядро это как вступать в беспорядочные половые отношения.
Cообщения "Попытка перезапуска .... в то время как уже выполняется."
Вы еще можете получать сообщения "Попытка перезапуска .... в то время как уже выполняется."
Связано это с тем, что wget может запрашивать cron.php до 20 раз подряд если не получает вразумительного ответа.
http://drupal.org/node/150972
Еще бывает полезно закрыть доступ к крону "извне" таким вот образом:
В файле .htaccess пишем:
Order deny,allow
Allow from xxx.xxx.xxx.xxx
Deny from all
</Files>
Вместо xxx.xxx.xxx.xxx пишете IP с которого разрешаете запуск крона.
Использованные материалы
Быстрая диагностика зависания крона










