一提到對(duì)于查看系統(tǒng)運(yùn)行的健康狀況,可能大多數(shù)朋友考慮到的就是查看進(jìn)程或者打開(kāi)任務(wù)管理器,但是對(duì)于應(yīng)用在真實(shí)生產(chǎn)環(huán)境中服務(wù)器的linux系統(tǒng)來(lái)說(shuō),以上兩種方式都不是最高效的查看方式,那么今天騰佑小編就給大家推薦一個(gè)在linux系統(tǒng)中非常實(shí)用的關(guān)心系統(tǒng)運(yùn)行健康的方式———— ‘ vmstat ’ 命令。
vmstat命令是非常實(shí)用的一種Linux/Unix監(jiān)控工具,可以直觀的瀏覽到給定的時(shí)間間隔的系統(tǒng)運(yùn)行狀態(tài),包括服務(wù)器的CPU使用率,內(nèi)存使用情況,虛擬內(nèi)存交換情況, 硬盤(pán)、內(nèi)存讀寫(xiě)情況。相比top,可以讓管理人員看到整個(gè)機(jī)器的CPU,內(nèi)存,IO的使用情況,而不僅僅是看到單個(gè)進(jìn)程的CPU使用率和內(nèi)存使用率。當(dāng)然也并不是說(shuō)只用vmstat不用top,實(shí)際上兩者是應(yīng)用于不同生產(chǎn)環(huán)境當(dāng)中。
vmstat工具的使用是通過(guò)兩個(gè)數(shù)字參數(shù)來(lái)完成的,第一個(gè)參數(shù)是給定的時(shí)間間隔數(shù),單位是秒,第二個(gè)參數(shù)是查看的次數(shù)。
例如:
1: 給定的時(shí)間間隔, 1秒
2: 查看的次數(shù)
當(dāng)然如果不加查看次數(shù)的話,會(huì)一直監(jiān)控下去,如果不想監(jiān)控那就直接停掉vmstat,這也是真實(shí)生產(chǎn)環(huán)境中常用的操作。
如圖中所示,我一直運(yùn)行vmstat,間隔一秒查看八次,然后停止。
接下來(lái)呢就來(lái)解釋這個(gè)命令所顯示的所有的參數(shù)的含義。
r:運(yùn)行隊(duì)列(就是多少個(gè)進(jìn)程真的被分配到CPU),當(dāng)這個(gè)值超過(guò)了CPU個(gè)數(shù)的時(shí)候就會(huì)出現(xiàn)CPU瓶頸。
B:表示阻塞的進(jìn)程。
Swpd:虛擬內(nèi)存已使用的大小,如果大于0就表示設(shè)備物理內(nèi)存不足。
Free : 空閑的物理內(nèi)存的大小。
Buff :系統(tǒng)中目錄內(nèi)容、權(quán)限等級(jí)的緩存
Cache : cache直接用來(lái)做文件緩沖(linux系統(tǒng)把空閑的物理內(nèi)存的一部分拿來(lái)做文件和目錄的緩存,是為了提高程序執(zhí)行的性能,當(dāng)程序使用內(nèi)存時(shí), buffer/cached會(huì)很快地被使用。)
Si : 每秒從磁盤(pán)讀取虛擬內(nèi)存的大小,如果這個(gè)值大于0,表示物理內(nèi)存不夠用或者內(nèi)存泄露,需要查找到耗內(nèi)存較大的進(jìn)程解決掉。
So : 每秒虛擬內(nèi)存寫(xiě)入磁盤(pán)的大小,如果這個(gè)值大于0,同樣也表示內(nèi)存不夠使用。
Bi : 塊設(shè)備每秒接收的塊數(shù)量,這里的塊設(shè)備是指系統(tǒng)上所有的磁盤(pán)和其他塊設(shè)備,默認(rèn)塊大小是1024
Bo : 塊設(shè)備每秒發(fā)送的塊數(shù)量,bi和bo的值一般都要接近0,不然就是輸入輸出過(guò)于頻繁,需要做出調(diào)整。
In : 每秒CPU的中斷次數(shù),包括時(shí)間中斷。
Cs :每秒上下文切換次數(shù),例如使用者調(diào)用系統(tǒng)函數(shù),就要進(jìn)行上下文切換。線程的切換,也要進(jìn)程上下文切換,這個(gè)值要越小越好,太大就要考慮調(diào)低線程或者進(jìn)程的數(shù)目。
Us :用戶CPU時(shí)間,運(yùn)行狀態(tài)下用戶空間的時(shí)間。
Sy :系統(tǒng)CPU時(shí)間,運(yùn)行狀態(tài)下系統(tǒng)空間的時(shí)間,如果太高,表示系統(tǒng)調(diào)用時(shí)間長(zhǎng)。
注: us+sy=進(jìn)程時(shí)間(cpu時(shí)間)
Id : 空閑 CPU時(shí)間,一般來(lái)說(shuō),id + us + sy = 100
Wt : 等待IO(輸入輸出) CPU時(shí)間。