您在這裡

用iostat仔細分析Linux服務器上硬盤性能瓶頸

James Qi 在 2011年12月30日 - 10:42 發表

  前一陣子在服務器上更換、添加了硬盤後,感覺負載下降了一點、訪問速度快了一點,但似乎還是不能令人滿意,導入和更新數據的速度依然很慢,用戶浏覽也是有遲緩的感覺。

  從Linux服務器上運行top觀察,4枚4核的CPU總有空閑,高達64G或者48G的内存也很富餘,磁盤IO占用也不算多,究竟問題出在什麼地方呢?

  我們以前就用iostat觀察過硬盤io情況,一般都是在出現明顯問題的時候,臨時用iostat每隔1秒刷新來觀察實時情況。前天開始我們用iostat -x 3600的命令讓其3600秒(也就是1小時)為間隔來顯示一段時間内的io情況,并對顯示的參數進行詳細分析。

  其中一台服務器的記錄數據如下:

avg-cpu: %user %nice %system %iowait %steal %idle
          58.04 0.01 12.27 3.46 0.00 26.23

Device: rrqm/s wrqm/s r/s w/s rsec/s wsec/s avgrq-sz avgqu-sz await svctm %util
sda 0.13 25.57 1.00 8.83 57.46 275.20 33.87 0.02 2.23 0.80 0.79
sda1 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00
sda2 0.13 25.57 1.00 8.83 57.46 275.20 33.87 0.02 2.23 0.80 0.79
sdb 1.91 79.34 35.24 38.33 367.15 944.26 17.82 1.57 21.35 3.89 28.62
sdb1 1.91 79.34 35.24 38.33 367.15 944.26 17.82 1.57 21.35 3.89 28.62
sdc 0.49 30.12 37.57 63.02 479.84 745.35 12.18 7.26 72.17 2.18 21.97
sdc1 0.49 30.12 37.57 63.02 479.84 745.35 12.18 7.26 72.17 2.18 21.97
sdd 4.37 49.90 120.98 48.33 3050.92 786.54 22.66 3.22 19.00 2.23 37.82
sdd1 4.37 49.90 120.98 48.33 3050.92 786.54 22.66 3.22 19.00 2.23 37.82
sde 1.27 37.83 23.70 24.45 280.60 498.29 16.18 0.68 14.09 2.93 14.13
sde1 1.27 37.83 23.70 24.45 280.60 498.29 16.18 0.68 14.09 2.93 14.13
sdf 0.89 7.69 17.47 8.97 540.73 133.26 25.49 0.03 1.29 0.56 1.47
sdf1 0.89 7.69 17.47 8.97 540.73 133.26 25.49 0.03 1.29 0.56 1.47
dm-0 0.00 0.00 1.12 34.40 57.46 275.20 9.36 0.05 1.43 0.22 0.79
dm-1 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00

  我們重點觀察了await這個參數的情況,各個磁盤分析如下:

  • sda(1TB 7200轉普通藍盤,用作系統盤)2.23ms,利用率很低,沒有瓶頸
  • sdb(1TB 7200轉普通藍盤,用作Squid和Drupal文件緩存)21.35ms,小文件數量大,存在瓶頸問題
  • sdc(300GB 10000轉迅猛龍硬盤,用作主要數據庫文件)72.17ms,導入文件期間排隊等待明顯,瓶頸突出
  • sdd(300GB 10000轉迅猛龍硬盤,用作部分數據庫文件)19.00ms,分出的網站訪問量大,也存在瓶頸問題
  • sde(300TB 10000轉迅猛龍硬盤,用作Apache目錄和部分文件緩存)14.09ms,稍有瓶頸問題
  • sdf(64GB 固态硬盤,用作部分數據庫文件)1.29ms,硬盤性能最好,存放數據不算太多,沒有瓶頸問題

  根據以上數據分析,拿出改善的辦法如下:

  • 購入更多高速硬盤,來分擔現在的硬盤負載;
  • 将繁忙的數據庫文件分布在更多高速硬盤上;
  • 将Squid和Drupal文件緩存放置在高速硬盤上,讓小文件随機訪問更快;
  • 将需要很密集磁盤io的操作,例如數據導入、xmlsitemap生成、内部搜索索引生成逐個網站逐步實施,不要太集中,保證網站正常訪問優先;
  • 将需要很密集磁盤io操作的數據庫臨時遷移到性能最好的固态硬盤(甚至内存虛拟的硬盤)上進行,操作完畢再遷移到機械硬盤上去。

  這次又購置了6塊迅猛龍硬盤和2塊固态硬盤,準備明天就安裝到服務器上,元旦期間遷移數據,讓網站在節後的訪問更快速。

發表新回應

Plain text

  • 不允許使用 HTML 標籤。
  • 自動將網址與電子郵件地址轉變為連結。
  • 自動斷行和分段。