1、使用命令查看
top命令
2、找到佔cpu高的pid
使用jstack pid >xxx.txt
3、然後shift+h找到進程號
找到進程號後查看他的pid是多少
4、jstack 輸出的日誌中nid(十六進制)=pid(十進制)
查看對應pid的代碼具體在哪一行
ps:將39(十進制)轉換爲十六進制
printf "%x \n" 39
定位pid找到報錯位置
分析:BLOCKED 因線程阻塞引起的 具體位置爲
at javax.xml.bind.ContextFinder.newInstance(ContextFinder.java:171)
at javax.xml.bind.ContextFinder.newInstance(ContextFinder.java:131)
at javax.xml.bind.ContextFinder.find(ContextFinder.java:335)
at javax.xml.bind.JAXBContext.newInstance(JAXBContext.java:431)
at org.apache.cxf.endpoint.dynamic.DynamicClientFactory.createClient(DynamicClientFactory.java:390)
at org.apache.cxf.endpoint.dynamic.DynamicClientFactory.createClient(DynamicClientFactory.java:235)
at org.apache.cxf.endpoint.dynamic.DynamicClientFactory.createClient(DynamicClientFactory.java:228)
at org.apache.cxf.endpoint.dynamic.DynamicClientFactory.createClient(DynamicClientFactory.java:183)
創建客戶端時候可能太慢阻塞了