定时任务未执行

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/mingyundezuoan/article/details/82811262

定时任务未执行


异常描述

  • 添加的定时任务生产环境未执行,发现问题已经是半个月之后,由于数据对不上,才返现月初的定时任务未执行
  • 测试环境复现该问题,将定时任务时间跳转为当前时间,发布到测试环境,观察日志,程序执行正常;且当时功能验收时验证无误
  • 确认CRON 表达式是否正确,反复验证无误

异常分析

  • 查看上月月末日志及月初第二天的日志,发现月初的定时任务却在上个月月末的的23:59:43时提前执行了
  • 联系运维,查看服务器时间,对比服务器时间与实际时间,发现服务器时间比实际时间晚,导致定时任务提前执行
  • 运维答复,每日零点自动同步服务器时间,定时任务的执行时间应该避开这个时间段

异常反思

  • 定时任务执行时间设置,避开 00:00:00 ,设置到 01:00:00 ,避免服务器时间不同步而产生的影响
  • 定时任务需要增加手动触发机制,避免因系统自动执行失败而产生的影响
  • 定时任务的接口实现中要按照执行步骤添加日志,便于后期定位问题
  • 手动触发机制包含
    • 将已处理过的数据全部清除,重新处理的功能;如果定时任务处理的有问题,已处理的数据就是脏数据,需要重新处理
    • 去重,避免重复处理
  • 所有项目开发过程中及时记录开发流程,使用技术,开发细节,业务逻辑,包括测试过程中的BUG,项目复盘

排查步骤

  • 检查当时日志文件,定时任务是否运行,是否是代码逻辑出现问题
  • 检查前日日志文件,是否可以检索到运行日志
  • 查看服务器当前系统时间,确认是否是时间不同步导致

他山之石

  • ntpdate 同步系统时间
    • 示例:ntpdate time1.aliyun.com
    • 权限:具有 Root 权限的用户可以在主机执行

参考资料

猜你喜欢

转载自blog.csdn.net/mingyundezuoan/article/details/82811262