关于 quartz 1.6.1 的一个死等问题,导致任务不执行
2011-11-10 09:54
393 查看
使用 quartz 1.6.1 上出现了一个并发的问题。
由于有多个 Job 几乎同时并发,有时导致 Quartz 陷入死等状态,再也不执行任务了。
具体 bug 可见:http://jira.opensymphony.com/browse/QUARTZ-707?page=com.atlassian.jira.plugin.system.issuetabpanels%3Acomment-tabpanel
对应 src: http://svn.terracotta.org/fisheye/browse/Quartz/trunk/src/java/org/quartz/core/QuartzSchedulerThread.java?r=865
当任务大量并发,而执行的时间又不固定,可能等于或者超过两次任务执行的间隔时,容易出现这个问题。
原因是在 QuartzSchedulerThread 的 296 行有个 wait(time) 方法,其中的 time 有可能是 0,导致死等。
这已经在 quartz 1.6.2 以后的版本中修复了。
花了两天时间研究,终于发现了这个问题。
期间获得了一个方法,在linux系统下,若线程陷入困境,可用 kill -3 pid 的方法打印出线程的运行状态,
可以看出来各线程分别运行在什么位置。打印输出在标准输出中,比如 tomcat 线程就在 catalina.out 中。
由于有多个 Job 几乎同时并发,有时导致 Quartz 陷入死等状态,再也不执行任务了。
具体 bug 可见:http://jira.opensymphony.com/browse/QUARTZ-707?page=com.atlassian.jira.plugin.system.issuetabpanels%3Acomment-tabpanel
对应 src: http://svn.terracotta.org/fisheye/browse/Quartz/trunk/src/java/org/quartz/core/QuartzSchedulerThread.java?r=865
当任务大量并发,而执行的时间又不固定,可能等于或者超过两次任务执行的间隔时,容易出现这个问题。
原因是在 QuartzSchedulerThread 的 296 行有个 wait(time) 方法,其中的 time 有可能是 0,导致死等。
这已经在 quartz 1.6.2 以后的版本中修复了。
花了两天时间研究,终于发现了这个问题。
期间获得了一个方法,在linux系统下,若线程陷入困境,可用 kill -3 pid 的方法打印出线程的运行状态,
可以看出来各线程分别运行在什么位置。打印输出在标准输出中,比如 tomcat 线程就在 catalina.out 中。
相关文章推荐
- 关于 quartz 1.6.1 的一个死等问题,导致任务不执行
- 关于 quartz 1.6.1 的一个死等问题,导致任务不执行
- quartz在job间隔期间内,保证上一个任务执行完后,再去调度下一个任务(转),在多线程情况下的问题
- 【前端】关于在for循环里面执行异步脚本导致变量都采用最后的一个变量问题
- 关于spring的quartz(定时任务执行)问题,
- Quartz框架多个trigger任务执行出现漏执行的问题分析
- iOS 如何巧妙解决“一个任务需要等待另外一个任务完成后才可以执行”的问题
- Quartz任务不执行问题
- 开发中遇到的一个关于 SQL 语句执行的问题
- 关于通过UINavigationController push 过去到一个view controller而这个viewvontroller的viewwillappear不执行的问题
- sql server 关于表中只增标识问题 C# 实现自动化打开和关闭可执行文件(或 关闭停止与系统交互的可执行文件) ajaxfileupload插件上传图片功能,用MVC和aspx做后台各写了一个案例 将小写阿拉伯数字转换成大写的汉字, C# WinForm 中英文实现, 国际化实现的简单方法 ASP.NET Core 2 学习笔记(六)ASP.NET Core 2 学习笔记(三)
- 关于SQL执行计划错误导致临时表空间不足的问题
- Quartz框架多个trigger任务执行出现漏执行的问题分析--转
- 关于android webview 图片使用同一个src导致只加载第一张的问题
- Linux下shell脚本在crontab中一个周期执行不完,下周期任务被重复执行的问题解决
- 关于Linux下计划任务无法执行的问题
- [置顶] linux系统tomcat应为被定时任务脚本监控自动部署,服务器重启导致同一个tomcat出现很多进程,kill -9杀死又出现等一系列问题解决。
- NopCommerce 执行计划任务不同Services协调操作导致更新数据失败的问题!
- Quartz任务重复执行的问题
- 请教一个关于javascript执行sql语句的问题