鍍金池/ 問答/Java  iOS  Linux/ window環(huán)境下,tomcat8.5,cpu占用100%

window環(huán)境下,tomcat8.5,cpu占用100%

tomcat開啟后過一段時間CPU占用高達(dá)60-70%。
百度了一下,很多人都說在JavaStack查看,下面是jstack里面占用高的幾個線程信息

"ajp-nio-8009-ClientPoller-1" #55 daemon prio=5 os_prio=0 tid=0x000000001e51d000 nid=0x93e4 runnable [0x0000000028ade000]
   java.lang.Thread.State: RUNNABLE
    at sun.nio.ch.WindowsSelectorImpl$SubSelector.poll0(Native Method)
    at sun.nio.ch.WindowsSelectorImpl$SubSelector.poll(WindowsSelectorImpl.java:296)
    at sun.nio.ch.WindowsSelectorImpl$SubSelector.access$400(WindowsSelectorImpl.java:278)
    at sun.nio.ch.WindowsSelectorImpl.doSelect(WindowsSelectorImpl.java:159)
    at sun.nio.ch.SelectorImpl.lockAndDoSelect(SelectorImpl.java:86)
    - locked <0x00000000934c46b0> (a sun.nio.ch.Util$2)
    - locked <0x00000000934c46a0> (a java.util.Collections$UnmodifiableSet)
    - locked <0x00000000934c4530> (a sun.nio.ch.WindowsSelectorImpl)
    at sun.nio.ch.SelectorImpl.select(SelectorImpl.java:97)
    at org.apache.tomcat.util.net.NioEndpoint$Poller.run(NioEndpoint.java:710)
    at java.lang.Thread.run(Thread.java:745)

   Locked ownable synchronizers:
    - None
"NioBlockingSelector.BlockPoller-2" #16 daemon prio=5 os_prio=0 tid=0x000000001bdbe000 nid=0xa124 runnable [0x000000001d8df000]
   java.lang.Thread.State: RUNNABLE
    at sun.nio.ch.WindowsSelectorImpl$SubSelector.poll0(Native Method)
    at sun.nio.ch.WindowsSelectorImpl$SubSelector.poll(WindowsSelectorImpl.java:296)
    at sun.nio.ch.WindowsSelectorImpl$SubSelector.access$400(WindowsSelectorImpl.java:278)
    at sun.nio.ch.WindowsSelectorImpl.doSelect(WindowsSelectorImpl.java:159)
    at sun.nio.ch.SelectorImpl.lockAndDoSelect(SelectorImpl.java:86)
    - locked <0x000000009192fb18> (a sun.nio.ch.Util$2)
    - locked <0x000000009192fb08> (a java.util.Collections$UnmodifiableSet)
    - locked <0x000000009192f9a8> (a sun.nio.ch.WindowsSelectorImpl)
    at sun.nio.ch.SelectorImpl.select(SelectorImpl.java:97)
    at org.apache.tomcat.util.net.NioBlockingSelector$BlockPoller.run(NioBlockingSelector.java:298)

   Locked ownable synchronizers:
    - None
別人找到的都是自己代碼里的類,通過分析異常信息,找出死鎖代碼,但是我這個 at 的都是jar包里的類,怎么分析啊,各位?
回答
編輯回答
九年囚

已解決,雖然不知道問題出在哪。之前已經(jīng)檢查過線程方面沒有問題,同樣的項(xiàng)目,我這里CPU100%,但是在同事那邊正常。懷疑是系統(tǒng)本身問題,但是由于業(yè)務(wù)繁忙,一直不敢重裝,知道前幾天才換成新系統(tǒng),問題解決。
原系統(tǒng):聯(lián)想-windows10家庭中文版
新系統(tǒng):聯(lián)想-windows10教育版

2017年11月6日 10:23
編輯回答
膽怯

沒遇到過, 提供幾個排查點(diǎn)吧. 看下java版本、多打印幾次線程堆棧, 確認(rèn)只是偶然進(jìn)入到了這個方法還是幾乎每次都在這個方法里, 重啟幾次, 確認(rèn)下是不是每次都是這些線程消耗CPU.

從你給出的線程來看, 可能是select方法比較消耗CPU, 可以查下是不是jdk或者tomcat的bug.
比如 java nio的一個嚴(yán)重BUG,導(dǎo)致cpu 100% 或者 JAVA NIO存在的問題

2018年4月2日 21:45