cpu
cpu占用率高,一方面可能是因?yàn)椋绦蚴怯?jì)算密集性的。比如大量的請(qǐng)求過來,每個(gè)請(qǐng)求有大量的正則計(jì)算,很計(jì)算的關(guān)聯(lián)表排序。
還有代碼中有死循環(huán)會(huì)導(dǎo)致cpu負(fù)載飆高。
定位問題代碼位置的步驟
- cpu負(fù)載高,首先會(huì)通過監(jiān)控告知到我們
- top 指令查處cpu占用率高的進(jìn)程pid
- ps -ef | grep pid 看出來是什么服務(wù)
- ps -Hp pid -o THREAD,tid,time 查看該進(jìn)程下哪個(gè)線程占用率高
這步是為了在日志中過濾,線程參數(shù)tid - printf "%x\n" 轉(zhuǎn)換tid為16進(jìn)制(dump日志里邊線程號(hào)是16進(jìn)制)
- jstack pid | grep tid -A 30 用jvm的線程堆棧信息指令dump日志,在日志中過濾此線程id的相關(guān)日志,定位代碼位置。
參考引用:http://www.blogjava.net/hankchen/archive/2012/05/09/377735.html