# 定时任务问题排查解决指南
本指南汇总了EOS平台中XXL-JOB定时任务的常见问题及解决方案,帮助您快速定位和解决定时任务执行失败、调度异常等问题。请根据您遇到的现象,在下方查找对应的处理步骤。
# 一、任务注册与启动类问题
1. 现象:AFCENTER启动成功,但执行器无法注册到xxljob,报错Statuscode(401) invalid.for url : http://xxx/api/afc/job/api/registry access url [/api/afc/job/api/job-registry-bizx] token [null] must be login.
解决方案:
- 执行器对于调度器来说是一个独立的执行器,AFC自己调自己也要鉴权。
在afcenter\config\AFCENTER\config\user-config.xml Login-Filter登录白名单里增加
/api/afc/job/api/*。![xxl白名单]()
2. 现象:应用重启后,定时任务服务不能自动启动,日志提示找不到对应的逻辑流
解决方案:
- 检查任务调度的配置是否完整。确认在
application-job.properties中已正确配置执行器相关参数。
# 调度中心配置
afc.job.admin.enabled=true
#执行器token,非空时启用
xxl.job.accessToken=default_token
# executor配置
afc.job.executor.enabled=true
afc.job.executor.accessToken=default_token
#调度中心部署地址,多个配置逗号分隔 "http://address01,http://address02"
afc.job.executor.address=http://ip:port/
#地址信息用于 "执行器注册" 和 "调度中心请求并触发任务"
afc.job.executor.ip=127.0.0.1
#执行器端口号:小于等于0则自动获取;默认端口为9999,单机部署多个执行器时,注意要配置不同执行器端口
afc.job.executor.port=9999
#执行器日志文件存储路径,需要对该路径拥有读写权限;为空则使用默认路径
afc.job.executor.logPath=
#执行器日志保存天数
afc.job.executor.logRetentionDays=30
- 检查执行器端口是否被占用。执行器端口默认都是9999,一台机器上如果部署了多个执行器应用,需要修改端口避免冲突。
3. 现象:微服务应用中配置定时任务,启动时报错 The access token is wrong
解决方案:
- XXL-JOB调度器调用时不带token,需要在逻辑流中手动传token,或将
call-method接口加入登录白名单。 - 注意:加入白名单存在安全隐患,生产环境建议使用token方式。
- 如需使用token,可通过系统变量配置固定token,在逻辑流中获取并传递。
# 二、任务执行与结果类问题
4. 现象:job调用逻辑流时,提示调用成功,但实际执行失败
解决方案:
- 检查逻辑流中是否存在查询图元,查询操作可能导致执行超时或异常。
- 查看
eos-trace.log日志,获取详细的错误堆栈信息。
5. 现象:任务调度功能中,多个任务执行同一个逻辑流,但参数不同,执行结果却都一样
解决方案:
- 目前不支持同一逻辑流多任务不同参数。
- 快速绕过方案:
- 创建多个逻辑流,分别配置不同参数。
- 或创建外层逻辑流进行包装,外层逻辑流名称不同,内层调用同一个子逻辑流。
# 三、日志与监控类问题
6. 现象:xxl-job同步的后台任务执行时间较长(如5分钟),数据库任务正常完成,但调度日志返回read timed out
解决方案:
- 如果确定任务正常完成但报了超时错误,可以尝试调节超时时间。
- 在
application-job.properties中配置超时时间:xxl.job.executor.timeout=300 # 单位为秒 - 注意:不建议将超时时间设置过长,如果确认任务是正常执行完成,可忽略该错误。
# 四、配置与环境类问题
7. 现象:xxljob调逻辑流时,任务参数怎么传?
解决方案:
参数需要符合json格式,示例参考:
{"usernames":["wangfang","liming"]}![xxl白名单]()
在逻辑流中通过参数变量接收传入的json数据。
8. 现象:新建调度执行器提示AppName长度限制为4~64
解决方案:
- 这是xxl-job的限制,修改应用名称长度大于4个字符即可。
- 新建低开项目时,应用名称需满足长度要求。
# 附录:常用配置参考
application-job.properties 核心配置:
# 调度中心部署根地址
xxl.job.admin.addresses=http://127.0.0.1:28083/xxl-job-admin
# 执行器通讯TOKEN(需与调度中心一致)
xxl.job.accessToken=自定义令牌
# 执行器AppName(需与调度中心执行器管理的AppName保持一致)
xxl.job.executor.appname=应用名称
# 执行器注册地址
xxl.job.executor.address=
# 执行器IP
xxl.job.executor.ip=
# 执行器端口
xxl.job.executor.port=9999
# 执行器运行日志文件存储磁盘路径
xxl.job.executor.logpath=/data/applogs/xxl-job/jobhandler
# 执行器日志文件保存天数
xxl.job.executor.logretentiondays=30

