《用工具快速定位數據庫問題》要點:
本文介紹了用工具快速定位數據庫問題,希望對您有用。如果有疑問,可以聯系我們。
女主宣言
我們經常會收到業務反饋“在么? xx端口感覺訪問有點慢啊!” 在確認數據庫本身沒有問題(沒有down、沒有數據庫報錯)之后,就需要檢測服務器的各項指標排查問題.今天就給大家介紹一個非常好用的檢測工具sar.
在日常數據庫運維中,我們經常會遇到下面幾種情況:
數據庫卡慢
服務器負載過高
服務器異常重啟
遇到這些情況后,通常我們會使用一些工具來檢測服務器的狀態.
sysstat是一個軟件包,包含監測系統性能及效率的一組工具.
兩種安裝方式:
sudo yum install sysstat
git clone git://github.com/sysstat/sysstat
sysstat工具集包含以下幾個常用工具:
pidstat:用于監控全部或指定進程占用系統資源的情況.
sar:目前Linux上最為全面的系統性能分析工具之一,可以從多方面對系統的活動進行報告.
今天主要介紹一下功能強大的sar.
sar(System Activity Reporter系統活動情況報告)是目前 Linux 上最為全面的系統性能分析工具之一,sar 工具將對系統當前的狀態進行取樣,然后通過計算數據和比例從多方面顯示系統的當前運行狀態,包括:文件的讀寫情況、系統調用的使用情況、磁盤I/O、CPU效率、內存使用狀況、進程活動及IPC(進程間通信)有關的活動等.
可以連續對系統取樣,獲得大量的取樣數據
取樣數據和分析的結果都可以存入文件,所需的負載很小
sar 提供了豐富的選項,功能強大
?磁盤I/O及數據傳輸速率統計數據
CPU統計數據
內存、特大頁和交換空間利用率統計數據
虛擬內存、分頁和故障統計數據
網絡統計數據
進程創建統計數據
中斷統計數據
光纖通道的流量統計數據
NFS服務器和客戶端活動統計數據
Socket統計數據
隊列及系統負載統計數據
內核內部表統計數據
TTY活動統計數據
文件系統利用率統計數據
通過圖解也可以看出來sar的功能相當強大,我們今天只介紹幾個對數據庫問題排查有幫助的參數.
1排查CPU問題
報告CPU的統計信息
輸出項說明:
CPU:????? all 表示統計信息為所有 CPU 的平均值.
%user:??? 用戶級別(application)運行使用CPU 總時間的百分比.
%nice:??? 用戶級別,用于nice操作所占用 CPU 總時間的百分比(nice命令用于改變進程的優先級)
%system:? 內核級別(kernel)運行所使用 CPU 總時間的百分比.
%iowait:? 等待I/O操作占用 CPU 總時間的百分比.
%steal:?? 管理程序為另一個虛擬進程提供服務而等待虛擬CPU的百分比
%idle: ???CPU 空閑時間占用 CPU 總時間的百分比.
分析:
若 %iowait 的值過高,表示硬盤存在I/O瓶頸.
若 %idle 的值高但系統響應慢時,有可能是 CPU 等待分配內存,此時應加大內存容量.
若 %idle 的值持續低于1,則系統的 CPU 處理能力相對較低,表明系統中最需要解決的資源是 CPU .
報告進程隊列長度和平均負載狀態.
輸出項說明:
runq-sz: 運行隊列的長度(等待運行的進程數)
plist-sz:進程列表中進程(processes)和線程(threads)的數量
ldavg-1: 最后1分鐘的系統平均負載(System load average)
ldavg-5: 過去5分鐘的系統平均負載
ldavg-15:過去15分鐘的系統平均負載
2排查內存問題
報告內存和交換空間使用情況
輸出項說明:
kbmemfree:可用內存(kb).這個值和free命令中的free值基本一致,所以它不包括buffer和cache的空間.
kbmemused:已用內存(kb).但是不包括內核本身使用的內存,這個值和free命令中的used值基本一致,所以它包括buffer和cache的空間.
%memused: 內存使用百分比.這個值是kbmemused和內存總量(不包括swap)的一個百分比.
kbbuffers:內核本身用于buffers使用的內存(kb)
kbcached: 內核本身用于cached使用的內存(kb)
kbbuffers和kbcached:這兩個值就是free命令中的buffer和cache.
kbswpfree:剩余swap空間(kb)
kbswpused:已用swap空間(kb)
%swpused: swap使用百分比
kbswpcad: swap與內存的交換緩存值.內存中的數據交換至swap
報告swap統計數據
輸出項說明:
pswpin/s:系統交換至swap分區頁的數量
pswpout/s:系統交換出swap分區也的數量
內存分頁情況統計信息
輸出項說明:
pgpgin/s:表示每秒從磁盤或SWAP置換到內存的字節數(KB).低版本內核(2.2.x),這個值表示每秒置換的塊數.
pgpgout/s:表示每秒從內存置換到磁盤或SWAP的字節數(KB).
fault/s:每秒鐘系統產生的缺頁數(major + minor)(2.5版本的內核)缺頁中斷并不一定產生I/O.
majflt/s:每秒鐘產生的主缺頁數,需要從磁盤加載到內存中1的數據頁(2.5版本的內核報告).
說明:
高分頁操作是內存缺乏的信號.
3排查I/O問題
顯示I/O和磁盤讀寫速率的統計信息
輸出項說明:
tps:??? 每秒鐘物理設備的 I/O 傳輸總量.一個物理設備的I/O請求,多次邏輯請求可以組合成一個特定設備的I/O請求.
tps:??? 每秒鐘從物理設備讀入的數據總量
wtps:?? 每秒鐘向物理設備寫入的數據總量
bread/s:每秒鐘從物理設備讀入的數據量,單位為 塊/s.高于2.4版本內核的塊的大小為512字節.低版本內核塊的大小是不確定的
bwrtn/s:每秒鐘向物理設備寫入的數據量,單位為 塊/s
可參考上面排查cpu問題里的介紹.
設備塊使用情況(適用于2.4及更新的內核)
輸出項說明:
tps:每秒從物理磁盤I/O的次數.多個邏輯請求會被合并為一個I/O磁盤請求,一次傳輸的大小是不確定的.
rd_sec/s:每秒讀扇區的次數.扇區的大小為512b
wr_sec/s:每秒寫扇區的次數.扇區的大小為512b
avgrq-sz:平均每次設備I/O操作的數據大小(扇區).
avgqu-sz:磁盤請求隊列的平均長度.
await:從請求磁盤操作到系統完成處理,每次請求的平均消耗時間,包括請求隊列等待時間,單位是毫秒(1秒=1000毫秒).
svctm:磁盤I/O請求到設備的平均服務時間(以毫秒為單位)
%util:磁盤I/O請求到設備的CPU平均百分比(設備寬帶利用率)???????????????? 當這個值接近100%的時候,表示設備繁忙.
說明:
?avgqu-sz的值較低時,設備的利用率較高.
當%util的值接近 1 時,表示設備帶寬已經占滿.
當數據顯示時,使用的設備規范為:dev m-n.
m是設備的主設備號,最新的內核(2.5+),n是次設備號,但2.5版本之前的內核,只有一個序列數.
如果使用-p 參數,設備名稱也可能是可打印形式.
也就是說:參數-p可以打印出sda,hdc等磁盤設備名稱,如果不用參數-p,設備節點則有可能是dev8-0,dev22-0.
某些2.4版本的內核,avgqu-sz, await, svctm 和 %uti可能是不可用,顯示為0.00.
4排查網卡流量問題
網絡統計報告
-n 參數對應不同的關鍵字時報告不同的信息:
DEV關鍵字,報告網絡統計數據.
EDEV關鍵字,針對網絡設備匯報其失敗情況
NFS關鍵字,針對NFS客戶端進行匯報.
NFSD關鍵字,針對NFS服務端進行匯報.
SOCK關鍵字,對用戶使用的sockets進行匯報
ALL關鍵字,針對上述所有網絡信息進行匯報
通常情況下,我們只關注網卡流量,即使用-n DEV 參數
輸出項說明:
IFACE:就是網4絡設備的名稱
rxerr/s:每秒鐘接收到的損壞的包的數目
txerr/s:當發送包時,每秒鐘發生的錯誤數
coll/s:當發送包時,每秒鐘發生的沖撞(collisions)數(這個是在半雙工模式下才有)
rxdrop/s:由于緩沖區滿,網絡設備接收端,每秒鐘丟掉的網絡包的數目
txdrop/s:由于緩沖區滿,網絡設備發送端,每秒鐘丟掉的網絡包的數目
txcarr/s:當發送數據包時,每秒鐘載波錯誤發生的次數
rxfram/s:在接收數據包時,每秒鐘發生的幀對齊錯誤的次數
rxfifo/s:在接收數據包時,每秒鐘緩沖區溢出錯誤發生的次數
txfifo/s:在發送數據包時,每秒鐘緩沖區溢出錯誤發生的次數
以上就是數據庫排查過程中,常用到的sar的參數.
文章來自微信公眾號:HULK一線技術雜談
轉載請注明本頁網址:
http://www.snjht.com/jiaocheng/1980.html