linux的CPU使用率達(dá)到100%的快速定位過(guò)程
問(wèn)題現(xiàn)象
Linux服務(wù)器(操作系統(tǒng)版本是centos7.9)上面部署了若干Java站點(diǎn)服務(wù),突然收到運(yùn)維的CPU異常g告警,到了影響業(yè)務(wù)的情況發(fā)生,經(jīng)初步排查,未出現(xiàn)異常進(jìn)程,排除挖礦病毒的原因。
排查思路
(1)找到最耗CPU的進(jìn)程;
(2)找到最耗CPU的線程;
(3)查看堆棧,定位線程在干嘛,定位對(duì)應(yīng)代碼;
排查步驟
1.找到最耗CPU的進(jìn)程
方法:使用top命令
- 執(zhí)行top -c ,顯示進(jìn)程運(yùn)行信息列表
- 鍵入P (大寫p),進(jìn)程按照CPU使用率排序

2.找到最耗CPU的線程
方法:使用top工具
- top -Hp ,顯示一個(gè)進(jìn)程的線程運(yùn)行信息列表
- 鍵入P (大寫p),線程按照CPU使用率排序
- top -Hp 30365

3.查看堆棧,定位線程在干嘛,定位對(duì)應(yīng)代碼
- 首先,將線程PID轉(zhuǎn)化為16進(jìn)制。
- 工具:printf
- 方法:printf "%x\n" 6080

如上圖,6080對(duì)應(yīng)的16進(jìn)制是0x17c0
之所以要轉(zhuǎn)化為16進(jìn)制,是因?yàn)槎褩@?,線程id是用16進(jìn)制表示的
4.查看堆棧,找到線程在干嘛
- 工具:jstack
- 方法:jstack 30365 | grep '0x17c0' -C5 --color
- 最后,根據(jù)堆棧里的信息,找到對(duì)應(yīng)的代碼.
總結(jié)
以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。
相關(guān)文章
Linux使用publick?key登錄過(guò)程(無(wú)密碼登錄)
這篇文章主要介紹了Linux使用publick?key登錄過(guò)程(無(wú)密碼登錄),具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2026-03-03
Linux系統(tǒng)管理常用命令及參數(shù)說(shuō)明中文版
這篇文章主要介紹了Linux系統(tǒng)管理常用命令及其參數(shù)的中文版說(shuō)明,方便了英文不好的同學(xué)學(xué)習(xí)Linux,需要的朋友可以參考下2014-03-03
CentOS7.4下MySQL5.7.28二進(jìn)制方式安裝的方法步驟
這篇文章主要介紹了CentOS7.4下MySQL5.7.28二進(jìn)制方式安裝的方法步驟,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2019-11-11
Centos7系統(tǒng)下搭建.NET Core2.0+Nginx+Supervisor環(huán)境
本文為大家分享了如何在Centos7系統(tǒng)下搭建.NET Core2.0+Nginx+Supervisor環(huán)境,部署方法非常詳細(xì)2018-10-10

