xxl-job踩坑记录——执行器,执行10分钟自动失败
问题描述
上一篇Docker 部署xxl-job 报错:xxl-rpc remoting error(connect timed out), for url : xxxxxx - 这行代码没Bug - 博客园 (cnblogs.com),解决了方式是把执行器自动注册改为手动录入,后面跑任务的时候发现超过十分钟的任务会自动失败,但是任务还在跑,只是调度中心这边日志已经是调度失败了,查看失败日志为:“任务结果丢失,标记失败”。如下图
文章图片
解决思路
仔细看了一下任务执行及日志回调的源码,也打了日志,发现并没有问题,当任务跑了十分钟后,执行器的线程没有停止还在继续跑着,但是调度中心的日志已经是失败了。
后面想起来在调度中心启动的时候,创建一个线程来处理任务结果丢失。
JobCompleteHelper.getInstance().start();
进去看了一下源码对于任务结果丢失处理:调度记录停留在 "运行中" 状态超过10分钟,且对应执行器心跳注册失败不在线,则将本地调度主动标记失败。
// for monitor
monitorThread = new Thread(new Runnable() {@Override
public void run() {// wait for JobTriggerPoolHelper-init
try {
TimeUnit.MILLISECONDS.sleep(50);
} catch (InterruptedException e) {
if (!toStop) {
logger.error(e.getMessage(), e);
}
}// monitor
while (!toStop) {
try {
// 任务结果丢失处理:调度记录停留在 "运行中" 状态超过10min,且对应执行器心跳注册失败不在线,则将本地调度主动标记失败;
Date losedTime = DateUtil.addMinutes(new Date(), -10);
List losedJobIds= XxlJobAdminConfig.getAdminConfig().getXxlJobLogDao().findLostJobIds(losedTime);
if (losedJobIds!=null && losedJobIds.size()>0) {
for (Long logId: losedJobIds) {XxlJobLog jobLog = new XxlJobLog();
jobLog.setId(logId);
jobLog.setHandleTime(new Date());
jobLog.setHandleCode(ReturnT.FAIL_CODE);
jobLog.setHandleMsg( I18nUtil.getString("joblog_lost_fail") );
XxlJobCompleter.updateHandleInfoAndFinish(jobLog);
}}
} catch (Exception e) {
if (!toStop) {
logger.error(">>>>>>>>>>> xxl-job, job fail monitor thread error:{}", e);
}
}try {
TimeUnit.SECONDS.sleep(60);
} catch (Exception e) {
if (!toStop) {
logger.error(e.getMessage(), e);
}
}}logger.info(">>>>>>>>>>> xxl-job, JobLosedMonitorHelper stop");
}
});
最终解决
【xxl-job踩坑记录——执行器,执行10分钟自动失败】把执行器手动录入改为自动注册,然后在执行器的配置文件里把地址加上,就解决了问题。
xxl:
job:
executor:
address: http://172.17.0.1:${server.port}/
推荐阅读
- 深度学习|遥感旋转目标检测模型(R3Det 实验记录)
- 数据库|MySQL单表数据量过千万,采坑优化记录,完美解决方案
- springboot使用mybatis一对多的关联查询问题记录
- 学习记录|393. UTF-8 编码验证
- leetcode刷题记录|移动零——LeetCode283题
- leetcode刷题记录|反转字符串——LC344题
- leetcode刷题记录|两数之和II - 输入有序数组——LC167题(中等难度)
- leetcode刷题记录|轮转数组——LeetCode198题
- sql|实训第二天记录-sql注入实战(教务系统模拟注入+sqli-labs less1-5)
- python|论文记录(图像描述技术综述)