最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Linux?CPU占用過高的原因與排查指南

 更新時間:2026年05月27日 08:48:13   作者:小貓咪01  
這篇文章主要介紹了Linux?CPU占用過高的排查方法,結(jié)合top、ps、pidat,定位具體進程、線線及可能原因,區(qū)分正常負載與異常情況,確保服務(wù)穩(wěn)定運行,需要的朋友可以參考下

1. 前言

Linux 服務(wù)器 CPU 占用過高,是線上排障中非常常見的問題。
常見現(xiàn)象包括:

  • 接口響應(yīng)變慢;
  • SSH 登錄卡頓;
  • 服務(wù)線程堆積;
  • 負載 Load Average 升高;
  • 風扇轉(zhuǎn)速變高;
  • 進程占用 CPU 長時間不下降。

排查 CPU 問題,不能只看一個 top
更合理的方式是結(jié)合:

top
ps
pidstat
uptime
mpstat
perf
應(yīng)用日志

本文重點圍繞 top、pspidstat 展開,講清楚 Linux CPU 占用過高時怎么定位到具體進程、線程和可能原因。

2. CPU 占用高可能是什么原因

CPU 高并不一定是壞事。
如果服務(wù)器正在正常處理大量請求,CPU 高可能是正常負載。

但如果 CPU 持續(xù)高位,就要重點排查。

常見原因:

類型說明
業(yè)務(wù)請求量突增流量變大,服務(wù)正常忙
死循環(huán)某段代碼一直空轉(zhuǎn)
線程池打滿大量線程爭搶 CPU
GC 頻繁Java 程序頻繁垃圾回收
正則或加密計算過重CPU 密集型任務(wù)
日志瘋狂打印大量字符串拼接和 IO
異常進程挖礦、木馬、未知腳本
系統(tǒng)中斷高網(wǎng)卡、磁盤、驅(qū)動異常

所以排查時要先判斷:

是哪個進程高?
是用戶態(tài) CPU 高,還是系統(tǒng)態(tài) CPU 高?
是單線程高,還是多線程高?
CPU 高是否和業(yè)務(wù)流量一致?

3. top:第一時間看整體情況

執(zhí)行:

top

重點看頂部幾行:

%Cpu(s): 85.0 us, 10.0 sy, 0.0 ni, 3.0 id, 1.0 wa, 0.0 hi, 1.0 si, 0.0 st

字段說明:

字段含義
us用戶態(tài) CPU,業(yè)務(wù)程序代碼消耗
sy系統(tǒng)態(tài) CPU,內(nèi)核調(diào)用消耗
id空閑 CPU
wa等待 IO
hi硬中斷
si軟中斷
st虛擬化環(huán)境中被宿主機偷走的 CPU

判斷思路:

現(xiàn)象可能方向
us應(yīng)用程序計算多、死循環(huán)、GC、業(yè)務(wù)壓力大
sy系統(tǒng)調(diào)用多、網(wǎng)絡(luò)/文件操作頻繁
wa磁盤 IO 慢,不一定是 CPU 真忙
hi/si網(wǎng)絡(luò)包、中斷、驅(qū)動相關(guān)問題
st云主機宿主機資源爭搶

4. top 中按 CPU 排序

進入 top 后按:

P

可以按 CPU 占用排序。

常見字段:

字段說明
PID進程 ID
USER進程用戶
%CPUCPU 占用
%MEM內(nèi)存占用
TIME+累計 CPU 時間
COMMAND命令名

如果某個進程長期排第一,基本就是重點對象。

查看某個進程詳細信息:

ps -fp PID

例如:

ps -fp 12345

5. ps:快速找 CPU 最高的進程

查看 CPU 占用最高的前 10 個進程:

ps aux --sort=-%cpu | head

輸出示例:

USER   PID   %CPU  %MEM  COMMAND
app    1234  180   20.1  java -jar app.jar
root   2345  60    1.2   nginx

說明:

  • %CPU 可能超過 100;
  • 多核 CPU 下,一個進程多線程可以占用超過 100%。

查看指定進程:

ps -p 1234 -o pid,ppid,user,%cpu,%mem,etime,cmd

字段說明:

字段含義
pid進程 ID
ppid父進程 ID
%cpuCPU 占用
%mem內(nèi)存占用
etime運行時長
cmd啟動命令

6. pidstat:持續(xù)觀察進程 CPU

pidstat 來自 sysstat 工具包。

安裝:

Ubuntu / Debian:

sudo apt install sysstat -y

CentOS / RHEL:

sudo yum install sysstat -y

查看所有進程 CPU,每 1 秒一次:

pidstat 1

查看指定進程:

pidstat -p 1234 1

輸出示例:

UID PID %usr %system %guest %wait %CPU CPU Command
app 1234 80.0 10.0 0.0 0.0 90.0 1 java

字段說明:

字段含義
%usr用戶態(tài) CPU
%system系統(tǒng)態(tài) CPU
%wait等待 CPU 調(diào)度
%CPU總 CPU 占用
CPU當前運行在哪個 CPU 核心

pidstattop 更適合連續(xù)觀察趨勢。

7. 定位到線程級別

有些進程內(nèi)部有很多線程。
例如 Java、Nginx、MySQL 都可能是多線程或多進程模型。

查看某進程的線程 CPU:

top -H -p 1234

或者:

ps -mp 1234 -o THREAD,tid,time,%cpu

找到占用高的線程 TID 后,如果是 Java 程序,可以把 TID 轉(zhuǎn)成十六進制:

printf "%x\n" 線程ID

例如:

printf "%x\n" 5678

然后用:

jstack 1234 | grep -A 30 十六進制線程ID

定位 Java 線程堆棧。

8. mpstat:看每個 CPU 核心

如果懷疑單核打滿,可以用:

mpstat -P ALL 1

如果某一個 CPU 核心長期 100%,可能是:

  • 單線程程序跑滿;
  • 中斷集中在某個核心;
  • 線程綁定 CPU;
  • 某個熱點線程異常。

9. CPU 高的實戰(zhàn)排查流程

9.1 看整體 CPU

top

重點看:

us sy wa hi si st

9.2 找最高進程

ps aux --sort=-%cpu | head

9.3 持續(xù)觀察

pidstat -p PID 1

9.4 看線程

top -H -p PID

9.5 查日志和應(yīng)用狀態(tài)

journalctl -u 服務(wù)名 -n 100
tail -f app.log

9.6 如果是 Java

jstack PID
jstat -gcutil PID 1000

看是否頻繁 GC 或線程死循環(huán)。

10. 常見場景判斷

10.1 用戶態(tài) CPU 高

topus 高。

常見原因:

  • 業(yè)務(wù)計算量大;
  • 死循環(huán);
  • 大量 JSON 序列化;
  • 加密解密;
  • 正則匹配;
  • Java GC;
  • 大量請求。

處理思路:

找進程
找線程
看代碼堆棧
看接口流量
看日志

10.2 系統(tǒng)態(tài) CPU 高

sy 高。

常見原因:

  • 大量系統(tǒng)調(diào)用;
  • 網(wǎng)絡(luò)連接頻繁創(chuàng)建關(guān)閉;
  • 文件 IO 很頻繁;
  • 容器或內(nèi)核網(wǎng)絡(luò)開銷;
  • 進程頻繁 fork。

可以結(jié)合:

strace -p PID

觀察系統(tǒng)調(diào)用。
線上使用 strace 要謹慎,避免影響進程。

10.3 iowait 高

wa 高不代表 CPU 真忙。
它通常表示 CPU 在等磁盤 IO。

繼續(xù)排查:

iostat -x 1
iotop

如果磁盤很忙,要去看 IO 問題,而不是只盯 CPU。

11. 不要一上來 kill -9

發(fā)現(xiàn) CPU 高后,不建議直接:

kill -9 PID

除非已經(jīng)確認是異常進程。

更穩(wěn)妥:

  1. 先記錄現(xiàn)場;
  2. 保存日志;
  3. 查看進程命令;
  4. 查看線程;
  5. 必要時 dump;
  6. 再考慮重啟或 kill。

Java 程序可以先:

jstack PID > jstack.txt
jmap -histo PID > histo.txt

然后再處理。

12. 小結(jié)

CPU 高排查核心命令:

top
ps aux --sort=-%cpu | head
pidstat -p PID 1
top -H -p PID
mpstat -P ALL 1

排查思路:

先看整體 CPU 類型
↓
找出高 CPU 進程
↓
持續(xù)觀察進程趨勢
↓
定位到線程
↓
結(jié)合應(yīng)用日志和代碼堆棧
↓
判斷是流量、死循環(huán)、GC、IO 還是異常進程

CPU 排查最重要的是不要只看表面占用率,而要判斷 CPU 時間到底消耗在用戶態(tài)、系統(tǒng)態(tài)、IO 等待還是中斷上。

以上就是Linux CPU占用過高的原因與排查指南的詳細內(nèi)容,更多關(guān)于Linux CPU占用過高排查的資料請關(guān)注腳本之家其它相關(guān)文章!

相關(guān)文章

  • Linux基于TCP實現(xiàn)服務(wù)端客戶端通信的步驟詳解

    Linux基于TCP實現(xiàn)服務(wù)端客戶端通信的步驟詳解

    文章詳細介紹了Linux系統(tǒng)中的前臺進程和后臺進程的概念、創(chuàng)建、切換和操作方法,以及進程關(guān)系、守護進程、TCP服務(wù)器與客戶端通信等方面的內(nèi)容,需要的朋友可以參考下
    2026-03-03
  • 虛擬機中CentOS7設(shè)置固定IP地址的方法

    虛擬機中CentOS7設(shè)置固定IP地址的方法

    這篇文章主要介紹了虛擬機中CentOS7設(shè)置固定IP地址的方法,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2018-12-12
  • Openssl實現(xiàn)雙向認證教程(附服務(wù)端客戶端代碼)

    Openssl實現(xiàn)雙向認證教程(附服務(wù)端客戶端代碼)

    這篇文章主要介紹了Openssl實現(xiàn)雙向認證教程(附服務(wù)端客戶端代碼),文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友可以參考下
    2020-05-05
  • Apache日志管理和統(tǒng)計分析知識

    Apache日志管理和統(tǒng)計分析知識

    Apache服務(wù)器具備強大的日志功能,管理員可以方便、準備、及時地了解服務(wù)器狀況;可以更好地防范黑客的攻擊
    2016-04-04
  • Linux中服務(wù)器磁盤空間管理與大文件清理的實踐指南

    Linux中服務(wù)器磁盤空間管理與大文件清理的實踐指南

    通過定期執(zhí)行磁盤空間檢查和大文件清理,可以有效預(yù)防磁盤空間不足導致的服務(wù)中斷,本文將為大家詳細介紹一下Linux服務(wù)器磁盤空間管理與大文件清理的相關(guān)方法,希望對大家有所幫助
    2025-10-10
  • centos7訪問windows系統(tǒng)的共享文件夾詳解

    centos7訪問windows系統(tǒng)的共享文件夾詳解

    文章講述了在Windows和CentOS系統(tǒng)之間共享文件夾并掛載的過程,包括在Windows上設(shè)置共享文件夾,以及在CentOS上使用CIFS協(xié)議掛載共享文件夾的詳細步驟,此外,還介紹了如何設(shè)置開機自動掛載和提高掛載點權(quán)限的安全性
    2025-12-12
  • Ubuntu服務(wù)器下搭建php運行環(huán)境的方法

    Ubuntu服務(wù)器下搭建php運行環(huán)境的方法

    這篇文章主要介紹了Ubuntu服務(wù)器下搭建php運行環(huán)境的方法,簡單分析了Ubuntu操作系統(tǒng)環(huán)境下搭建Apache、php及mysql模塊相關(guān)步驟、命令與操作技巧,需要的朋友可以參考下
    2018-04-04
  • Linux常用命令之grep命令用法詳解

    Linux常用命令之grep命令用法詳解

    這篇文章主要介紹了Linux常用命令grep命令用法詳解,grep命令用于對文件和文本執(zhí)行重復搜索任務(wù)的Unix工具,可以通過grep命令指定特定搜索條件來搜索文件及其內(nèi)容以獲取有用的信息。對此感興趣可以了解一下
    2020-07-07
  • Ubuntu14.04搭建Caffe(僅CPU)詳解教程

    Ubuntu14.04搭建Caffe(僅CPU)詳解教程

    這篇文章主要介紹了Ubuntu14.04搭建Caffe(僅CPU)詳解教程,操作系統(tǒng)是Ubuntu 14.04,本文分步驟給大家介紹的非常詳細,具有參考借鑒價值,需要的朋友可以參考下
    2016-11-11
  • apache正常訪問mht類型文件的配置方法

    apache正常訪問mht類型文件的配置方法

    這篇文章主要介紹了apache正常訪問mht類型文件的配置方法,需要的朋友可以參考下
    2014-04-04

最新評論

开江县| 清丰县| 阿图什市| 康定县| 南昌市| 班戈县| 九江县| 当雄县| 瑞丽市| 界首市| 凤台县| 唐河县| 建始县| 阿合奇县| 潞城市| 隆林| 大埔区| 马边| 阿坝县| 十堰市| 申扎县| 新干县| 光泽县| 辽阳市| 越西县| 成武县| 衢州市| 都兰县| 平乐县| 北流市| 阳高县| 汕头市| 东辽县| 孝义市| 梧州市| 垣曲县| 衡东县| 肃北| 汶上县| 卓尼县| 广宁县|