# 定时任务没有执行或者执行错误 排查步骤(从上往下进行排查): 1. xxl-job是否启动成功 2. platform配置的xxl-job地址是否正确 3. platform服务的xxl-job端口是否开放 4. mall4j-bbc项目中的执行器名称与xxl-job中的执行器名称是否一致 5. xxl-job执行器中是否有注册的平台端服务 6. docker容器网络问题 ## 一、xxl-job是否启动成功 xxl-job后台管理页面的访问地址: http://ip:8080/xxl-job-admin 访问 `xxl-job` 的后台管理页面=,如果能正常访问,说明 `xxl-job` 启动成功 访问失败且使用容器部署的,可以查看容器日志,一般是数据库配置错误导致xxl-job无法启动, 更改[docker-compose.yaml](../linux环境(生产环境搭建)/mall4j-shop/docker-compose.yaml)文件中的xxl-job数据库配置后,重启容器即可 ``` 容器日志查看命令 docker logs -f mall4j-job ``` ## 二、platform配置的xxl-job地址是否正确 注:如果使用我们提供的部署模板[mall4j-shop](../linux环境(生产环境搭建)/mall4j-shop)在**一台服务器**进行部署,且没有其他改动的,可以忽略这一步骤 访问 `xxl-job` 的后台管理页面,如果能正常访问,说明 `xxl-job` 启动成功,此时需要检查 `platform` 服务的的xxl-job地址配置是否正确 ![img.png](../img/一些常见问题/xxl-job连接-01.png) ## 三、platform服务的xxl-job端口是否开放 注:如果使用我们提供的部署模板[mall4j-shop](../linux环境(生产环境搭建)/mall4j-shop)在**一台服务器**进行部署,且没有其他改动的,可以忽略这一步骤 1. `xxl-job`在`platfomr服务`中有一个执行任务的端口,默认是platform服务端口 + 1000, > 例:8088 + 1000 = 9088 > **8088**: platform服务端口, 不同环境端口号不同 > **9088**: paltform的xxl-job端口, 根据platform服务端口改变而改变 2. 所以当platform和xxl-job不在同一台服务器时,需要在platform服务所在服务器上开放8088和9088端口,才能正常使用xxl-job 3. 如果是自行搭建的容器部署,那么platform的部署容器也要映射上面的两个端口到服务器 ![img.png](../img/一些常见问题/xxl-job连接-03.png) ## 四、mall4j-bbc项目中的执行器名称与xxl-job中的执行器名称是否一致 注: 如果没有修改过执行器名称,那么可以忽略这一步骤 1. `mall4j-bbc` 项目的XxlJobConfig配置类中配置了执行器的AppName 2. `xxl-job` 后台管理页面的执行器管理中执行器的AppName 比较以上两处的AppName是否一致,如果不一致,那么请修改一致 ![img.png](../img/一些常见问题/xxl-job连接-04.png) ## 五、xxl-job执行器中是否有注册的平台端服务 #### 执行器建议使用自动注册,手动注册的端口很多人都填写错误了,导致执行定时任务失败 注意: 排查执行器注册问题时,请务必保证执行器中连接的platform服务只有一个 如果有`多个platform服务`注册到了执行器,那么请保证这些注册的platform服务都按上面步骤排查过,服务不存在上述问题 而且执行定时任务不是执行器中注册的所有服务中都执行一遍,而是选择其中一个注册的platform服务去执行这个任务 ### 自动注册 如果platform服务已经启动并且执行器中配置的是自动注册,OnLine 机器地址中没有显示注册的服务,那么请重新检查以上步骤,并重启platform服务 ![img.png](../img/一些常见问题/xxl-job连接-02.png) ### 手动注册 当自动注册的机器地址不是platform实际地址时,可以用手动注册的方式 接口地址配置格式: http://paltform服务ip:platform服务的xxl-job端口 例: platform接口ip为: 192.168.1.4 platform端口为 : 8088 platform服务的xxl-job端口为: 9088(8088 + 1000 = 9088) 实际为: http://192.168.1.4:9088 ![img.png](../img/一些常见问题/xxl-job连接-05.png) ## 六、docker容器网络问题 注:如果使用我们提供的部署模板[mall4j-shop](../linux环境(生产环境搭建)/mall4j-shop)在**一台服务器**进行部署,且没有其他改动的,可以忽略这一步骤 ### 情况一:platform服务和xxl-job部署在同一台服务器 1. 如果`platform服务`配置文件中的`xxl-job地址`格式为: http://xxl-job容器名称:8080/xxl-job-admin 解决方法: 配置为同一个网桥 ### 情况二:platform服务和xxl-job部署在不同的服务器 `platform服务`和`xxl-job`部署在不同服务器时,如果不熟悉容器的网络模式,请不要给容器配置网桥, 直接将容器**端口映射到服务器**或者使用**host模式** platform服务配置xxl-job地址时,使用服务器ip:端口, 不要使用容器名称进行配置