1. 程式人生 > >日常運維管理技巧二(檢視資源使用率 vmstat)

日常運維管理技巧二(檢視資源使用率 vmstat)

二、用vmstat命令檢視監控系統的狀態

我們用w命令學會了檢視負載情況,如果出現了負載值偏高的情況,如查詢的數字大於CPU核數了,說明CPU不夠用了。此時就需要思考CPU不夠用的原因,程序在幹什麼,都有哪些任務在使用CPU,你可能想去檢視系統的瓶頸在哪裡。

可以查到CPU核數,記憶體,虛擬記憶體交換分割槽,io就是磁碟,系統的程序等等相關的東西。經常使用vmstat 1命令,每隔一秒輸出一次狀態,感覺差不多可以Ctrl C結束。

當然也可以vmstat 1 5,每隔一秒輸出一次狀態,輸出5次結束。

我們只需要關心如下幾列:

2.1 proc顯示程序的相關資訊:

r,是run的簡寫,表示系統中有多少程序是屬於run的狀態。如果只有一個CPU,那某一個時間點只可能有一個程序在使用CPU,其他程序都在排隊。但它們那是迴圈的,每個程序都有機會使用CPU,都可以使用一會兒。不管是在使用還是在排隊,都是處於r的狀態。如果該數值長期大於伺服器CPU的個數,則說明CPU資源不夠用了。

b,是block的縮寫,表示等待資源的程序數。b就是說程序被CPU以外的資源(硬碟或者網路)給阻斷了,處於一個等待狀態,卡死了,b被堵死了。比如說網速慢,程序想要給你發一個數據包,假如網速很快,只需要1秒就發完了。但是現在速度慢,可能就花了10秒鐘,就是因為網速太慢,這個時候只能等網速了,這就是有多少程序在等待了。

2.2 memory顯示記憶體的相關資訊

swpd,表示切換到交換分割槽中的記憶體數量,單位為KB。以前講分割槽時,有個swap交換分割槽,當記憶體不夠時,系統可以把記憶體中的一部分資料臨時放到swap空間裡面去。如果這個數字不變,那還好;如果這個數字在持續不斷的變化,那說明記憶體和交換分割槽在持續不斷的交換資料,這就說明記憶體不夠了。

2.3 swap顯示記憶體的交換情況

si、so和swapd相關,如果swapd頻繁變化,那他們也會相應發生變化。

si:表示有多少資料(塊)是由swap交換區進入記憶體中的,單位為KB。i表示in,進入記憶體的。o表示out,so表示有多少是從記憶體中出來的

2.4 io顯示磁碟的情況

bi,bo是和磁碟有關係的。bi表示從塊裝置讀取資料的量(讀磁碟),單位為KB。bo表示從塊裝置寫入資料的量(寫磁碟),單位為KB。這個資料量很大,說明磁碟在頻繁的讀寫。io相比較磁碟來說,是很慢的。如果有那麼多的資料讀寫,肯定會造成並列增加,因為有很多程序在等待磁碟,這個是必然的。

2.5  顯示CPU的使用狀態

us:表示使用者級別的,比如說一個作業系統,肯定不可能只執行一個系統,還有跑一些服務。比如跑了一個網站,跑了一個MySQL,網站也好,MySQL也好,肯定會佔一些資源,它就會體現us這一方面了,user佔用的情況。us的數字是不會超過100的,因為一共就100%。us數字表示使用者下的資源佔用CPU的百分比,us長期大於50就說明系統資源不夠了。

sy:顯示系統本身花費CPU的時間百分比。

id:表示空閒的百分比us+sy+id=100

wa:wait等待,表示I/O等待所佔用CPU的時間百分比,這一列很大,說明CPU不夠用了。

通過vmstat命令可以判定出系統的瓶頸,如CPU不夠,記憶體不夠,還是磁碟io太大。