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