全部產品
Search
文件中心

:Linux執行個體CPU使用率或負載較高問題的排查與處理

更新時間:Dec 11, 2025

問題現象

CPU使用率或負載過高時,常見的現象包括:

  1. 商務服務異常

    • SSH遠端連線響應緩慢、操作卡頓,嚴重時無法建立串連。

    • 網站或應用程式回應時間顯著增加,頁面載入緩慢。

    • 請求頻繁逾時、介面返回失敗,業務處理能力明顯下降。

  2. 系統資源異常

    • 執行個體CPU使用率持續高於80%,甚至接近100%。

    • 系統負載(Load Average)持續超過CPU邏輯核心數(如4核機器Load > 4)。

    • CloudMonitor平台已觸發高負載相關警示(簡訊/郵件通知)。

問題原因

  • 高計算消耗進程 :代碼邏輯問題(如死迴圈)、複雜的計算任務或高並發業務請求導致特定進程佔用大量CPU資源。

  • I/O效能瓶頸 :磁碟讀寫頻繁或儲存效能不足,導致進程長時間處於等待I/O,從而推高系統平均負載。

  • 核心或系統調用 :頻繁的環境切換、核心任務或驅動程式異常導致系統態CPU使用率升高。

  • 異常或惡意程式 :執行個體被植入挖礦程式、木馬病毒,或存在Rootkit隱藏進程,消耗大量計算資源。

解決方案

首先通過top工具定位導致CPU升高或負載過高的具體指標(使用者態、核心態或I/O等待),然後根據指標類型使用perfiotopvmstat等工具深入分析,最後採取相應措施進行最佳化或處理。

步驟一:定位CPU瓶頸指標

  1. 通過VNC串連登入ECS執行個體。

    1. 訪問ECS控制台-執行個體。在頁面左側頂部,選擇目標資源所在的資源群組和地區。

    2. 進入目標執行個體詳情頁,單擊遠端連線,選擇通過VNC遠端連線。輸入帳號和密碼,登入ECS執行個體。

  2. 查看系統負載和進程活動。

    sudo top
  3. 定位問題原因。

    top互動介面按P鍵,按CPU使用率降序排列進程,識別出消耗最高的進程ID(PID)和進程名(COMMAND)。

    • 若某個業務進程(如javapythonphp-fpm)CPU使用率持續高於80%,請參考處理業務進程繁忙

    • %Cpu(s)中的I/O等待(wa)持續高於20%,使用者態(us)和核心態(sy)都很低,並且平均負載(Load Average)數值遠超CPU核心數,表明CPU有大量時間在空閑等待磁碟響應,請參考處理磁碟 I/O 瓶頸

      當進程等待磁碟I/O完成時,會進入D狀態(不可中斷睡眠),此時進程無法被終止。大量D狀態進程堆積表明磁碟響應緩慢,導致CPU空閑等待,從而推高系統負載。
    • %Cpu(s)中的sy(system)持續高於30%,通常表示核心頻繁執行系統調用或中斷處理,請參考處理核心或系統調用繁忙

    • %Cpu(s)中的si(softirq) 持續高於15%,表明網路流量較高,請參考處理網路中斷繁忙

步驟二:針對性分析並處理

處理業務進程繁忙

  • 分析並最佳化代碼:

    使用效能分析工具定位熱點代碼。

    • Java應用 :使用jstack <PID>匯出線程棧,搜尋處於RUNNABLE狀態的線程,觀察調用棧是否存在長時間停留在某個特定方法中。

    • C/C++應用 :使用perf top -p <PID>查看具體消耗CPU的函數符號。

    根據分析結果最佳化演算法、修複死迴圈或減少不必要的計算。

  • 升級資源:若為正常業務增長導致的資源瓶頸,應升級執行個體規格

處理磁碟 I/O 瓶頸

  1. 定位高I/O進程:處理Linux系統磁碟I/O負載過高問題

  2. 檢查是否有D狀態進程堆積:

    sudo ps -axjf | grep " D"
  3. 處理措施:

    • 應用最佳化:降低記錄層級、為資料庫查詢添加索引以減少磁碟讀寫。

    • 升級儲存:可升級雲端硬碟類型(如將 ESSD PL1升級至 ESSD PL2/PL3)以提升IOPS和輸送量,雲端硬碟最終IOPS受掛載執行個體規格限制,若執行個體規格的IOPS上限低於雲端硬碟能力,需升級執行個體規格

    • 重啟系統:若存在D狀態進程堆積,可通過重啟系統解決。

處理核心或系統調用繁忙

  1. 檢查環境切換:運行vmstat 1命令,觀察cs(context switch)列的數值,若數值持續超過 100,000,說明環境切換過於頻繁,需檢查應用程式是否存在過多的線程建立/銷毀。

  2. 檢查核心任務:若 kswapd0 進程佔用率高,說明實體記憶體不足,核心正在頻繁進行記憶體回收,建議升級執行個體規格

    實體記憶體不足時,kswapd0頻繁掃描頁面、執行回收和換出操作,這些計算密集型任務會消耗大量CPU資源,導致使用率升高。

處理網路中斷繁忙

  1. 分析流量:使用iftopiptraf-ng等工具分析網路流量來源和類型。

  2. 檢查配置:對於高網路負載,可開啟網卡多隊列將中斷分散到多個 CPU 核心。

  3. 安全排查:前往Security Center,查看是否存在網路攻擊。

後續建議

  • 配置監控警示:對CPU使用率、負載、I/O等待等指標設定合理的警示閾值,實現早期預警。若需對 Linux 系統指標進行歷史回溯與分析,可使用atop工具監控Linux系統指標

  • 定期安全巡檢:利用Security Center定期對主機進行漏洞掃描病毒查殺基準風險檢查,修複潛在安全隱患。

  • 定期審查與最佳化:定期對系統和應用進行效能審計和代碼審查,發現並解決潛在的效能瓶頸。

  • 容量規劃:根據業務增長趨勢,提前進行容量規劃,確保系統資源能夠應對未來的負載增長。