我們服務(wù)器上的的服務(wù)和項(xiàng)目大部分都是JAVA的,現(xiàn)在來(lái)講講,這種服務(wù)器cpu100%如何定位。
- 先使用top命令找到cpu最高的進(jìn)程。比如找到cpu最高的進(jìn)程id,簡(jiǎn)稱top_pid。
- 使用top -Hp top_pid找到cpu最多的線程,這里記住最高的幾個(gè)線程id,thread_id。
- 現(xiàn)在我們將這些線程id轉(zhuǎn)化成16進(jìn)制,因?yàn)閖ava堆棧里的線程id都是16進(jìn)制的,轉(zhuǎn)化后方便我們定位printf “%xn” thread_id
- jstack top_pid,打印出堆棧,然后用3步驟里找到的十六進(jìn)制線程id,找到對(duì)應(yīng)的堆棧
上面的方法是可以幫我們定位出問(wèn)題,但是4個(gè)步驟還是太麻煩,我們也可以使用一些比較方便工具簡(jiǎn)化定位。
- 使用工具show-busy-java-threads.sh
show-busy-java-threads.sh(https://github.com/oldratlee/useful-scripts)
- 使用arthas
https://alibaba.github.io/arthas/index.html






