Wildfly 9.0.1.Final中的参数读取超时

时间:2016-03-22 21:42:20

标签: java java-8 wildfly

我们在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 Bug,并且已经标记为已修复。

有没有人知道,如何强制Wildfly在poll0方法上使用超时?

亲切的问候, 乔纳森

1 个答案:

答案 0 :(得分:0)

正如ctomc暗示的那样,这个问题很可能是一个未解决的jdk-bug。我们的软件在不同的执行环境中运行,我们在SLES 11.4.23系统上见过这个问题。

一种可能的解决方案是采用hystrix风格的线程封装:将关键调用封装在Callable内,从而允许实现某种形式的看门狗/超时。