本篇文章為大家展示了如何用用工具快速定位數(shù)據(jù)庫問題,內(nèi)容簡明扼要并且容易理解,絕對能使你眼前一亮,通過這篇文章的詳細介紹希望你能有所收獲。
我們提供的服務有:成都網(wǎng)站設計、網(wǎng)站建設、微信公眾號開發(fā)、網(wǎng)站優(yōu)化、網(wǎng)站認證、望奎ssl等。為數(shù)千家企事業(yè)單位解決了網(wǎng)站和推廣的問題。提供周到的售前咨詢和貼心的售后服務,是有科學管理、有技術的望奎網(wǎng)站制作公司
我們經(jīng)常會收到業(yè)務反饋“在么? xx端口感覺訪問有點慢啊!” 在確認數(shù)據(jù)庫本身沒有問題(沒有down、沒有數(shù)據(jù)庫報錯)之后,就需要檢測服務器的各項指標排查問題。今天就給大家介紹一個非常好用的檢測工具sar。
常見問題
在日常數(shù)據(jù)庫運維中,我們經(jīng)常會遇到下面幾種情況:
數(shù)據(jù)庫卡慢
服務器負載過高
服務器異常重啟
遇到這些情況后,通常我們會使用一些工具來檢測服務器的狀態(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)設備的IO負載情況。mpstat:用于多CPU環(huán)境下查看各個可用CPU的狀態(tài)信息。
pidstat:用于監(jiān)控全部或指定進程占用系統(tǒng)資源的情況。
sar:目前Linux上最為全面的系統(tǒng)性能分析工具之一,可以從多方面對系統(tǒng)的活動進行報告。
今天主要介紹一下功能強大的sar。
Sar
sar(System Activity Reporter系統(tǒng)活動情況報告)是目前 Linux 上最為全面的系統(tǒng)性能分析工具之一,sar 工具將對系統(tǒng)當前的狀態(tài)進行取樣,然后通過計算數(shù)據(jù)和比例從多方面顯示系統(tǒng)的當前運行狀態(tài),包括:文件的讀寫情況、系統(tǒng)調(diào)用的使用情況、磁盤I/O、CPU效率、內(nèi)存使用狀況、進程活動及IPC(進程間通信)有關的活動等。
特點
可以連續(xù)對系統(tǒng)取樣,獲得大量的取樣數(shù)據(jù)
取樣數(shù)據(jù)和分析的結(jié)果都可以存入文件,所需的負載很小
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)絡統(tǒng)計數(shù)據(jù)
進程創(chuàng)建統(tǒng)計數(shù)據(jù)
中斷統(tǒng)計數(shù)據(jù)
光纖通道的流量統(tǒng)計數(shù)據(jù)
NFS服務器和客戶端活動統(tǒng)計數(shù)據(jù)
Socket統(tǒng)計數(shù)據(jù)
隊列及系統(tǒng)負載統(tǒng)計數(shù)據(jù)
內(nèi)核內(nèi)部表統(tǒng)計數(shù)據(jù)
TTY活動統(tǒng)計數(shù)據(jù)
文件系統(tǒng)利用率統(tǒng)計數(shù)據(jù)
通過圖解也可以看出來sar的功能相當強大,我們今天只介紹幾個對數(shù)據(jù)庫問題排查有幫助的參數(shù)。
1排查CPU問題
使用 -u 或 -p 參數(shù)
報告CPU的統(tǒng)計信息
輸出項說明:
CPU: all 表示統(tǒng)計信息為所有 CPU 的平均值。
%user: 用戶級別(application)運行使用CPU 總時間的百分比。
%nice: 用戶級別,用于nice操作所占用 CPU 總時間的百分比(nice命令用于改變進程的優(yōu)先級)
%system: 內(nèi)核級別(kernel)運行所使用 CPU 總時間的百分比。
%iowait: 等待I/O操作占用 CPU 總時間的百分比。
%steal: 管理程序為另一個虛擬進程提供服務而等待虛擬CPU的百分比
%idle: CPU 空閑時間占用 CPU 總時間的百分比。
分析:
若 %iowait 的值過高,表示硬盤存在I/O瓶頸。
若 %idle 的值高但系統(tǒng)響應慢時,有可能是 CPU 等待分配內(nèi)存,此時應加大內(nèi)存容量。
若 %idle 的值持續(xù)低于1,則系統(tǒng)的 CPU 處理能力相對較低,表明系統(tǒng)中最需要解決的資源是 CPU 。
使用 -q 參數(shù)
報告進程隊列長度和平均負載狀態(tài)。
輸出項說明:
runq-sz: 運行隊列的長度(等待運行的進程數(shù))
plist-sz:進程列表中進程(processes)和線程(threads)的數(shù)量
ldavg-1: ***1分鐘的系統(tǒng)平均負載(System load average)
ldavg-5: 過去5分鐘的系統(tǒng)平均負載
ldavg-15:過去15分鐘的系統(tǒng)平均負載
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: 每秒鐘物理設備的 I/O 傳輸總量。一個物理設備的I/O請求,多次邏輯請求可以組合成一個特定設備的I/O請求。
tps: 每秒鐘從物理設備讀入的數(shù)據(jù)總量
wtps: 每秒鐘向物理設備寫入的數(shù)據(jù)總量
bread/s:每秒鐘從物理設備讀入的數(shù)據(jù)量,單位為 塊/s。高于2.4版本內(nèi)核的塊的大小為512字節(jié)。低版本內(nèi)核塊的大小是不確定的
bwrtn/s:每秒鐘向物理設備寫入的數(shù)據(jù)量,單位為 塊/s
使用 -u 或 -p 參數(shù)
可參考上面排查cpu問題里的介紹。
使用 -d (-p)參數(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:平均每次設備I/O操作的數(shù)據(jù)大小(扇區(qū)).
avgqu-sz:磁盤請求隊列的平均長度.
await:從請求磁盤操作到系統(tǒng)完成處理,每次請求的平均消耗時間,包括請求隊列等待時間,單位是毫秒(1秒=1000毫秒).
svctm:磁盤I/O請求到設備的平均服務時間(以毫秒為單位)
%util:磁盤I/O請求到設備的CPU平均百分比(設備寬帶利用率) 當這個值接近100%的時候,表示設備繁忙。
說明:
avgqu-sz的值較低時,設備的利用率較高。
當%util的值接近 1 時,表示設備帶寬已經(jīng)占滿。
當數(shù)據(jù)顯示時,使用的設備規(guī)范為:dev m-n。
m是設備的主設備號,***的內(nèi)核(2.5+),n是次設備號,但2.5版本之前的內(nèi)核,只有一個序列數(shù)。
如果使用-p 參數(shù),設備名稱也可能是可打印形式。
也就是說:參數(shù)-p可以打印出sda,hdc等磁盤設備名稱,如果不用參數(shù)-p,設備節(jié)點則有可能是dev8-0,dev22-0。
某些2.4版本的內(nèi)核,avgqu-sz, await, svctm 和 %uti可能是不可用,顯示為0.00。
4排查網(wǎng)卡流量問題
使用-n DEV 參數(shù)
網(wǎng)絡統(tǒng)計報告
-n 參數(shù)對應不同的關鍵字時報告不同的信息:
DEV關鍵字,報告網(wǎng)絡統(tǒng)計數(shù)據(jù)。
EDEV關鍵字,針對網(wǎng)絡設備匯報其失敗情況
NFS關鍵字,針對NFS客戶端進行匯報。
NFSD關鍵字,針對NFS服務端進行匯報。
SOCK關鍵字,對用戶使用的sockets進行匯報
ALL關鍵字,針對上述所有網(wǎng)絡信息進行匯報
通常情況下,我們只關注網(wǎng)卡流量,即使用-n DEV 參數(shù)
輸出項說明:
IFACE:就是網(wǎng)4絡設備的名稱
rxerr/s:每秒鐘接收到的損壞的包的數(shù)目
txerr/s:當發(fā)送包時,每秒鐘發(fā)生的錯誤數(shù)
coll/s:當發(fā)送包時,每秒鐘發(fā)生的沖撞(collisions)數(shù)(這個是在半雙工模式下才有)
rxdrop/s:由于緩沖區(qū)滿,網(wǎng)絡設備接收端,每秒鐘丟掉的網(wǎng)絡包的數(shù)目
txdrop/s:由于緩沖區(qū)滿,網(wǎng)絡設備發(fā)送端,每秒鐘丟掉的網(wǎng)絡包的數(shù)目
txcarr/s:當發(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ù)
上述內(nèi)容就是如何用用工具快速定位數(shù)據(jù)庫問題,你們學到知識或技能了嗎?如果還想學到更多技能或者豐富自己的知識儲備,歡迎關注創(chuàng)新互聯(lián)行業(yè)資訊頻道。