Wildfly 10.1.0 Final Remoting 端点任务线程不断增长

我们使用的是 Wildfly 10.1.0 Final。

我们遇到了由于线程不断增长导致的 OutOfMemoryError。

在检查了线程转储之后。

我们发现有数千个远程处理“端点”任务-N线程。

什么是远程处理“端点”任务 N线程?

它们是由工作远程创建的吗?

重启服务器后,发现一开始只有16个线程:

远程处理“端点”任务 1 ~ 远程处理“端点”任务 16。

服务器运行数天或数月后,可能会有成百上千的 Remoting 线程:

下面列出了线程转储的片段。

在这个线程转储中,有几个不同编号的“远程处理“端点”任务 11”

其他任务(例如任务 1 到任务 16)也是如此。

所有这些线程除了等待什么都不做。

我发现“远程处理”端点任务“线程是由“xnio”创建的。我发现 xnio 有一个问题与我们的场景非常相似:

https://issues.jboss.org/browse/XNIO-285

它说这个问题已在“xnio 3.6.0.Beta1”中修复。不幸的是,Wildfly 10.1.0 使用的是 xnio 3.4.0。当我尝试升级到 xnio 3.6.5 时,我得到了 org/wildfly/common/context/Contextual 的 java.lang.NoClassDefFoundError。升级包含类“org/wildfly/common/context/Contextual”的 wildfly-common-1.4.0.Final.jar 后,NoClassDefFoundError 仍然存在。

有没有其他方法可以防止远程处理“端点”任务线程增长?


天涯尽头无女友
浏览 121回答 2
2回答

侃侃无极

我发现远程处理“端点”任务线程是由javax.management.remote.JMXConnector创建的。我们打开了一些 javax.management.remote.JMXConnector 来访问其他服务器中的 MBean。但没有关闭它们。关闭这些 JMXConnector 实例后,线程就消失了。javax.management.remote.JMXConnector 使用 xnio 与 MBean 通信。它在打开时会创建一个 XnioWorker,而 XnioWorker 会创建Remoting “端点”任务线程。所以问题不是由EJB引起的。
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Java