【发布时间】:2016-03-22 21:42:20
【问题描述】:
我们在 JDK8_74/Wildfly 9.0.1.Final 中偶然发现了一些奇怪的(当前不可重现的)行为。在解析后请求的参数后,工作线程开始无限循环进入本机方法PollArrayWrapper.poll0(long, int, long)。该线程在一个内核上消耗 100% 的 CPU 负载。
mServlet.java:468 io.undertow.servlet.spec.HttpServletRequestImpl.getParameterValues(String)
HttpServletRequestImpl.java:679 io.undertow.servlet.spec.HttpServletRequestImpl.parseFormData()
...
SelectorImpl.java:86 sun.nio.ch.PollSelectorImpl.doSelect(long)
PollSelectorImpl.java:87 sun.nio.ch.PollArrayWrapper.poll(int, int, long)
PollArrayWrapper.java:115 sun.nio.ch.PollArrayWrapper.poll0(long, int, long)
有人看过吗?自 2005 年以来,它似乎在不同的项目中出现在不同的场合,并且多次被报告为 JDK 错误,并且这些错误已被标记为已修复。
有谁知道如何强制 Wildfly 在 poll0 方法上使用超时?
亲切的问候, 乔纳森
【问题讨论】:
-
这是使用https监听器的时候吗?
-
@ctomc 我们使用的是 http,而不是 https。
-
您的确切操作系统是什么?
-
@ctomc 操作系统是 SLES 11.4.23
-
这意味着 linux 内核 2.6.37 对吗?如果不是,请使用 uname -a 命令的输出更新帖子。 2.6 内核对此几乎没有已知问题。您是否有机会尝试在任何较新的内核上运行您的代码?首选 3.x,SLES 12 或任何其他使用较新内核的发行版。你用的JDK是oracle的还是openjdk的?