I set the cron in Debian as this:
*/15 * * * * /usr/bin/php /path/to/moodle/admin/cli/cron.php >/dev/null
But it leads to a very high cpu usage(96%). (ref to attachment)
When I disable the cron, all go back to normal.
You could run the cron the the foreground and see where it spending all it's time.
You can run it in the foreground by doing
$ sudo su www-data
$ /usr/bin/php /path/to/moodle/admin/cli/cron.php
Obviously replace that last bit with where your cron.php actually is..
And see what happens.
Emma's about the path is very important. Use your web server browser to find the exact path to your Moodle directory. If Moodle is installed as a subdirectory in your home directory, then you should use:
*/15 * * * * /usr/bin/php /home/moodle/admin/cli/cron.php >/dev/null
There are other commands you can use. If you have CPanel, search for cron and enter the following in the command line (use your real web address for Moodle). For example, if your Moodle installation is located at http://www.hugo.com/moodle then your cron command should be
wget -q -O /dev/null http://www.hugo.com/moodle/admin/cli/cron.php
Looks like cron processes run on top of each other. You could also try the following:
- run Moodle cron CLI script from within a shell script. Before invoking Moodle cron, the shell script could check if another Moodle cron process is still running, and if yes just exit.
- assign to Moodle cron a lower priority using nice, such as "nice /usr/bin/php ...."
I'd also follow the suggestion in the thread about keeping cron execution log, at least for a given number of runs, so it is possible to check what happened during cron processing.
I am on vication and hard to connect to server. I will check it and report the result.