先簡單描述下常用的磁碟效能指標,用來指導iowait問題分析定位
指標描述
每秒 i/o 數
一次磁碟的連續讀或者連續寫稱為一次磁碟 i/o, 磁碟的 iops =每秒磁碟連續讀次數+每秒磁碟連續寫次數。傳輸小塊不連續資料時,參考該指標進行衡量
吞吐量硬碟傳輸資料流的速度,傳輸資料速度=讀出資料+寫入資料。傳輸大塊不連續資料的資料,參考該指標進行衡量
平均 i/o 資料尺寸
為吞吐量除以 i/o 數目,該指針對揭示磁碟使用模式有重要意義。資料尺寸小於 32k,可認為磁碟使用模式以隨機訪問為主;反之,可認為磁碟使用模式以順序訪問為主。
磁碟活動時間百分比
即磁碟利用率。如果磁碟利用率超過 70%,應用程序將花費較長的時間等待 i/o完成,因為絕大多數程序在等待過程中將被阻塞或休眠。
服務時間
指磁碟讀或寫操作執行的時間,包括尋道,旋轉時延,和資料傳輸等時間。其大小一般和磁碟效能有關,cpu/mem的負荷也會對其有影響,請求過多也會間接導致服務時間的增加。如果該值持續超過 20ms,一般可考慮會對上層應用產生影響。
i/o 等待佇列長度
指待處理的 i/o 請求的數目,如果 i/o 請求壓力持續超出磁碟處理能力,該值將增加。需要注意的是,如果該磁碟為磁碟陣列虛擬的邏輯驅動器,需要再將該值除以組成這個邏輯驅動器的實際物理磁碟數目,以獲得平均單塊硬碟的i/o 等待佇列長度
等待時間
指磁碟讀或寫操作等待執行的時間,即在佇列中排隊的時間。如果 i/o 請求持續超出磁碟處理能力,意味著來不及處理的 i/o 請求不得不在佇列中等待較長時間。
是系統因為io導致的程序wait。系統在做io,導致沒有程序在幹活,cpu在執行idle程序空轉。
所以iowait的產生要滿足兩個條件:
iowait實際測量的是cpu時間
linux常用命令中有很多都具備該選項:top、sar、vmstat、mpstat、dstat等等
查詢哪塊磁碟正在被寫入
iostat
命令詳解可以參考 linux命令—iostat
查詢引起高i/o wait 對應的程序
iotop
命令詳解可參考 linux命令—iotop
查詢哪個檔案引起的i/owait
lsof -p pid
命令詳解可參考 linux命令—lsof
lsof 命令可以展示乙個程序開啟的所有檔案,或者開啟乙個檔案的所有程序
pt-ioprofile定位負載**檔案(完全可以替代3)
pt-ioprofile的原理是對某個pid附加乙個strace程序進行io分析
預設引數下該工具展示的是io占用的時間
[root@db25440 ~]# pt-ioprofile -p=25129
thu may 17
18:48:35 cst 2018
tracing process id 25129
total pwrite write fsync fdatasync open filename
11.709016
0.000000
2.634413
0.000000
9.074603
0.000000 /my/log/mysql-bin.001200
9.093400
2.966219
0.000000
6.127181
0.000000
0.000000 /my/base/ib_logfile3
0.000419 0.000000
0.000000
0.000000
0.000000
0.000419 /dev/urandom
[root@db25440 ~]#
對於定位問題更有用的是通過io的吞吐量來進行定位。使用引數 –cell=sizes,該引數將結果已 b/s 的方式展示出來
[root@db25440 ~]# pt-ioprofile -p=25129 -c=sizes
thu may 17
18:49:25 cst 2018
tracing process id 25129
total pwrite write fsync fdatasync open filename
40917504
4091750400
00 /my/base/ib_logfile3
14300748
01430074800
0 /my/log/mysql-bin.00120000
0000 /dev/urandom
[root@db25440 ~]#
如果正常執行iowait並不高,突然間高了,可能是系統訪問量大了,最大的可能是磁碟滿了~高速cpu會造成很高的iowait值,但這並不代表磁碟是系統的瓶頸。唯一能說明磁碟是系統瓶頸的方法,就是很高的read/write時間,一般來說超過20ms(這個具體計算一下~linux命令—iostat),就代表了不太正常的磁碟效能。當i/o等待時間所佔cpu時間的比重很高時,首先檢查機器是否正在大量使用交換空間,因為硬碟操作的速度遠遠低於ram,所以當系統記憶體耗盡,開始使用交換空間的時候,系統的效能會受到嚴重影響。任何想要訪問硬碟的操作都要完成與硬碟的i/o交換。所以,故障排除的第一步是看記憶體是否耗盡,如果是,先解決這個問題。如果還有大量可用的ram,需要明確哪個程序占用了大部分i/o操作。
定位IOWait高的一些方法和工具
定位iowait高的一些方法和工具 在linux效能分析時經常使用的工具包括 top,iostat,vmstat等 iowait高的一些處理方法 1 檢查raid的狀態,比如是否正在重建或者沒有初始化 2 替換作業系統的核心,最好使用發行版標準的linux kernel,因為有比較多的補丁 3 檢查...
CSS定位問題
在看這篇文章是,希望大家對css盒式模型有所了解,不清楚的點這裡。一 定位概述 在說明定位問題前,我們先聊聊div這個元素。通常我們把p h1或div元素常常稱為塊級元素。這意味著這些元素顯示為一塊內容,即 塊框 塊框從上到下乙個接乙個地垂直排列。與之相反,strong和span等元素稱為行內元素,...
絕對定位問題
一 使用絕對定位元素水平居中 1.需要設定高度 高度已知 element2.css3 transform代替margin,不過瀏覽器對其支援度低 ie10以上,高度可以不設定 element 3.margin 0 auto居中 top right bottom left均為0,高度可以不設定 ele...