Tomcat 8.5上的JSSE客户端轮询器的高CPU负载

时间:2016-08-11 12:04:38

标签: java tomcat cpu-usage

我在Windows Server 2008R2和Java 1.8.0_92上运行Tomcat 8.5.3。 这个过程消耗了大量的CPU(4个CPU占50%左右)。

JTop显示,到目前为止,两个最常用的线程是https-jsse-nio-443-ClientPoller-0和https-jsse-nio-443-ClientPoller-1。

线程主要是在四个堆栈跟踪上循环:

csvData.Rows.Add(Convert.ToString(rowData[0]),
                 Convert.ToInt32(rowData[1]),
                 Convert.ToDateTime(rowData[2]),
                 Convert.ToString(rowData[3]));

sun.nio.ch.WindowsSelectorImpl$SubSelector.poll0(Native Method)
sun.nio.ch.WindowsSelectorImpl$SubSelector.poll(WindowsSelectorImpl.java:296)
sun.nio.ch.WindowsSelectorImpl$SubSelector.access$400(WindowsSelectorImpl.java:278)
sun.nio.ch.WindowsSelectorImpl.doSelect(WindowsSelectorImpl.java:159)
sun.nio.ch.SelectorImpl.lockAndDoSelect(SelectorImpl.java:86)
   - locked sun.nio.ch.Util$2@2a3e6629
   - locked java.util.Collections$UnmodifiableSet@7cdb1cd3
   - locked sun.nio.ch.WindowsSelectorImpl@13dc3a00
sun.nio.ch.SelectorImpl.select(SelectorImpl.java:97)
org.apache.tomcat.util.net.NioEndpoint$Poller.run(NioEndpoint.java:791)
java.lang.Thread.run(Thread.java:745)

sun.nio.ch.WindowsSelectorImpl$SubSelector.processFDSet(WindowsSelectorImpl.java:345)
sun.nio.ch.WindowsSelectorImpl$SubSelector.processSelectedKeys(WindowsSelectorImpl.java:315)
sun.nio.ch.WindowsSelectorImpl$SubSelector.access$2900(WindowsSelectorImpl.java:278)
sun.nio.ch.WindowsSelectorImpl.updateSelectedKeys(WindowsSelectorImpl.java:495)
sun.nio.ch.WindowsSelectorImpl.doSelect(WindowsSelectorImpl.java:172)
sun.nio.ch.SelectorImpl.lockAndDoSelect(SelectorImpl.java:86)
   - locked sun.nio.ch.Util$2@6f4350d0
   - locked java.util.Collections$UnmodifiableSet@36157c3f
   - locked sun.nio.ch.WindowsSelectorImpl@120cc3aa
sun.nio.ch.SelectorImpl.select(SelectorImpl.java:97)
org.apache.tomcat.util.net.NioEndpoint$Poller.run(NioEndpoint.java:791)
    java.lang.Thread.run(Thread.java:745)

sun.nio.ch.WindowsSelectorImpl.resetWakeupSocket0(Native Method)
sun.nio.ch.WindowsSelectorImpl.resetWakeupSocket(WindowsSelectorImpl.java:473)
   - locked java.lang.Object@450e5040
sun.nio.ch.WindowsSelectorImpl.doSelect(WindowsSelectorImpl.java:174)
sun.nio.ch.SelectorImpl.lockAndDoSelect(SelectorImpl.java:86)
   - locked sun.nio.ch.Util$2@6f4350d0
   - locked java.util.Collections$UnmodifiableSet@36157c3f
   - locked sun.nio.ch.WindowsSelectorImpl@120cc3aa
sun.nio.ch.SelectorImpl.select(SelectorImpl.java:97)
org.apache.tomcat.util.net.NioEndpoint$Poller.run(NioEndpoint.java:791)
java.lang.Thread.run(Thread.java:745)

有什么想法吗?

1 个答案:

答案 0 :(得分:3)

我在Tomcat 8.5.4 / Linux上遇到了类似的问题,我在轮询器线程上看到了非常高的CPU使用率(例如,https-jsse-nio-443-ClientPoller-0和1)。升级到8.5.5似乎解决了这个问题。

可能是这个错误:https://bz.apache.org/bugzilla/show_bug.cgi?id=60030