我们使用的是 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 仍然存在。
有没有其他方法可以防止远程处理“端点”任务线程增长?
侃侃无极
相关分类