? ? ?開發(fā)中經(jīng)常有CPU尖刺報警,本文簡單介紹一種定位cpu飆升問題的方法始腾。
? ? ?Linux環(huán)境上州刽,輸入 top 命令,可以看到所有使用系統(tǒng)資源的情況浪箭。然后再按一下 1穗椅,就會顯示你服務(wù)器邏輯CPU的數(shù)量以及現(xiàn)在服務(wù)器CPU各個參數(shù)。其中 PID 是對應(yīng)的線程號 奶栖,找到占用CPU最高的的線程號后匹表,執(zhí)行下面的命令可以找到導(dǎo)致cpu高的線程號。
? ? top -H -p pid? ?或者執(zhí)行ps mp pid -o THREAD,tid? 可以查看線程占用CPU 的情況宣鄙。
? ? 最后使用JVM自帶的jstack命令導(dǎo)出當(dāng)前所有線程的運行情況和線程當(dāng)前狀態(tài)袍镀,jstack工具可以用來獲得core文件的java stack和native stack的信息,從而可以輕松地知道java程序是如何崩潰和在程序何處發(fā)生問題jstack tid > error.log
? ? 如果需要對cpu的使用情況主動監(jiān)控的話 可以使用指令 vmstat 2 1查看cpu 的各種參數(shù)冻晤。