gpt4 book ai didi

java - 僵尸线程正在吞噬我的大脑(J2EE、Tomcat、Hibernate、Quartz)

转载 作者:塔克拉玛干 更新时间:2023-11-03 03:23:58 28 4
gpt4 key购买 nike

毕竟万圣节。

这就是问题所在:我正在使用 Quartz 维护一些老式的 J2EE 代码,其中线程用完了。 jconsole 告诉我,当它变成梨形时,只有不到 60K 个线程,其中大约 100 个 (!!) 实际上正在运行。直觉和一些谷歌搜索(另见 here)表明正在发生的事情(我打赌 Quartz)正在创建永远不会被清理的非托管线程。

几个子问题:

  1. 是否有我可以轻松使用的工具来跟踪线程创建,因此我可以确定问题真的出在 Quartz 上?

  2. 我发现的关于类似问题的大部分内容都引用了 Weblogic;这是 Tomcat 的错误线索吗?

  3. 有没有人有已知的解决方案?

我已经有好几年没接触 J2EE 了,所以如果这是可以简单解决的问题,我不会太惊讶。

更新:它显然是在无限制地增加线程,请参阅 jconsole 中的此图。

They're dead, Jim

最佳答案

  • 尝试提高 org.quartz.simpl.SimpleThreadPool 的日志记录级别以进行调试以获取更多信息。

  • 如果这不起作用,请尝试使用日志记录监听器。 Quartz 有一个 JobListener 接口(interface),在其 tutorial 中指定。 .监听器可以帮助您跟踪作业执行情况。也许工作没有完成并陷入僵局。

  • 配置 org.quartz.threadPool.threadCount 以停止用完线程。

更新:

  • 另外,您可能想要获取线程转储并查看线程统计信息。 visual vm有一个叫做 TDA 的插件,或者你可以使用 Thread dump analyzer直接。

  • 以防万一,检查一下quartz版本,看看有没有已知的bug。

关于java - 僵尸线程正在吞噬我的大脑(J2EE、Tomcat、Hibernate、Quartz),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1650857/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com