I have this issue of a cron that executes a PHP script at minute 20 every hour, This script generates a small number of reports based on data from a MySql database.  Generally this script ends about minute 30 of the hour, i.e., lasts 10 minutes, But a few times it ended about minute 45, even minute 50 of the hour, So we set a log to see where was the delay. To our surprise we saw that some times the script didn't started at minute 20, last time it delayed it started at minute 35 with no apparent reason.We searched for locked tables in MySql but found nothing.  Have anyone any idea of what can be happening here to delay a cron script?
Why a crond can start late randomly
cron