Wildfly增加线程数

Posted

技术标签:

【中文标题】Wildfly增加线程数【英文标题】:Wildfly increasing threads number 【发布时间】:2015-05-03 21:34:15 【问题描述】:

我有一个 Wildfly-8.0.0.Final 服务器在 Windows 机器上以独立模式运行。

为了配置 JVM 内存分配,我编辑了 $JBOSS_HOME\bin\standalone.conf.bat,添加了以下内容:

set "JAVA_OPTS=-Xms512M -Xmx2048M -XX:MaxPermSize=512M"

在控制台管理 > 运行时 > 平台 > JVM 我注意到内存还可以(一段时间后,它正在被释放),但是每个客户端连接的线程数都会增加。

对于其他服务器配置,我保留了默认值。

在服务器启动时,线程数是:live 60,daemon 20,但几个小时后我发现 live 400,daemon 360。我不是专家,但这似乎是一个错误。这是真的吗?如何限制线程数?

我在控制台管理配置文件 > 核心 > 线程中注意到“线程池”和“线程工厂”都是空的。

【问题讨论】:

升级到 8.2.0,在 8.1 中这方面有重大变化,在 8.2 中进一步修复 Wildfly 擅长为其线程命名,使用 jstack 可以知道线程来自哪里。 @ctomc 升级到 8.2.0 解决了我的问题! 【参考方案1】:

根据您提供的信息,几乎不可能知道发生了什么。 当您遇到线程问题时,您应该做的是分析您的应用程序。您可能有一个错误配置的线程池导致您不知道的问题(从 Quartz 到数据库)。

    IDE 方法

使用现代 IDE,您应该能够在调试模式下查看所有正在运行的线程。如果您找不到从 IDE 以调试模式启动应用程序的方法,您可以尝试使用 remote debugging。

    线程转储

JDK 有一个名为jstack 的非常好的镜头,您可以使用它来获取 Java 应用程序中所有线程的堆栈跟踪快照。

    专业剖析器

您可以尝试 JDK 的 VisualVM 或那里的众多付费配置文件之一。分析器可以为您提供有关线程的更多信息(它们何时创建、何时死亡、它们的状态如何变化......)

【讨论】:

【参考方案2】:

我猜你必须在启动脚本中设置以下参数:

-Dorg.jboss.server.bootstrap.maxThreads 

【讨论】:

并给它一个数字,4 似乎是一个不错的选择,可以在这里看到:developer.jboss.org/wiki/…

以上是关于Wildfly增加线程数的主要内容,如果未能解决你的问题,请参考以下文章

如何增加tomcat线程池中的线程数?

Tomcat设置最佳线程数总结

Tomcat设置最佳线程数总结

即使删除线程,线程数也会增加很多

Java线程项目奇怪的行为,同时增加线程数

如何增加linux中运行cppcheck进程的线程数