解決三板斧
轉(zhuǎn)三板斧
1、病號是誰拳芙?(WHO)
第一步:采用 top 命令地消,找出 CPU 占用最高的病號 PID ;
第二步:通過 ps -ef | grep PID 查看病號對應(yīng)的真實(shí)身份。
2弟劲、病號哪里出了問題?(WHERE)
第一步:采用 jstack -l ?PID >> PID.log ?獲取病號的各器官信息的病歷單姥芥;
第二步:采用 top -Hp PID 拿到占用 CPU 最高的器官昵稱 PID ;
ps:注意該命令只能在linux中使用兔乞,而在macOS上不能使用。因?yàn)閘inux將線程作為輕量級進(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ī)藥箱豺总,對癥下藥啦。(HOW)