1. 程式人生 > >用工具快速定位資料庫問題

用工具快速定位資料庫問題

資料庫

女主宣言

我們經常會收到業務反饋“在麼? xx埠感覺訪問有點慢啊!” 在確認資料庫本身沒有問題(沒有down、沒有資料庫報錯)之後,就需要檢測伺服器的各項指標排查問題。今天就給大家介紹一個非常好用的檢測工具sar。

常見問題

在日常資料庫運維中,我們經常會遇到下面幾種情況:

資料庫卡慢

伺服器負載過高

伺服器異常重啟

遇到這些情況後,通常我們會使用一些工具來檢測伺服器的狀態。

強大的sysstat工具包

sysstat是一個軟體包,包含監測系統性能及效率的一組工具。

安裝

兩種安裝方式:

sudo yum install sysstat

git clone git://github.com/sysstat/sysstat

包含工具

sysstat工具集包含以下幾個常用工具:

iostat:用於監控系統裝置的IO負載情況。mpstat:用於多CPU環境下檢視各個可用CPU的狀態資訊。

pidstat:用於監控全部或指定程序佔用系統資源的情況。

sar:目前Linux上最為全面的系統性能分析工具之一,可以從多方面對系統的活動進行報告。

今天主要介紹一下功能強大的sar。

Sar

sar(System Activity Reporter系統活動情況報告)是目前 Linux 上最為全面的系統性能分析工具之一,sar 工具將對系統當前的狀態進行取樣,然後通過計算資料和比例從多方面顯示系統的當前執行狀態,包括:檔案的讀寫情況、系統呼叫的使用情況、磁碟I/O、CPU效率、記憶體使用狀況、程序活動及IPC(程序間通訊)有關的活動等。

特點

可以連續對系統取樣,獲得大量的取樣資料

取樣資料和分析的結果都可以存入檔案,所需的負載很小

sar 提供了豐富的選項,功能強大

Sar統計項

 磁碟I/O及資料傳輸速率統計資料

CPU統計資料

記憶體、特大頁和交換空間利用率統計資料

虛擬記憶體、分頁和故障統計資料

網路統計資料

程序建立統計資料

中斷統計資料

光纖通道的流量統計資料

NFS伺服器和客戶端活動統計資料

Socket統計資料

佇列及系統負載統計資料

核心內部表統計資料

TTY活動統計資料

檔案系統利用率統計資料

sar

通過圖解也可以看出來sar的功能相當強大,我們今天只介紹幾個對資料庫問題排查有幫助的引數。

1排查CPU問題

使用 -u 或 -p 引數 

報告CPU的統計資訊

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 。

使用 -q 引數 

報告程序佇列長度和平均負載狀態。

引數

輸出項說明:

runq-sz: 執行佇列的長度(等待執行的程序數)

plist-sz:程序列表中程序(processes)和執行緒(threads)的數量

ldavg-1: 最後1分鐘的系統平均負載(System load average)

ldavg-5: 過去5分鐘的系統平均負載

ldavg-15:過去15分鐘的系統平均負載

2排查記憶體問題

使用 -r  引數

報告記憶體和交換空間使用情況

輸出項說明:

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

使用 -W 引數

報告swap統計資料

swap

輸出項說明:

pswpin/s:系統交換至swap分割槽頁的數量

pswpout/s:系統交換出swap分割槽也的數量

使用 -B 引數

記憶體分頁情況統計資訊

輸出項說明:

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問題

使用 -b 引數

顯示I/O和磁碟讀寫速率的統計資訊

輸出項說明:

tps:    每秒鐘物理裝置的 I/O 傳輸總量。一個物理裝置的I/O請求,多次邏輯請求可以組合成一個特定裝置的I/O請求。

tps:    每秒鐘從物理裝置讀入的資料總量

wtps:   每秒鐘向物理裝置寫入的資料總量

bread/s:每秒鐘從物理裝置讀入的資料量,單位為 塊/s。高於2.4版本核心的塊的大小為512位元組。低版本核心塊的大小是不確定的

bwrtn/s:每秒鐘向物理裝置寫入的資料量,單位為 塊/s

使用 -u 或 -p 引數

可參考上面排查cpu問題裡的介紹。

使用 -d (-p)引數

裝置塊使用情況(適用於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 引數

網路統計報告

-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一線技術雜談