天天看點

SE LINUX下磁盤IO性能監測分析

  這兩天發現一台測試用的伺服器經常負載很高,但cpu和記憶體消耗卻很少,很是奇怪,經過診斷發現是由于大容量的測試資料導緻高并發下的磁盤IO消耗比較大,由于緩存是小檔案并且數量比較大,是以并發比較高的情況下Io消耗非常大。 那怎樣才能快速的定位到并發高是由于磁盤io開銷大呢?

一、用 top 指令中的 資訊進行觀察

SE LINUX下磁盤IO性能監測分析

2011-8-17 20:55:37 上傳

下載下傳附件 (51.98 KB)

劃紅線的參數解釋如下:

  1. Tasks: 437 total 程序總數
  2. 4 running 正在運作的程序數
  3. 430 sleeping 睡眠的程序數
  4. 3 stopped 停止的程序數
  5. 0 zombie 僵屍程序數
  6. Cpu(s):
  7. 7.1% us 使用者空間占用CPU百分比
  8. 4.2% sy 核心空間占用CPU百分比
  9. 0.0% ni 使用者程序空間内改變過優先級的程序占用CPU百分比
  10. 76.8% id 空閑CPU百分比
  11. 12% wa 等待輸入輸出的CPU時間百分比
  12. 12% wa 的百分比可以大緻的展現出目前等待輸入輸出的磁盤io請求過于頻繁。

複制代碼

為進一步分析,我們跟蹤關鍵程序定位程式

#strace  -p  28644  (如圖示占用CPU較高)

SE LINUX下磁盤IO性能監測分析

下載下傳附件 (45.23 KB)

說明在多線程條件下,如果并發操作過于頻繁,semtimedop會調用失敗,Input/output  出錯。

進一步定位到程式 #ps  -ef | grep  28644

SE LINUX下磁盤IO性能監測分析

下載下傳附件 (8.88 KB)

可以知道是ora_lgwr_nms程式導緻的讀寫開銷比較大。

二、利用IOSTAT指令觀察

磁盤的IO性能是衡量計算機總體性能的一個重要名額。Linux提供了iostat指令來獲卻磁盤輸入/輸出(即IO)統計資訊。

#iostat  -x   1  統計完整的結果,每秒一次。

SE LINUX下磁盤IO性能監測分析

下載下傳附件 (47.84 KB)

iowait的值比較大,說明讀寫頻繁。

#iostat  -p   1統計各個分區的讀寫情況,每秒1次。

SE LINUX下磁盤IO性能監測分析

下載下傳附件 (43.1 KB)

使用 #mount  指令,來對應查找就知道sda5對應的/opt分區和sdb8對應的/data分區讀寫頻繁。

SE LINUX下磁盤IO性能監測分析

下載下傳附件 (36.17 KB)

再定位到DATA分區,檢視資料庫歸檔情況,發現一分鐘内歸檔産生四個文檔并且每個檔案有48M這麼大,寫入應該非常頻繁,導緻磁盤IO開銷比較大。

SE LINUX下磁盤IO性能監測分析

下載下傳附件 (80.37 KB)

  而OPT分區由于有FTP傳輸到導緻磁盤開銷比較大。

分析定位完畢,針對相關問題調整FTP和資料庫歸檔,然後再看一下都正常了。

SE LINUX下磁盤IO性能監測分析

下載下傳附件 (50.63 KB)

SE LINUX下磁盤IO性能監測分析
  1. IOPS = 1000 / (3 + 60000/7200/2) = 140
  2. IOPS = 1000 / (3 + 60000/10000/2) = 167
  3. IOPS = 1000 / (3 + 60000/15000/2) = 200

繼續閱讀