我们生产环境中的一个 xxl-job 任务, 很大一部分执行记录被标记为 "任务结果丢失,标记失败", 几乎是 98% 吧 然后 调试的时候 存在几个令人疑惑的地方 1. 通过 xxl-job 点击查看任务的执行记录的日志, 日志为空, 另外根据配置的日志的路径来查找, 查找不到给定的 job 的日志文件 2. jstack 查看该程序, 可...
解决思路 仔细看了一下任务执行及日志回调的源码,也打了日志,发现并没有问题,当任务跑了十分钟后,执行器的线程没有停止还在继续跑着,但是调度中心的日志已经是失败了。 后面想起来在调度中心启动的时候,创建一个线程来处理任务结果丢失。 JobCompleteHelper.getInstance().start(); 进入start()方法,里面创建了两个...
// 任务结果丢失处理:调度记录停留在 "运行中" 状态超过10min,且对应执行器心跳注册失败不在线,则将本地调度主动标记失败;Date losedTime=DateUtil.addMinutes(newDate(),-10);List<Long>losedJobIds=XxlJobAdminConfig.getAdminConfig().getXxlJobLogDao().findLostJobIds(losedTime);if(losedJobIds!=null&&lo...
在任务日志界面,点击右侧的“终止任务”按钮,将会向本次任务对应的执行器发送任务终止请求,将会终止掉本次任务,同时会清空掉整个任务执行队列。 任务终止时通过 “interrupt” 执行线程的方式实现, 将会触发 “InterruptedException” 异常。因此如果JobHandler内部catch到了该异常并消化掉的话, 任务终止功能将不可用。
XxlJobTrigger 在trigger方法中,会根据传入的参数做一系列的初始化,然后执行processTrigger方法进行任务的触发。 public static void trigger(int jobId, TriggerTypeEnum triggerType, int failRetryCount, String executorShardingParam, String executorParam,
3、JobFailMonitorHelper:失败监控线程 功能描述: 主要是一个monitorThread线程,每隔10秒查询一次执行日志获取1000执行失败的日志,进行打标(告警标识和重试标识),从而触发告警逻辑和任务重试逻辑。 4、JobCompleteHelper:任务回调和任务丢失标记 功能描述: 主要有一个线程池callbackThreadPool主要处理client任务执行结果和日...
();// admin fail-monitor run 初始化任务故障监控的守护线程,负责任务重试和发送告警信息JobFailMonitorHelper.getInstance().start();// admin lose-monitor run ( depend on JobTriggerPoolHelper )// 初始化callback线程池和监控任务执行失败的守护线程,【任务结果丢失处理:调度记录停留在 "运行中" 状态超过...
// 任务结果丢失处理:调度记录停留在 "运行中" 状态超过10min,且对应执行器心跳注册失败不在线,则将本地调度主动标记失败;Date losedTime=DateUtil.addMinutes(newDate(),-10);List<Long>losedJobIds = XxlJobAdminConfig.getAdminConfig().getXxlJobLogDao().findLostJobIds(losedTime); ...
monitorThread 线程池任务结果丢失处理, 相当于不执行任务,直接结束。 6. com.xxl.job.admin.core.thread.JobLogReportHelper View Code com.xxl.job.admin.core.thread.JobLogReportHelper#logrThread 线程用于生成调度报告,然后清除过期日志。 7. com.xxl.job.admin.core.thread.JobScheduleHelper ...