1. 程式人生 > >檢視linux伺服器硬碟IO讀寫負載

檢視linux伺服器硬碟IO讀寫負載

原文地址 http://www.cnblogs.com/mfryf/archive/2012/03/12/2392012.html

最近一臺linux伺服器出現異常,系統反映很慢,相應的應用程式也無法反映,而且還出現宕機的情況,經過幾天的觀察瞭解,發現伺服器壓力很大,主要的壓力來自硬碟的IO訪問已經達到100%

  為了方便各位和自己今後遇到此類問題能儘快解決,我這裡將檢視linux伺服器硬碟IO訪問負荷的方法同大家一起分享:

  首先 、用top命令檢視

  top - 16:15:05 up 6 days,  6:25,  2 users,  load average: 1.45, 1.77, 2.14

  Tasks: 147 total,   1 running, 146 sleeping,   0 stopped,   0 zombie

  Cpu(s):  0.2% us,  0.2% sy,  0.0% ni, 86.9% id, 12.6% wa,  0.0% hi,  0.0% si

  Mem:   4037872k total,  4003648k used,    34224k free,     5512k buffers

  Swap:  7164948k total,   629192k used,  6535756k free,  3511184k cached

  檢視12.6% wa

  IO等待所佔用的CPU時間的百分比,高過30%時IO壓力高

  其次、 用iostat -x 1 10

  如果 iostat 沒有,要  yum install sysstat

  avg-cpu:  %user   %nice    %sys %iowait   %idle

  0.00       0.00     0.25    33.46    66.29

  Device:    rrqm/s  wrqm/s   r/s    w/s     rsec/s   wsec/s    rkB/s    wkB/s avgrq-sz avgqu-sz   await  svctm  %util

  sda          0.00    0.00      0.00   0.00    0.00    0.00         0.00     0.00     0.00           0.00    0.00    0.00   0.00

  sdb          0.00   1122  17.00  9.00  192.00 9216.00    96.00  4608.00   123.79   137.23 1033.43  13.17 100.10

  sdc          0.00    0.00     0.00   0.00     0.00     0.00      0.00     0.00     0.00             0.00    0.00      0.00   0.00

  檢視%util 100.10 %idle 66.29

  如果 %util 接近 100%,說明產生的I/O請求太多,I/O系統已經滿負荷,該磁碟可能存在瓶頸。

  idle小於70% IO壓力就較大了,一般讀取速度有較多的wait.

  同時可以結合vmstat 檢視檢視b引數(等待資源的程序數)

  vmstat -1

  如果你想對硬碟做一個IO負荷的壓力測試可以用如下命令

  time dd if=/dev/zero bs=1M count=2048 of=direct_2G

  此命令為在當前目錄下新建一個2G的檔案

  我們在新建資料夾的同時來測試IO的負荷情況

  再通過如下指令碼檢視高峰的程序io情況

  monitor_io_stats.sh

  #!/bin/sh

  /etc/init.d/syslog stop

  echo 1 > /proc/sys/vm/block_dump

  sleep 60

  dmesg | awk '/(READ|WRITE|dirtied)/ {process[$1]++} END {for (x in process) \

  print process[x],x}' |sort -nr |awk '{print $2 " " $1}' | \

  head -n 10

  echo 0 > /proc/sys/vm/block_dump

  /etc/init.d/syslog start

  或者用iodump.pl指令碼