Drupal is an excellent open-source CMS but at the same time a bit harder to get hold off when things get bad without fairly advanced Drupal knowledge, recently I upgraded this blog from Drupal 5 to Drupal 6 and after making the site live with upgrade the Drupal cron-job started failing as evident in the picture below (the cron is setupped to run every six hours but it failed to do so).
![Failed Cron Job In Drupal](http://www.megaleecher.net/uploads/Drupal-failing-cron-job.jpg)
Strangely enough running cron manually showed a 404, Page Not Found error, having tried everything from fixing cron commands to playing with cron.php file-permissions finally I found the reason of failed cron-jobs by having look at 'Drupal Log' which was showing error 'Cron run exceeded the time limit and was aborted.'
![Cron Job Timing Out](http://www.megaleecher.net/uploads/drupal-cron-job-timeout.jpg)
Now, the question was how to know why the cron was timing out - the problem here is that Drupal not only takes care of it's own jobs like pinging, search-indexing, maintenance etc. during each cron-run but also allows modules to implement cron-hooks, so knowing the exact culprit was essential to debug and fix the problem. Thankfully, Drupal does have a module SuperCron which allows users to see what cron-hooks are in-place, how much time each cron-hook takes to execute, capture any output generated by the hooks, identify the exceptions raised by individual hooks and even invoke and disable individual hooks.
![Diagnosing And Fixing Drupal Cron Jobs Using SuperCron](http://www.megaleecher.net/uploads/drupal-supercron.jpg)
After, installing SuperCron I was able to pin-point the erroneous cron-hook which was Ping in my case, disabling the ping module cron-hook worked and later I hunted down the problem to be Ping unable to reach remote server due to firewall restrictions, allowing which in firewall made me re-enable it without any issues.
Add new comment