CPU占用過高的分析思路
[toc]
先用top
命令找出CPU占用比最高的進程
比如我這里可以看到 etcd
redis-server
占用是比較高的。
ps -ef
進一步定位,得知是一個怎樣的后臺程序在占用CPU
我這里就找到了這個redis 的進程,進程ID為11089
定位到具體的線程或代碼
ps -mp 進程ID -o THREAD,tid,time
我這個Demo的例子里面可以看到 redis-server
這個進程下面的線程,其中 11089 這個線程占用最多。
將線程ID轉為16進制格式
上一個步驟我們找到了這個線程的ID為 11089 但是這是十進制的,所以我們要轉化為16進制:為0x2b51。
jstack 進程ID | grep tid(16進制線程ID) -A60
參考陽哥視頻