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增加线程数的主要内容,如果未能解决你的问题,请参考以下文章