首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >僵尸线程吞噬我的大脑(J2EE,Tomcat,Hibernate,Quartz)

僵尸线程吞噬我的大脑(J2EE,Tomcat,Hibernate,Quartz)
EN

Stack Overflow用户
提问于 2009-10-30 16:21:59
回答 2查看 2K关注 0票数 9

毕竟这是万圣节。

问题是:我正在使用Quartz维护一些旧的J2EE代码,在这些代码中,线程都用完了。jconsole告诉我,当它变成梨形时,只有不足60K的线程,其中大约有100个(!!)实际上是在逃跑。直觉和一些googling (也请参阅这里)表明正在发生的事情(我打赌Quartz)正在创建从未被清理过的非托管线程。

若干分问题:

  1. 它有一个工具,我可以很容易地使用它来跟踪线程创建,所以我可以确定这个问题真的是Quartz吗?
  2. 大多数关于类似问题的发现都引用了Weblogic;对于Tomcat来说,这是一个错误的线索吗?
  3. 有谁知道解决办法吗?

我已经多年没有做J2EE了,所以如果这件事可以简单地解决的话,我不会感到太惊讶。

更新:它显然在增加没有绑定的线程,请从j控制台查看此图。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2009-10-30 16:41:02

  • 尝试增加org.quartz.simpl.SimpleThreadPool的日志记录级别以进行调试以获得更多信息。
  • 如果这不起作用,请尝试日志记录侦听器。石英有一个JobListener接口,这是在其教程中指定的。侦听器可以帮助您跟踪作业执行情况。也许工作还没结束就陷入僵局了。
  • 配置org.quartz.threadPool.threadCount以停止线程的耗尽。

更新:

  • 另外,您可能需要接受一个线程转储,并查看线程状态。可视vm有一个名为TDA的插件,或者您可以直接使用线程转储分析器
  • 以防万一,检查石英版本,看看是否有已知的错误。
票数 4
EN

Stack Overflow用户

发布于 2009-10-30 17:21:21

你看过jvisualvm吗?它提供了一些更多的信息。

另外,获取堆栈跟踪以查看线程实际上在等待什么。你可能有一种阿哈感觉就在那里。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/1650857

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档