參考:https://phpmianshi.com/?id=112
CPU使用率查看
top
通過top -d 0.1可以縮短採樣時間。
-d:指定每兩次屏幕信息刷新之間的時間間隔。當然用戶可以使用s交互命令來改變之。
load average後面的三個數分別是1分鐘、5分鐘、15分鐘的負載情況。是每隔5秒鐘檢查一次活躍的進程數,然後按特定算法計算出的數值。如果這個數除以邏輯CPU的數量,結果高於5的時候就表明系統在超負荷運轉了。
查看多核CPU
top 輸入1就可以看到各個核心的CPU使用率 mpstat -P ALL sar -P ALL
當然你也可以用htop代替top,htop的詳細用法請自行搜索,這裏不多介紹了。
找到最耗CPU的進程
top -c PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND 3715 www 20 0 139m 18m 8256 S 2.0 0.5 0:05.22 php-fpm: pool www
-c:顯示整個命令行而不只是顯示命令名。
按大寫P 按照cpu使用率排序
假設最耗CPU的進程PID爲3715
找到最耗CPU的線程
top -Hp 3715 PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND 3715 www 20 0 138m 18m 8280 S 0.0 0.5 0:04.92 php-fpm
-p:通過指定監控進程ID來僅僅監控某個進程的狀態。 -H 顯示線程信息 show all threads
顯示一個進程的線程運行信息列表
按大寫P 線程按照cpu使用率排序
查看堆棧,找到線程在幹嘛
pstack/jstack/grep
C進程使用pstack查看線程堆棧信息
java進程採用jstack查看線程堆棧信息.
[root@dev logs]# pstack 3715 #0 0x00007fa864a334e0 in __accept_nocancel () from /lib64/libc.so.6 #1 0x0000000000857ca1 in fcgi_accept_request () #2 0x000000000085f42d in main ()
如果提示 -bash: pstack: command not found 只要安裝gdb就可以了
yum install gdb -y
查看CPU的平均狀況信息
[root@dev logs]# mpstat -P ALL -I SUM Linux 2.6.32-504.30.3.el6.x86_64 (dev.aigupiao.com) 06/10/20 _x86_64(2 CPU) 21:09:44 CPU intr/s 21:09:44 all 2855.24 21:09:44 0 113.53 21:09:44 1 1887.97
mpstat是 Multiprocessor Statistics的縮寫,是實時系統監控工具。其報告與CPU的一些統計信息,這些信息存放在/proc/stat文件中。 當mpstat不帶參數時,輸出爲從系統啓動以來的平均值 mpstat [-P {cpu|ALL}] [internal [count]] internal 相鄰的兩次採樣的間隔時間 count 採樣次數,只能和internal一起使用 -P { cpu [,...] | ON | ALL } #表示監控哪個CPU, cpu在[0,cpu個數-1]中取值 -I { SUM | CPU | ALL } 查看cpu中斷的統計 Report interrupts statistics