1. 问题描述

系统有多个定时任务,其中一个定时任务需要去FTP上下载文件并且解析文件,其他的定时任务有将更新数据推送到其他节点。现场运维反馈在某一段时间内没有更新数据,也就是没有执行到定时任务。

2. 问题解决

  1. 首先看日志,明确下是否是真的定时任务不执行了,还是说执行了但是有问题。

发现日志并没有打印出关于定时任务的启动日志,说明定时任务没有启动。

  1. 然后将运维进行执行jstack pid > a.txt 命令,将jvm中线程状态打印出来。

发现文件中有好几个线程状态都是blocked,在等待获取同一把锁,并且都指向同一类,然后去文件搜索这对应的锁,发现获得这把锁的线程在runnable。

  1. 定位到这把锁的执行方法中

这个执行方法是进行FTP connection操作,也就是进行socket连接,socket连接明确表明timeout的时间为0,也就是说会一直等待FTP服务器返回响应。

  1. 分析结果

线程只所以会blocked,是因为这个线程一直在获得锁不释放,导致线程一直堵塞下去,但是为什么同步数据其他的定时任务也不执行?

  1. 再次分析

采用的定时任务都是springboot自带的schedule类,默认都是单线程的,然后怀疑的态度去搜索scheule类相关配置,发现有一个配置类,给这个schedule配置了线程池。

    public void configureTasks(ScheduledTaskRegistrar taskRegistrar) {taskRegistrar.setScheduler(taskExecutor());}@Beanpublic Executor taskExecutor() {//  线程数量return Executors.newScheduledThreadPool(10);
}

结论

FTP服务器出现故障,导致访问FTP的定时任务一直堵塞住,然后定时任务采用线程池的方法,如果FTP的线程一直堵塞,线程池达到最大的线程数,那么其他的定时任务就不能启动了。

解决

给FTP请求设置超时时间。

现场问题:定时任务不执行相关推荐

  1. java一段时间后执行一块代码_java自带的ScheduledExecutorService定时任务正常执行一段时间后部分任务不执行...

    目前我有用java自带的ScheduledExecutorService线程任务做定时调度功能,我开启了足够多的线程数,比如开了300,实际上用到的只有50个. 我用的是newScheduledThr ...

  2. 预发环境与生产环境共享数据库时定时任务重复执行问题解决

    背景: 为保证预发环境的真实性,预发与生产环境往往共享数据库,在定时任务列表中,预发与生产环境都会从任务列表中获取定时任务,然后执行,这会导致定时任务会执行重复. 解决方法: 在job中增加一个环境变 ...

  3. 【Linux】23.ubuntu定时执行脚本/etc/crontab 和 定时任务不执行的解决办法

    ubuntu定时执行脚本/etc/crontab 和 定时任务不执行的解决办法 定时任务失效的问题: 如果发现/etc/crontab中的定时任务没执行,可以使用/etc/init.d/cron st ...

  4. CentOS crontab定时任务不执行的解决

    crontab 配置文件 SHELL=/bin/bash PATH=/sbin:/bin:/usr/sbin:/usr/bin MAILTO=root HOME=/ # .- minute (0 59 ...

  5. 集群部署中解决定时任务重复执行的问题-redis分布式锁应用

    背景描述 有小伙伴私信我,关于存在定时任务的项目在集群环境下部署如何解决重复执行的问题,PS:定时任务没有单独拆分. 概述:之前的项目都是单机器部署,所以定时任务不会重复消费,只会执行一次.而在集群环 ...

  6. Linux crontab 定时任务没执行,没收到错误信息邮件

    crond 定时任务 没执行,简单的打印日期,reboot 命令 等也没执行成功(语法确保没错).捣鼓一整算是有些进展. centos7 不过这个好像没啥问题吧.. 分割线-------------- ...

  7. linux怎么查看定时任务有没有运行,怎么看crontab定时任务是否执行

    定时执行操作命令,每一个用户拥有自己的crontab,那么大家知道怎么看crontab定时任务是否执行呢?接下来大家跟着学习啦小编一起来了解一下的看crontab定时任务是否执行解决方法吧. 看cro ...

  8. crontab mysql 不执行_crontab定时任务不执行

    系统是centos,发现crontab定时任务不执行 登录系统用手工执行脚本就可以 其它如crontab配置文件没有对用户做限制, 脚本权限也赋予执行,用root账户执行,但是最后还是不行, 请各位大 ...

  9. shedlock 重启系统报错问题_闲谈ShedLock解决分布式定时任务重复执行问题

    多个服务实例代码是一样,定时任务自然也一样.负载均衡在执行的时候,到达某个节点以后,定时任务都会执行,可以控制的思路就是使用队列的方式去操作. 现有思路有以下两种:将负载均衡的定时任务,从原先的直接执 ...

最新文章

  1. errors'MessageBoxA' : function does not take 1 parameter
  2. golang 切片 接口_一日看尽golang高级语法之slice
  3. MyBatisPlus插件扩展_OptimisticLockerInterceptor乐观锁插件的使用
  4. 【非凡程序员】 OC第一节课 (指针浅析)
  5. Angular compiler报的一个错误消息:Component XX is not part of any NgModule
  6. SLS多云日志采集、处理及分析
  7. 辩论计算机未来不能取代书本的问题,电脑不能取代书本辩论会材料.doc
  8. 字符串、数值 等类型的相互 安全转换
  9. 关于数据挖掘(协同过滤、关联推荐、聚类分类)一些资料(转)
  10. Cgroups控制cpu,内存,io示例
  11. SylixOS allwinner h6 链接脚本
  12. 高德地图语音助手实测:驾车导航基本实现动口不动手
  13. 移动咪咕盒子10款型号刷机固件汇总分享(附刷机教程)
  14. 数据分析_excel
  15. 状态机编程思想及实例
  16. Excel技巧—几个快速填充公式更高效的小技巧
  17. android 微信浮窗实现_转载:Android悬浮窗的实现
  18. QQ会员首页HTML+CSS
  19. vue图片时间轴滑动_在vue2.0 中制作时间轴拖动组件
  20. 如何下载建外街道卫星地图高清版大图

热门文章

  1. 教室实验室预约管理系统设计与实现
  2. 基于ASP.NET的企业进销存管理系统的设计和实现(APP+网页)
  3. Java web对试卷进行单选多选答题进行打分_中考地理:简答题丢分严重,25个标准答题模板,记熟掌握拿满分!...
  4. 如何装android -x86 8.0,VM安装安卓X86问题集锦(安装x86,GRUB引导,跳过console界面)...
  5. 旗杆的安装方法和流程
  6. 给出一个大于或等于3的正整数,判断它是不是一个素数
  7. JDBC基础的增删改查方法封装
  8. TS16949 全过程咨询流程(转载)
  9. 自动化测试的前沿技术分享
  10. JS中定义全局配置文件