同一封邮件发两次,不等于 cron_schedule 必然有两条记录。先按 job code 查询计划时间、执行与完成时间,还原发生过程。
SELECT schedule_id,job_code,status,scheduled_at,executed_at
FROM cron_schedule
WHERE job_code='alwayly_sync_pending'
ORDER BY schedule_id DESC LIMIT 20;
相同计划时间有多条时,检查部署用户、控制面板和 crontab -l,常见情况是安装命令已有一套,运维又手工添加。多 Web 节点共用数据库时,也要确认只有规划好的节点负责调度。
记录只有一条而业务做了两次,通常是任务被终止后重跑,外部动作已成功但状态未写回。应以业务唯一键去重。若一次执行时间超过调度间隔,增加锁、缩小批次或独立 cron group。清空 cron_schedule 只会删除诊断证据,不能解决重复执行。

