xxl-job定时调度-执行器注册后又消失问题排查

现象

调度中心和执行器系统启动后,执行器注册到调度中心后,间歇性失效,导致调度失败。
数据层面
执行器注册线程运行后,可以正常往xxl_job_registry表中插入数据,但是xxl_job_group表中的address_list字段一直为空,并且xxl_job_registry表中的数据会莫名其妙消失。
注意到的异常
xxl_job_group表中的update_time字段总是比正常时间多出3分钟左右。

原因

调度中心部署在两台服务器上,其中一台服务器的时间比正常时间快了3分钟,导致执行器注册后立刻失效。
xxl-admin和xxl-executor 是通过操作数据库完成执行器注册。
xxl-executor半分钟执行一次,往xxl_job_registry新增或更新执行器信息(根据registry_group、registry_key、registry_value三个字段更新update_time,更新失败则新增)比较简单 。
xxl-admin也半分钟执行一次,1)删除超时的执行器注册信息(xxl_job_registry 中 update_time在1.5分钟以前的数据),2)获取有效的xxl_job_registry,3)根据获取的xxl_job_registry 数据更新xxl_job_group的address_list字段。
因为部署了两台调度中心,比正常时间快3分钟的那台服务器总是清理刚注册的执行器,导致无法获取执行器。

后记

调度系统已经在其他环境安装过,能够正常执行;本地正常执行;但是部署到客户环境后遇到该问题,一开始怀疑时环境问题,未果,后来分析注册模块源码,联想到xxl_job_group异常字段update_time,怀疑是服务器时间问题导致。一开始排查到服务器和数据库的时间不一致,改为一致后,有一段时间确实可以正常注册(数据库比服务器提前10分钟,将服务器按照数据库时间调整,导致问题被掩盖),后来联系用户将服务器和数据库时间调整为标准时间,问题再次出现,偶然想到还部署了另外一个调度中心,果然,这台服务器的时间比正式服务器快了3分钟,停止服务后,问题解决。

  • 2
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值