Linux下CPU占用率高分析方法


一、可能有線程一直占用CPU資源

1. 先通過 ps 查看進程狀態,找出進程的PID(8209)。

2.jstack -l 8209 > /usr/local/work/tomcat/8209.stack 導出PID對應的線程信息到文件

3.對導出的線程文件下載本地做分析(可以文本打開)

4. 通過top -H -p 8209 命令查看對應進程是哪個線程占用CPU過高(eg:8308)

5.printf "%x\n" 8308 轉換十進制為十六進制 此處為:2074。

6.在導出的堆棧文件中搜索線程ID等於nid=0x2074的線程,此處即列出了該線程對應的類

7.根據線程信息找到對應的類定位問題成功,可能的原因:

                     1.程序計算比較密集(大型矩陣的運算)

                     2.程序出現了死循環(while循環,hashmap死循環)

                     3. 程序邏輯結構的問題(數據庫連接沒有釋放,連接池死鎖,自旋鎖一直占用着內存)

二、查看磁盤使用率是不是超出正常范圍。(df)

三、查看內存使用率是否超出正常范圍(free)

四、jvm內存狀態可能出現異常,可能頻繁的GC原因。可以適當的改變堆棧比例。

CPU利用率:1 - CPU空閑運行時間/總運行時間

CPU負載(load):是指在一段時間內占用cpu時間的進程和等待cpu時間的進程數(處於被喚醒狀態,不是wait狀態),取決於CPU隊列。

如果現在出現CPU利用率很低,load很高的情況,可能是IO密集型的任務比較多。

原文地址:https://blog.csdn.net/qiuchaoxi/article/details/81296713


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM