xxljob调度中心与执行器空闲导致失去通讯原因分析

之前公司项目使用的xxljob是旧版本的2.1.0版本,经常出现在凌晨的时候调度定时任务时,无法调度执行器,导致任务执行失败。经过研究源码分析,发现是因为链接缺少心跳检测导致

旧版本2.1.0的xxljob(对应的xxl-rpc为1.4.0)使用功能的netty没有增加心跳检测机制,如果调度中心与调度器之间存在负责均衡LB中间件,会出现请求超时的情况。因为LB中间件与两端连接时,如果空闲到一定时间则会主动断掉连接,导致另外一端还复用原连接出现通讯失败。需要升级xxljob版本或者改造netty的使用增加心跳检测保持存活:

NettyHttpConnectClient、NettyHttpClientHandler (客户端设置心跳空闲时间,在这个时间段出现空闲则主动发送心跳)

NettyHttpServer、NettyHttpServerHandler (服务端设置心跳*3的空闲时间,如果在这个时间段出现空闲则主动断开连接)

附加:客户端不用增加主动断开的处理,是因为发送心跳的时候如果连接有问题则会报错自动关闭。服务端则在指定时间内没收到心跳主动断开连接。

问题描述和处理:https://github.com/xuxueli/xxl-job/issues/1026

心跳检测问题,在xxl-rpc在1.4.2版本进行了修复,使用2.1.1版本的xxljob即可(对应的xxl-rpc为1.5.0)。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值