我們經(jīng)常會收到業(yè)務(wù)反饋“在么? xx端口感覺訪問有點慢熬嘲碱!” 在確認(rèn)數(shù)據(jù)庫本身沒有問題(沒有down麦锯、沒有數(shù)據(jù)庫報錯)之后,就需要檢測服務(wù)器的各項指標(biāo)排查問題鹅巍。今天就給大家介紹一個非常好用的檢測工具sar。
常見問題
在日常數(shù)據(jù)庫運維中澎羞,我們經(jīng)常會遇到下面幾種情況:
數(shù)據(jù)庫卡慢
服務(wù)器負(fù)載過高
服務(wù)器異常重啟
遇到這些情況后妆绞,通常我們會使用一些工具來檢測服務(wù)器的狀態(tài)枫攀。
強大的sysstat工具包
sysstat是一個軟件包脓豪,包含監(jiān)測系統(tǒng)性能及效率的一組工具。
安裝
兩種安裝方式:
sudo yum install sysstat
git clone git://github.com/sysstat/sysstat
包含工具
sysstat工具集包含以下幾個常用工具:
iostat:用于監(jiān)控系統(tǒng)設(shè)備的IO負(fù)載情況。mpstat:用于多CPU環(huán)境下查看各個可用CPU的狀態(tài)信息笤闯。
pidstat:用于監(jiān)控全部或指定進(jìn)程占用系統(tǒng)資源的情況颗味。
sar:目前Linux上最為全面的系統(tǒng)性能分析工具之一牺弹,可以從多方面對系統(tǒng)的活動進(jìn)行報告。
今天主要介紹一下功能強大的sar晶默。
Sar
sar(System Activity Reporter系統(tǒng)活動情況報告)是目前 Linux 上最為全面的系統(tǒng)性能分析工具之一磺陡,sar 工具將對系統(tǒng)當(dāng)前的狀態(tài)進(jìn)行取樣漠畜,然后通過計算數(shù)據(jù)和比例從多方面顯示系統(tǒng)的當(dāng)前運行狀態(tài)憔狞,包括:文件的讀寫情況、系統(tǒng)調(diào)用的使用情況拍冠、磁盤I/O倦微、CPU效率、內(nèi)存使用狀況责球、進(jìn)程活動及IPC(進(jìn)程間通信)有關(guān)的活動等。
特點
可以連續(xù)對系統(tǒng)取樣拓劝,獲得大量的取樣數(shù)據(jù)
取樣數(shù)據(jù)和分析的結(jié)果都可以存入文件雏逾,所需的負(fù)載很小
sar 提供了豐富的選項,功能強大
Sar統(tǒng)計項
?磁盤I/O及數(shù)據(jù)傳輸速率統(tǒng)計數(shù)據(jù)
CPU統(tǒng)計數(shù)據(jù)
內(nèi)存郑临、特大頁和交換空間利用率統(tǒng)計數(shù)據(jù)
虛擬內(nèi)存栖博、分頁和故障統(tǒng)計數(shù)據(jù)
網(wǎng)絡(luò)統(tǒng)計數(shù)據(jù)
進(jìn)程創(chuàng)建統(tǒng)計數(shù)據(jù)
中斷統(tǒng)計數(shù)據(jù)
光纖通道的流量統(tǒng)計數(shù)據(jù)
NFS服務(wù)器和客戶端活動統(tǒng)計數(shù)據(jù)
Socket統(tǒng)計數(shù)據(jù)
隊列及系統(tǒng)負(fù)載統(tǒng)計數(shù)據(jù)
內(nèi)核內(nèi)部表統(tǒng)計數(shù)據(jù)
TTY活動統(tǒng)計數(shù)據(jù)
文件系統(tǒng)利用率統(tǒng)計數(shù)據(jù)
通過圖解也可以看出來sar的功能相當(dāng)強大,我們今天只介紹幾個對數(shù)據(jù)庫問題排查有幫助的參數(shù)厢洞。
1排查CPU問題
使用 -u 或 -p 參數(shù)?
報告CPU的統(tǒng)計信息
輸出項說明:
CPU:????? all 表示統(tǒng)計信息為所有 CPU 的平均值仇让。
%user:??? 用戶級別(application)運行使用CPU 總時間的百分比躺翻。
%nice:??? 用戶級別丧叽,用于nice操作所占用 CPU 總時間的百分比(nice命令用于改變進(jìn)程的優(yōu)先級)
%system:? 內(nèi)核級別(kernel)運行所使用 CPU 總時間的百分比。
%iowait:? 等待I/O操作占用 CPU 總時間的百分比公你。
%steal:?? 管理程序為另一個虛擬進(jìn)程提供服務(wù)而等待虛擬CPU的百分比
%idle: ???CPU 空閑時間占用 CPU 總時間的百分比踊淳。
分析:
若 %iowait 的值過高,表示硬盤存在I/O瓶頸陕靠。
若 %idle 的值高但系統(tǒng)響應(yīng)慢時迂尝,有可能是 CPU 等待分配內(nèi)存,此時應(yīng)加大內(nèi)存容量剪芥。
若 %idle 的值持續(xù)低于1垄开,則系統(tǒng)的 CPU 處理能力相對較低,表明系統(tǒng)中最需要解決的資源是 CPU 粗俱。
使用 -q 參數(shù)?
報告進(jìn)程隊列長度和平均負(fù)載狀態(tài)说榆。
輸出項說明:
runq-sz: 運行隊列的長度(等待運行的進(jìn)程數(shù))
plist-sz:進(jìn)程列表中進(jìn)程(processes)和線程(threads)的數(shù)量
ldavg-1: 最后1分鐘的系統(tǒng)平均負(fù)載(System load average)
ldavg-5: 過去5分鐘的系統(tǒng)平均負(fù)載
ldavg-15:過去15分鐘的系統(tǒng)平均負(fù)載
2排查內(nèi)存問題
使用 -r ?參數(shù)
報告內(nèi)存和交換空間使用情況
輸出項說明:
kbmemfree:可用內(nèi)存(kb)。這個值和free命令中的free值基本一致,所以它不包括buffer和cache的空間.
kbmemused:已用內(nèi)存(kb)寸认。但是不包括內(nèi)核本身使用的內(nèi)存签财,這個值和free命令中的used值基本一致,所以它包括buffer和cache的空間.
%memused: 內(nèi)存使用百分比。這個值是kbmemused和內(nèi)存總量(不包括swap)的一個百分比.
kbbuffers:內(nèi)核本身用于buffers使用的內(nèi)存(kb)
kbcached: 內(nèi)核本身用于cached使用的內(nèi)存(kb)
kbbuffers和kbcached:這兩個值就是free命令中的buffer和cache.
kbswpfree:剩余swap空間(kb)
kbswpused:已用swap空間(kb)
%swpused: swap使用百分比
kbswpcad: swap與內(nèi)存的交換緩存值偏塞。內(nèi)存中的數(shù)據(jù)交換至swap
使用 -W 參數(shù)
報告swap統(tǒng)計數(shù)據(jù)
輸出項說明:
pswpin/s:系統(tǒng)交換至swap分區(qū)頁的數(shù)量
pswpout/s:系統(tǒng)交換出swap分區(qū)也的數(shù)量
使用 -B 參數(shù)
內(nèi)存分頁情況統(tǒng)計信息
輸出項說明:
pgpgin/s:表示每秒從磁盤或SWAP置換到內(nèi)存的字節(jié)數(shù)(KB)唱蒸。低版本內(nèi)核(2.2.x),這個值表示每秒置換的塊數(shù)灸叼。
pgpgout/s:表示每秒從內(nèi)存置換到磁盤或SWAP的字節(jié)數(shù)(KB)神汹。
fault/s:每秒鐘系統(tǒng)產(chǎn)生的缺頁數(shù)(major + minor)(2.5版本的內(nèi)核)缺頁中斷并不一定產(chǎn)生I/O庆捺。
majflt/s:每秒鐘產(chǎn)生的主缺頁數(shù),需要從磁盤加載到內(nèi)存中1的數(shù)據(jù)頁(2.5版本的內(nèi)核報告)屁魏。
說明:
高分頁操作是內(nèi)存缺乏的信號滔以。
3排查I/O問題
使用 -b 參數(shù)
顯示I/O和磁盤讀寫速率的統(tǒng)計信息
輸出項說明:
tps:??? 每秒鐘物理設(shè)備的 I/O 傳輸總量。一個物理設(shè)備的I/O請求氓拼,多次邏輯請求可以組合成一個特定設(shè)備的I/O請求你画。
tps:??? 每秒鐘從物理設(shè)備讀入的數(shù)據(jù)總量
wtps:?? 每秒鐘向物理設(shè)備寫入的數(shù)據(jù)總量
bread/s:每秒鐘從物理設(shè)備讀入的數(shù)據(jù)量,單位為 塊/s桃漾。高于2.4版本內(nèi)核的塊的大小為512字節(jié)坏匪。低版本內(nèi)核塊的大小是不確定的
bwrtn/s:每秒鐘向物理設(shè)備寫入的數(shù)據(jù)量,單位為 塊/s
使用 -u 或 -p 參數(shù)
可參考上面排查cpu問題里的介紹撬统。
使用 -d (-p)參數(shù)
設(shè)備塊使用情況(適用于2.4及更新的內(nèi)核)
輸出項說明:
tps:每秒從物理磁盤I/O的次數(shù).多個邏輯請求會被合并為一個I/O磁盤請求,一次傳輸?shù)拇笮∈遣淮_定的.
rd_sec/s:每秒讀扇區(qū)的次數(shù).扇區(qū)的大小為512b
wr_sec/s:每秒寫扇區(qū)的次數(shù).扇區(qū)的大小為512b
avgrq-sz:平均每次設(shè)備I/O操作的數(shù)據(jù)大小(扇區(qū)).
avgqu-sz:磁盤請求隊列的平均長度.
await:從請求磁盤操作到系統(tǒng)完成處理,每次請求的平均消耗時間,包括請求隊列等待時間,單位是毫秒(1秒=1000毫秒).
svctm:磁盤I/O請求到設(shè)備的平均服務(wù)時間(以毫秒為單位)
%util:磁盤I/O請求到設(shè)備的CPU平均百分比(設(shè)備寬帶利用率)???????????????? 當(dāng)這個值接近100%的時候适滓,表示設(shè)備繁忙。
說明:
?avgqu-sz的值較低時恋追,設(shè)備的利用率較高凭迹。
當(dāng)%util的值接近 1 時,表示設(shè)備帶寬已經(jīng)占滿几于。
當(dāng)數(shù)據(jù)顯示時蕊苗,使用的設(shè)備規(guī)范為:dev m-n。
m是設(shè)備的主設(shè)備號沿彭,最新的內(nèi)核(2.5+),n是次設(shè)備號尖滚,但2.5版本之前的內(nèi)核喉刘,只有一個序列數(shù)。
如果使用-p 參數(shù)漆弄,設(shè)備名稱也可能是可打印形式睦裳。
也就是說:參數(shù)-p可以打印出sda,hdc等磁盤設(shè)備名稱,如果不用參數(shù)-p,設(shè)備節(jié)點則有可能是dev8-0,dev22-0。
某些2.4版本的內(nèi)核撼唾,avgqu-sz, await, svctm 和 %uti可能是不可用廉邑,顯示為0.00。
4排查網(wǎng)卡流量問題
使用-n DEV 參數(shù)
網(wǎng)絡(luò)統(tǒng)計報告
-n 參數(shù)對應(yīng)不同的關(guān)鍵字時報告不同的信息:
DEV關(guān)鍵字倒谷,報告網(wǎng)絡(luò)統(tǒng)計數(shù)據(jù)蛛蒙。
EDEV關(guān)鍵字,針對網(wǎng)絡(luò)設(shè)備匯報其失敗情況
NFS關(guān)鍵字渤愁,針對NFS客戶端進(jìn)行匯報牵祟。
NFSD關(guān)鍵字,針對NFS服務(wù)端進(jìn)行匯報抖格。
SOCK關(guān)鍵字诺苹,對用戶使用的sockets進(jìn)行匯報
ALL關(guān)鍵字咕晋,針對上述所有網(wǎng)絡(luò)信息進(jìn)行匯報
通常情況下,我們只關(guān)注網(wǎng)卡流量收奔,即使用-n DEV 參數(shù)
輸出項說明:
IFACE:就是網(wǎng)4絡(luò)設(shè)備的名稱
rxerr/s:每秒鐘接收到的損壞的包的數(shù)目
txerr/s:當(dāng)發(fā)送包時掌呜,每秒鐘發(fā)生的錯誤數(shù)
coll/s:當(dāng)發(fā)送包時,每秒鐘發(fā)生的沖撞(collisions)數(shù)(這個是在半雙工模式下才有)
rxdrop/s:由于緩沖區(qū)滿坪哄,網(wǎng)絡(luò)設(shè)備接收端质蕉,每秒鐘丟掉的網(wǎng)絡(luò)包的數(shù)目
txdrop/s:由于緩沖區(qū)滿,網(wǎng)絡(luò)設(shè)備發(fā)送端损姜,每秒鐘丟掉的網(wǎng)絡(luò)包的數(shù)目
txcarr/s:當(dāng)發(fā)送數(shù)據(jù)包時饰剥,每秒鐘載波錯誤發(fā)生的次數(shù)
rxfram/s:在接收數(shù)據(jù)包時,每秒鐘發(fā)生的幀對齊錯誤的次數(shù)
rxfifo/s:在接收數(shù)據(jù)包時摧阅,每秒鐘緩沖區(qū)溢出錯誤發(fā)生的次數(shù)
txfifo/s:在發(fā)送數(shù)據(jù)包時汰蓉,每秒鐘緩沖區(qū)溢出錯誤發(fā)生的次數(shù)
以上就是數(shù)據(jù)庫排查過程中,常用到的sar的參數(shù)棒卷。