2016-05-12 65 views
0

我们有一个Wildfly实例,它在36核心服务器上运行一个简单的java rest应用程序。该应用程序没有在后台运行的默认作业,它只是响应用户请求(每天< 500)。在Wildfly上分析Java应用程序的远程调试堆栈

我们的管理员今天晚上注意到一个奇怪的行为。从上午2点开始,野蛮实例显然使用了服务器的全部容量。那时没有用户可以使用该应用程序。在前一天晚上的最后一次用户操作和今天上午的第一次用户操作之间没有日志文件可用。

我已经在eclipse中启动了远程调试器,并且想要了解Wildfly开始的所有线程实际上都做了什么?

  1. Thread[MSC service thread 1-xx](Running) 68个条目。这些线程是什么?他们能否影响性能/容量覆盖率?我可以限制这些线程的数量吗?我应该这样做吗?
  2. Deamon Thread [weld-worker-xx](Running) 25个条目。
  3. Thread[default task-x](Running) 8项。这些可能是实际的用户任务?
  4. Thread[XNIO-1 I/O-x](Running) 2个条目。输入/输出到数据库?或者任何文件,例如记录e.q.?
  5. Daemon Thread [Transaction Reaper](Running)
  6. Deamon Thread [Transaction Reaper Worker 0](Running)
  7. Thread [Periodic Recovery](Running)
  8. 很多<not responding>。这实际上意味着什么?线程正在运行,但我不允许看一下?
+0

这是一个相当广泛的问题,但我怀疑你的问题是与没有响应的线程。我可以想象他们是那些正在努力研究和吃掉你的CPU的人。 – Kayaman

+0

您可能还想发布'kill -3 '让Wildfly将线程转储打印到标准输出(应该被重定向到某个文件)。保存转储以供日后分析。 – Kayaman

+0

你好卡亚曼,谢谢你的提示。重启后''无响应>'线程消失并且性能得到了合理的改善。我们将在下次出现问题时尝试打印线程转储。我仍然对所有其他线程堆栈条目的解释感兴趣,只是为了了解正在发生的事情。所以任何解释都会很棒! –

回答

0

在一般情况下,你可能在wildfly看看线程子系统:

https://docs.jboss.org/author/display/WFLY8/Threads+subsystem+configuration

这种性能优化指南也是非常有用的理解线程和线程池:

http://www.mastertheboss.com/jboss-server/jboss-performance/wildfly-performance-tuning

你提到的线程类型是,AFAICT:

MSC线程是模块化服务容器线程。 https://issues.jboss.org/browse/MSC-144(-Dorg.jboss.server.bootstrap.maxThreads)

默认线程:在由线程子系统完成各项任务定义的池的I/O线程他们可以通过配置此限制。

XNIO线程:Undertow依靠XNIO API使用bounded-queue-thread-pool创建工作线程。 https://developer.jboss.org/thread/241230?start=0&tstart=0 - 一些很好的性能优化技巧在这里:http://www.mastertheboss.com/jboss-server/jboss-performance/wildfly-performance-tuning

焊接工作线程是CDI实现使用线程,可配置为这样:http://docs.jboss.org/weld/reference/latest/en-US/html/configure.html#_thread_pool_configuration。看起来焊缝为每个部署保留一个线程池(https://issues.jboss.org/browse/WFLY-4653),并且可以独立从WF9开始配置。XML

交易收割机和工人负责监测JTA事务和超时等http://www.mastertheboss.com/jboss-server/jboss-configuration/configuring-transactions-jta-using-jboss-as7-wildflyhttp://www.hhutzler.de/blog/a-deeper-dive-into-transaction-timeouts-with-jee7wildfly-and-oracle-rac/

恢复沉艳军,丁红瑞线程:系统崩溃后恢复定期线程应该使用XA恢复和XA承诺这承诺交易没有任何用户干预。 http://www.hhutzler.de/blog/a-deep-dive-into-2-phase-commit-with-wildfly-and-oracle-rac/

相关问题