Cha*_*tin 9 java multithreading tomcat quartz-scheduler java-ee
这是万圣节毕竟.
问题在于:我正在使用Quartz维护一些旧的J2EE代码,其中我的线程已经用完了. jconsole
告诉我,当它变成梨形时,只有不到60K的线程,其中大约100(!!)实际上正在运行.直觉和一些谷歌搜索(也见这里)表明正在发生的事情(我打赌Quartz)正在创建永远不会被清理的非托管线程.
几个子问题:
它有一个工具,我可以轻松地跟踪线程创建,所以我可以肯定问题是真的Quartz?
我发现的关于类似问题的大多数内容都引用了Weblogic; 这是Tomcat的假导演吗?
有人有一个已知的解决方案吗?
自从我做了J2EE以来已经有好几年了,所以如果这是可以简单解决的问题我也不会感到惊讶.
更新:它明显增加线程无限制,请参阅jconsole的这个图.
尝试提高org.quartz.simpl.SimpleThreadPool
调试的日志记录级别以获取更多信息。
如果这不起作用,请尝试日志侦听器。Quartz 有一个 JobListener 接口,在它的教程中指定了该接口。侦听器可以帮助您跟踪作业执行情况。也许工作只是没有完成并陷入僵局。
配置org.quartz.threadPool.threadCount
以停止线程耗尽。
更新:
另外,您可能想要进行线程转储并查看线程统计信息。Visual VM有一个名为 TDA 的插件,或者您可以直接使用Thread Dump 分析器。
为了以防万一,请检查quartz 版本,看看是否没有已知的错误。