解決三板斧
轉(zhuǎn)三板斧
1、病號(hào)是誰(shuí)?(WHO)
第一步:采用 top 命令,找出 CPU 占用最高的病號(hào) PID ;
第二步:通過 ps -ef | grep PID 查看病號(hào)對(duì)應(yīng)的真實(shí)身份。
2、病號(hào)哪里出了問題?(WHERE)
第一步:采用 jstack -l ?PID >> PID.log ?獲取病號(hào)的各器官信息的病歷單;
第二步:采用 top -Hp PID 拿到占用 CPU 最高的器官昵稱 PID ;
ps:注意該命令只能在linux中使用,而在macOS上不能使用。因?yàn)閘inux將線程作為輕量級(jí)進(jìn)程也分配了pid,而macOS并沒有這么處理。
如果通過上述命令我們發(fā)現(xiàn)進(jìn)程中的某個(gè)線程指標(biāo)不正常,想重點(diǎn)關(guān)注,這時(shí)需要將線程的pid通過下面命令轉(zhuǎn)化為十六進(jìn)進(jìn)制,方便在線程快照信息中查找。
第三步:采用 printf "%x\n" PID ?根據(jù)器官昵稱 PID 的拿到器官真實(shí)身份 TID ;
第四步:采用 grep TID -A20 pid.log 根據(jù) TID 去病歷單中匹配,確定是哪出了問題。
3、捉得病根、便可拿出醫(yī)藥箱,對(duì)癥下藥啦。(HOW)