阿里云首页 金融分布式架构 SOFAStack

任务触发与执行问题

任务执行超时

问题现象

出现 TIMEOUT 错误。

问题原因

客户端处理超时。

解决方法

  • 查看超时时间是否配置太小。

    建议根据任务的实际执行情况设置合理的超时时间。

  • 查看客户端错误日志 common-error.log

自定义参数不存在

问题现象

出现 javax.el.PropertyNotFoundException: Cannot find property \${property_name} 报错。

问题原因

任务拓扑的判断条件中,指定的自定义参数不存在。

解决方法

检查判断条件与任务拓扑配置中的自定义参数列表是否匹配,并更正。

客户端未注册到服务端

问题现象

出现如下报错:

  • no targets was found

  • target zone is null

  • no available target zones was found, please check if clients are available

  • no available targets was found in zone

问题原因

客户端没有注册到服务端。

解决方案

  1. 确认客户端是否启动。

    请先确认控制台配置的应用名称和执行器名字是否与客户端代码里写的一致,可以查看 endpoint 配置是否正确。

  2. 如果客户端已经启动,则检查 logs/scheduler 目录下的 common-default.logcommon-error.log 错误日志。

  3. 如果错误日志中都没有报错,则查看健康检查日志,确认健康检查是否通过。

客户端未提供执行器

问题现象

出现 no suitable job handler for {handler_name} 报错。

问题原因

任务中使用的 handler 执行器存在,但任务应用中没有找到。

解决方案

  1. 检查代码里的 handlerName 返回值和任务配置里的执行器名字是否一致。

  2. 在客户端加上 handler 实现,getName 值设置为当前 {handler_name}

拓扑无可执行的发布版本

问题现象

出现 no published topology process was found 报错。

问题原因

拓扑图没有发布的版本,就直接执行拓扑任务,即无可执行的发布版本。

解决方案

编辑拓扑图,发布一个版本。

服务端异常

问题现象

  • 整个应用的所有任务均触发失败。

  • 控制台提示失败原因:Server exception when invoke with callback. Please check the server log!

问题原因

该项目工程缺少 Tracer 依赖:

<dependency>
      <groupId>com.alipay.sofa</groupId>
      <artifactId>tracer-enterprise-sofa-boot-starter</artifactId>
</dependency>

解决方案

  • 检查工程 pom.xml 文件,是否已经添加了 Tracer 依赖。如没有,需手动添加该依赖。

  • 对于 SOFABoot 框架开发的工程,需要确认 SOFABoot 的版本是否低于 3.4.3。

    • 如低于 3.4.3 版本,需要手动添加 Tracer 依赖。

    • 而 SOFABoot 3.4.3 及其以上版本,则会自动加上 Tracer 依赖。无需再手动添加。

    • 有关 SOFABoot 的版本信息,参见 版本说明

任务互斥导致执行失败

问题现象

出现如下报错:

  • job is exclusive

  • can not be triggered, please check the value of timeoutStrategy and isExclusive

问题原因

  • 互斥任务正在执行中,不允许再次触发。

  • 互斥任务已经超时且未进行重置,则不允许再次触发。

解决方案

查看调度记录:

  • 如果任务正在执行中,则等待执行完成后再次触发。

  • 如果有 触发超时 的执行记录,尝试将该任务的触发记录重置为 成功失败 状态以后再次触发该任务。

任务处在禁用状态

问题现象

任务配置了重试策略,但是执行失败后没有重试。

问题原因

仅当任务处于“启用”状态时重试策略才会生效,“禁用”时执行失败不会进行重试。

解决方案

  1. 登录 任务调度 控制台。

  2. 单击 任务配置,然后在任务列表中启用该任务。

任务触发时间间隔过短

问题现象

出现 the interval for tasks of type callback must takes more than 5 minutes 报错。

问题原因

对于以 Cron 表达式触发的 CALLBACK 类型的任务,两次触发的时间间隔必须大于 5 分钟。

解决方案

修改 Cron 表达式,使得定时任务的触发间隔时间大于 5 分钟,例如 1 0/5 * * ? 。有关 Cron 表达式的详细说明,参见 CRON 表达式详解

集群任务配置了拆分处理器,客户端也都在线,但触发失败

集群任务的通信方式设置成了单向 ONEWAY,导致触发不成功。

客户端任务执行失败

问题现象

控制面板显示执行失败。

问题原因

找不到客户端链接或客户端异常。

解决方案

根据执行失败的错误信息,查看客户端 logs/scheduler 目录下的 common-error.log 错误日志。

任务调度通过应用名未找到消息任务

问题原因

Antschedulercom.alipay.antscheduler.facade.IAntJobFacadegetAllApps 限制了查找方式。

解决方案

将 MS 升级到 2.26.0 及以上版本。

基于消息的定时任务无法定时或者手动触发

问题现象

出现报错:send msg error。

问题原因

客户端不在线。

解决方案

  1. 重启客户端。

  2. 登录 任务调度 控制台。

  3. 单击 任务配置,然后在任务列表中重新触发该任务。

任务调度任务创建失败

问题现象

创建任务时,页面显示报错,报错信息:任务名称已存在。

问题原因

可能曾经建立过相同名称的任务,删除回收到到回收站中。

解决方案

建议不要使用曾经使用过的任务名称,即使该任务已被删除,也不要使用。

为什么任务导出只支持全量操作?

目前仅 MS 2.28.4 版本支持选择任务方式导出,只支持全量导入,其余版本均只支持全量导出和导入。

任务调度触发失败

检查 home/admin/logs/scheduler 目录下的 common-error.log 错误日志,如果原因是线程被占满,可以扩大线程池的数量。