全部產品
Search
文件中心

:Linux系統磁碟I/O負載較高問題的排查與處理

更新時間:Nov 29, 2025

問題現象

  • 應用服務異常:業務應用效能下降,服務響應逾時,或出現與I/O相關的錯誤記錄檔。

  • 監控指標警示:CloudMonitor顯示磁碟的%util(使用率)指標接近或持續處於100%,或收到磁碟IOPS、輸送量超閾值的警示。

問題原因

  • 高I/O消耗進程:執行個體內部啟動並執行某個進程(如資料庫讀寫、日誌大量寫入、備份任務)產生大量磁碟讀寫請求,佔滿了磁碟I/O頻寬。

  • 磁碟效能瓶頸:當前業務的正常I/O需求超出了執行個體所掛載雲端硬碟的效能上限(IOPS或輸送量)。

解決方案

使用iostat確認磁碟瓶頸,然後利用iotop定位具體進程,最後按需最佳化或升級資源。

步驟一:確認磁碟I/O瓶頸

  1. 登入ECS執行個體。

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

    2. 進入目標執行個體詳情頁,單擊遠端連線,選擇通過Workbench遠端連線。根據頁面提示登入,進入終端頁面。

  2. 使用iostat監控磁碟I/O狀態。

    1. 安裝sysstat工具包。

      Alibaba Cloud Linux / CentOS / Fedora

      sudo yum install -y sysstat

      Ubuntu / Debian

      sudo apt install -y sysstat

      openSUSE

      sudo zypper install -y sysstat
    2. 執行iostat,每2秒重新整理一次資料。

      iostat -d -x -k 2
  3. 分析iostat輸出結果。重點關註:

    • r/sw/s:每秒讀、寫請求次數(IOPS)。

    • rkB/swkB/s:每秒讀、寫資料量(輸送量)。

    • %util:磁碟I/O的使用率。如果持續接近100%,說明磁碟裝置已達到飽和狀態。

步驟二:定位高I/O消耗進程

磁碟I/O達到飽和狀態後,需進一步定位是哪個進程導致的高負載。

  1. 使用iotop即時查看進程的I/O活動。

    1. 安裝iotop

      Alibaba Cloud Linux / CentOS / Fedora

      sudo yum install -y iotop

      Ubuntu / Debian

      sudo apt install -y iotop

      openSUSE

      sudo zypper install -y iotop
    2. 顯示活躍的I/O進程。

      sudo iotop -o
  2. 分析iotop輸出結果。

    • 定位進程:從DISK WRITEDISK READ找出I/O最高的進程。

    • 輔助判斷:IO>列顯示進程等待I/O的時間佔比。

步驟三:分析並處理異常進程

  1. 分析原因:可能源於SQL慢查詢、記錄層級過高或檔案讀寫頻繁等問題。

  2. 處理方法(包括但不限於):

    • 資料庫:檢查慢查詢日誌,最佳化SQL語句和索引。

    • Log Service:降低應用程式的記錄層級(如從DEBUG改為INFO),並配置日誌輪轉。

    • 檔案鎖:檢查檔案讀寫邏輯。使用記憶體緩衝,增加緩衝區。

步驟四:評估並升級磁碟效能(可選)

如果排查後無法通過應用程式層最佳化降低,可以通過升級磁碟來提升效能。

  1. 評估需求:根據iostat監控到的實際IOPS和輸送量,確定效能目標。

  2. 執行升級:根據效能目標,將雲端硬碟升級到更高規格。

後續建議

  • 配置監控警示:為磁碟的%util、IOPS、輸送量等關鍵計量配置合理的警示閾值(如80%),實現問題早期發現。

  • 應用I/O最佳化:在應用程式層面,儘可能使用緩衝減少對磁碟的直接讀寫。對於寫密集的情境,考慮採用非同步寫入或批量寫入的方式,平滑I/O峰值。