我们有一个Wildfly实例,它在36核心服务器上运行一个简单的java rest应用程序。该应用程序没有在后台运行的默认作业,它只是响应用户请求(每天< 500)。在Wildfly上分析Java应用程序的远程调试堆栈
我们的管理员今天晚上注意到一个奇怪的行为。从上午2点开始,野蛮实例显然使用了服务器的全部容量。那时没有用户可以使用该应用程序。在前一天晚上的最后一次用户操作和今天上午的第一次用户操作之间没有日志文件可用。
我已经在eclipse中启动了远程调试器,并且想要了解Wildfly开始的所有线程实际上都做了什么?
Thread[MSC service thread 1-xx](Running)
68个条目。这些线程是什么?他们能否影响性能/容量覆盖率?我可以限制这些线程的数量吗?我应该这样做吗?Deamon Thread [weld-worker-xx](Running)
25个条目。Thread[default task-x](Running)
8项。这些可能是实际的用户任务?Thread[XNIO-1 I/O-x](Running)
2个条目。输入/输出到数据库?或者任何文件,例如记录e.q.?Daemon Thread [Transaction Reaper](Running)
Deamon Thread [Transaction Reaper Worker 0](Running)
Thread [Periodic Recovery](Running)
- 很多
<not responding>
。这实际上意味着什么?线程正在运行,但我不允许看一下?
这是一个相当广泛的问题,但我怀疑你的问题是与没有响应的线程。我可以想象他们是那些正在努力研究和吃掉你的CPU的人。 – Kayaman
您可能还想发布'kill -3'让Wildfly将线程转储打印到标准输出(应该被重定向到某个文件)。保存转储以供日后分析。 –
Kayaman
你好卡亚曼,谢谢你的提示。重启后''无响应>'线程消失并且性能得到了合理的改善。我们将在下次出现问题时尝试打印线程转储。我仍然对所有其他线程堆栈条目的解释感兴趣,只是为了了解正在发生的事情。所以任何解释都会很棒! –