全部產品
Search
文件中心

:Linux執行個體負載高問題排查和異常處理

更新時間:Nov 12, 2025

問題現象

  • 響應慢:SSH命令執行卡頓,網站或API訪問緩慢、逾時。

  • 指標高:CPU、記憶體、磁碟I/O監控持續超過80%。

  • 服務中斷:關鍵進程被系統終止(OOM),執行個體自動重啟。

  • 無法登入:SSH串連被拒絕。

問題原因

  • 程式問題:應用代碼存在效能瓶頸或記憶體流失。

  • 流量突增:並發訪問超出執行個體處理能力。

  • I/O瓶頸:磁碟讀寫達到飽和,CPU大量等待(iowait高)。

解決方案

步驟一:使用htop快速定位異常進程

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

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

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

  2. 安裝並運行htop。

    sudo yum install -y htop
    htop
  3. 在htop介面中分析。

    • 找CPU消耗高的進程:按F6鍵,選擇PERCENT_CPU降序排序。

    • 找記憶體消耗高的進程:按F6鍵,選擇PERCENT_MEM降序排序。

步驟二:使用sar工具全面診斷資源瓶頸

htop定位到現象後,使用sar擷取量化資料,確認瓶頸是CPU、記憶體還是I/O。

  1. 安裝並啟用sysstat。

    sudo yum install -y sysstat
    systemctl start sysstat && systemctl enable sysstat
  2. 執行專項分析。

    • 分析CPU(sar -u):確認CPU時間花費在哪。

      # 每秒採集1次,共採集5次
      sar -u 1 5
      • %user高:應用程式問題。

      • %system高:核心或I/O調用頻繁。

      • %iowait持續大於20%:瓶頸在磁碟I/O。

    • 分析系統負載(sar -q)衡量系統繁忙程度。

      # 每2秒採集1次,共採集5次
      sar -q 2 5
      • ldavg-1大於CPU核心數:系統已過載。

      • runq-sz高:較多進程在排隊等待CPU。

    • 分析記憶體與交換(sar -r 和 sar -W):判斷記憶體是否耗盡。

      # 分析記憶體使用量
      sar -r 1 3
      # 分析交換活動(Swap)
      sar -W 1 3
      • pswpin/spswpout/s持續大於0:實體記憶體不足,系統正在使用硬碟作虛擬記憶體,效能會下降。

    • 分析磁碟I/O(sar -d):定位磁碟效能瓶頸。

      # 每秒採集1次,共採集3次,分析具體磁碟
      sar -d 1 3
      • %util接近100%:磁碟I/O已飽和。

      • await大於20ms:I/O請求處理時間過長。

步驟三:針對性處理與最佳化

  • 高CPU消耗的業務進程:

    • 代碼最佳化:使用perf(C/C++),jstack(Java)等工具定位並最佳化熱點代碼。

    • 邏輯最佳化:檢查並修複死迴圈、全表掃描SQL等低效操作。

  • 記憶體不足或頻繁Swap:

    • 排查泄漏:使用valgrind(C/C++),jmap(Java)等工具分析記憶體流失。

    • 調整配置:合理配置應用的記憶體參數,如JVM的-Xms-Xmx

    • 升級資源:升降配執行個體概述以增加實體記憶體。

  • 高磁碟I/O:處理Linux系統磁碟I/O負載過高問題

後續建議

  • 配置監控警示:為CPU、記憶體、負載、磁碟等關鍵計量設定警示閾值,實現早期預警。

  • 規劃Auto Scaling:對Web應用等波動性負載,配置Auto Scaling策略,自動增減執行個體以應對流量變化。