cron_schedule 中 pending 越积越多,说明计划能够生成,但没有被及时执行,或者执行速度赶不上生成速度。直接清表只会删掉证据,过一段时间还会再次堆积。
SELECT job_code,status,COUNT(*) qty
FROM cron_schedule
GROUP BY job_code,status
ORDER BY qty DESC;
先确认系统 crontab 按分钟调用 Magento,并且使用正确 PHP 与项目用户。再找出数量最多、执行时间最长的 job code;一个长任务占住进程,会拖累同组其他任务。
检查 running 记录是否长期不结束、进程锁是否残留,以及多节点调度是否按设计配置。消费者停止时,依赖队列的任务也会在业务层表现为“Cron 没执行”。
处理积压时应先修复执行能力,再根据业务重要性分批消化。邮件、索引、价格规则和第三方同步的容错要求不同,不能把所有旧任务无差别重新跑一遍。

