如何監(jiān)控Linux磁盤I/O性能 iotop與iostat工具使用

要監(jiān)控linux磁盤i/o性能,應(yīng)使用iotop和iostat工具分別從進(jìn)程級別和設(shè)備級別進(jìn)行分析。一、使用iotop可查看哪些進(jìn)程頻繁讀寫磁盤,重點關(guān)注disk write和io>列,按o鍵過濾無i/o活動的進(jìn)程;二、使用iostat監(jiān)控設(shè)備級性能,關(guān)注%util(超過80%可能為瓶頸)、await(數(shù)值高表示響應(yīng)慢)等指標(biāo),若%util接近100%,結(jié)合iotop排查具體進(jìn)程;三、應(yīng)對建議:突發(fā)i/o高峰可檢查定時任務(wù),長期高負(fù)載需優(yōu)化程序或升級硬件,i/o等待高但吞吐小則檢查磁盤性能或碎片問題。

如何監(jiān)控Linux磁盤I/O性能 iotop與iostat工具使用

監(jiān)控linux磁盤I/O性能,關(guān)鍵在于找出哪個進(jìn)程在頻繁讀寫磁盤,以及磁盤本身的負(fù)載情況。iotopiostat 是兩個非常實用的工具,分別從進(jìn)程級別和設(shè)備級別的角度來觀察I/O行為。

如何監(jiān)控Linux磁盤I/O性能 iotop與iostat工具使用


一、用 iotop 查看進(jìn)程級I/O占用

如果你想知道當(dāng)前系統(tǒng)中哪些進(jìn)程正在大量讀寫磁盤,iotop 是個不錯的選擇。它類似于 top 命令,但專注于I/O操作。

如何監(jiān)控Linux磁盤I/O性能 iotop與iostat工具使用

  • 安裝方法(以debian/ubuntu為例):

    sudo apt install iotop
  • 使用方式:

    如何監(jiān)控Linux磁盤I/O性能 iotop與iostat工具使用

    sudo iotop

進(jìn)入界面后,你會看到類似下面的信息:

TID PRIO USER DISK READ DISK WRITE SWAPIN IO> COMMAND
1234 be/4 www-data 0.00 B/s 5.23 M/s 0.00 % 0.00 % nginx: worker

重點關(guān)注 DISK WRITEIO> 這兩列。如果某個進(jìn)程持續(xù)占用較高的I/O帶寬,說明它可能是性能瓶頸的來源。

? 提示:按 o 鍵可以只顯示有實際I/O活動的進(jìn)程,方便快速定位問題。


二、用 iostat 監(jiān)控設(shè)備級I/O性能

當(dāng)你更關(guān)心磁盤設(shè)備本身的性能表現(xiàn)時,iostat 就派上用場了。它可以展示CPU使用率和磁盤I/O統(tǒng)計信息。

  • 安裝方法(iostat包含在sysstat包中):

    sudo apt install sysstat
  • 常用命令:

    iostat -x 1 5

    表示每秒刷新一次,共刷新5次。

輸出示例:

Device             tps    kB_read/s    kB_wrtn/s    kB_read    kB_wrtn sda               23.00       120.00        340.00     600000    1700000

關(guān)鍵指標(biāo)解釋:

  • %util:設(shè)備利用率,超過80%可能表示I/O瓶頸。
  • await:平均每次I/O請求的等待時間(毫秒),數(shù)值高說明響應(yīng)慢。
  • svctm:實際服務(wù)時間,理想情況下應(yīng)遠(yuǎn)小于 await。

? 如果你發(fā)現(xiàn)某塊磁盤的 %util 持續(xù)接近100%,那就要檢查是哪個進(jìn)程在頻繁訪問它,這時候可以結(jié)合前面提到的 iotop 來進(jìn)一步排查。


三、常見場景與應(yīng)對建議

  1. 突發(fā)性I/O高峰

    • 現(xiàn)象:iostat 中磁盤 util 突然飆高,系統(tǒng)響應(yīng)變慢。
    • 應(yīng)對:用 iotop 找出具體進(jìn)程,查看是否為備份、日志滾動等定時任務(wù)引起。
  2. 長期高I/O負(fù)載

    • 現(xiàn)象:磁盤 util 長時間高于70%以上。
    • 應(yīng)對:考慮優(yōu)化程序邏輯,減少不必要的磁盤讀寫;或升級存儲硬件(如換成SSD)。
  3. I/O等待過高但吞吐不大

    • 現(xiàn)象:await 高但 kB_read/s 或 kB_wrtn/s 不大。
    • 應(yīng)對:可能是磁盤性能本身有問題,或者文件系統(tǒng)碎片多,需要做fsck或更換硬盤。

基本上就這些。掌握好 iotop 和 iostat 的使用,能幫助你快速定位Linux系統(tǒng)的I/O性能問題。不復(fù)雜但容易忽略的是,要根據(jù)具體場景靈活搭配這兩個工具,才能看得更清楚。

? 版權(quán)聲明
THE END
喜歡就支持一下吧
點贊14 分享