1. 程式人生 > >解決高負載和高I/O問題

解決高負載和高I/O問題

解決高負載問題

  • 當處理一個執行緩慢系統的時候,首先要觀察的度量指標之一就是I/O等待時間,它可以用來排除磁碟I/O的問題。
  1. 如果I/O等待時間很低,那麼可以看看CPU空閒時間百分比;
  2. 如果I/O等待時間很高,那麼下一步就是確定是什麼因素導致I/O等待時間所佔的比重這麼高;
  3. 如果I/O等待和CPU空閒時間百分比都很低,那麼很可能會看到一個非常高的使用者時間百分比,所以你必須確定是什麼原因導致了這麼高的使用者時間百分比;
  4. 如果I/O等待時間所佔百分比很低,而空閒時間百分比很高,那麼你就知道系統執行緩慢不是CPU資源的原因,而應該從別的地方找原因。這可能意味這應該檢視網路問題或者Web伺服器的問題,或者檢視Mysql查詢緩慢的問題等。

解決高I/O等待時間問題

當你看到I/O等待時間所佔CPU時間的比重很高的時候,首先需要檢查的就是機器是否正在大量使用交換空間。因為硬碟操作的速度遠遠低於RAM,所以當系統記憶體耗盡,開始使用交換空間的時候,系統的效能會受到嚴重影響。任何想要訪問硬碟的操作都要完成與硬碟的I/O交換。所以,故障排除的第一步是看記憶體是否耗盡,如果是,先解決這個問題。如果還有大量可用的RAM,你需要明確哪個程序佔用了大部分I/O操作。

  • 使用iostat命令

[[email protected] ~]$ iostat Linux 2.6.32-642.13.1.el6.x86_64 (iZbp1fbha9mr8g8k7c5mk9Z) 11/14/2018 x86_64

(8 CPU)

avg-cpu: %user %nice %system %iowait %steal %idle 22.47 0.00 4.39 0.38 0.00 72.76

Device: tps Blk_read/s Blk_wrtn/s Blk_read Blk_wrtn vda 3.46 1.42 67.43 8039258 382790208 vdb 1.03 2.40 58.00 13636250 329293080

tps: 這個值列出了裝置每秒的傳輸量。“傳輸”是向裝置傳送I/O請求的另一種表達方式。 Blk_read/s 表示每秒從裝置讀取的資料量 Blk_wrtn/s 表示每秒向裝置寫入的資料量 Blk_read 這一列表示從裝置讀取的資料總量 Blk_wrtn 這一列表示寫入裝置的資料總量

  • iotop

Total DISK READ: 55.90 K/s | Total DISK WRITE: 271.51 K/s TID PRIO USER DISK READ DISK WRITE SWAPIN IO> COMMAND

536 be/3 root 0.00 B/s 0.00 B/s 0.00 % 0.00 % [jbd2/vda1-8]

第一行:READ和WRITE速率總計;

第二行:

tid:執行緒id,按p可轉換程序pid

PRIO:優先順序

DISK READ:磁碟讀取速率

DISK WRITE:磁碟寫取速率

SWAPIN:swap交換百分比

IO>:IO等待所佔用百分比

COMMAND:執行緒/程序詳細資訊