Cron run timeout and PHP Filter Module
I had a bit of a sweat today when my production server timed out during a manual cron run. As I debugged, I noticed from the watchdog that it hadn't run successfully for over one full day. The PHP error log revealed that the call to devel_rebuild_node_comment_statistics() was reporting an 'undefined function' (even though I have Devel basically disabled on the production server
A little Google search revealed that the usual suspects are overly aggressive search indexing (reducing from 500 pages to 200 per cron run didn't help) and XML sitemap cache.
Here's another nice tip:
to try to debug wehre cron is bailing, try this:
if you go into module.inc
and in the function module_invoke_all
add this extra line:
$function = $module .'_'. $hook;
if ($hook == 'cron') watchdog('cron', "hit $module cron"); // add this line
You should be able to check out your watchdog log and see which module is killing cron.
Peter Lindstrom
The trick that worked for me for getting cron to run was to disable the PHP Input Filter module. I have since re-enabled it and time will tell if it runs on its 3 hour schedule. Fingers crossed!