vmstat 是 Linux 中的一個(gè)綜合性能分析工具,可以用來監(jiān)控 CPU 使用、進(jìn)程狀態(tài)、內(nèi)存使用、虛擬內(nèi)存使用、磁盤輸入/輸出狀態(tài)等信息。
vmstat 命令格式如下:
[root@localhost ~]# vmstat [刷新延時(shí) 刷新次數(shù)]
例如:
[root@localhost proc]# vmstat 1 3
#使用vmstat檢測(cè),每隔1秒刷新一次,共刷新3次
procs ——memory—— swap —io system ——cpu——
r b swpd free buff cache si so bi bo in cs us sy id wa st
r b swpd free buff cache si so bi bo in cs us sy id wa st
0 0 0 407376 55772 84644 0 0 5 2 9 10 0 0 100 0 0
0 0 0 407368 55772 84644 0 0 0 0 12 10 0 0 100 0 0
0 0 0 407368 55772 84644 0 0 0 0 15 13 0 0 100 0 0
解釋一下這個(gè)命令的輸出。
1) procs:進(jìn)程信息字段:
-r:等待運(yùn)行的進(jìn)程數(shù),數(shù)量越大,系統(tǒng)越繁忙。
-b:不可被喚醒的進(jìn)程數(shù)量,數(shù)量越大,系統(tǒng)越繁忙。
2) memory:內(nèi)存信息字段:
-swpd:虛擬內(nèi)存的使用情況,單位為KB。
-free:空閑的內(nèi)存容量,單位為KB。
-buff:緩沖的內(nèi)存容量,單位為KB。
-cache:緩存的內(nèi)存容量,單位為KB。
3) swap:交換分區(qū)信息字段:
-si:從磁盤中交換到內(nèi)存中數(shù)據(jù)的數(shù)量,單位為KB。
-so:從內(nèi)存中交換到磁盤中數(shù)據(jù)的數(shù)量,單位為KB。
這兩個(gè)數(shù)越大,表明數(shù)據(jù)需要經(jīng)常在磁盤和內(nèi)存之間進(jìn)行交換,系統(tǒng)性能越差。
4) io:磁盤讀/寫信息字段:
-bi:從塊設(shè)備中讀入的數(shù)據(jù)的總量,單位是塊。
-bo:寫到塊設(shè)備的數(shù)據(jù)的總量,單位是塊。
這兩個(gè)數(shù)越大,代表系統(tǒng)的 I/O 越繁忙。
5) system:系統(tǒng)信息字段:
-in:每秒被中斷的進(jìn)程次數(shù)。
-cs:每秒進(jìn)行的事件切換次數(shù)。
這兩個(gè)數(shù)越大,代表系統(tǒng)與接口設(shè)備的通信越繁忙。
6) cpu:CPU信息字段:
-us:非內(nèi)核進(jìn)程消耗CPU運(yùn)算時(shí)間的百分比。
-sy:內(nèi)核進(jìn)程消耗CPU運(yùn)算時(shí)間的百分比。
-id:空閑CPU的百分比。
-wa:等待I/O所消耗的CPU百分比。
-st:被虛擬機(jī)所盜用的CPU百分比。
本機(jī)是一臺(tái)測(cè)試機(jī),并沒有多少資源被占用,所以資源占比都比較低。如果服務(wù)器上的資源占用率比較高,那么使用 vmstat 命令查看到的參數(shù)值就會(huì)比較大。我們就需要手工進(jìn)行干預(yù),如果是非正常進(jìn)程占用了系統(tǒng)資源,則需要判斷這些進(jìn)程是如何產(chǎn)生的,不能一殺了之;如果是正常進(jìn)程占用了系統(tǒng)資源,則說明服務(wù)器需要升級(jí)了。
本機(jī)是一臺(tái)測(cè)試用的虛擬機(jī),并沒有多少資源被占用,所以資源占比都比較低。如果服務(wù)器上的資源占用率比較高,那么使用 vmstat 命令查看到的參數(shù)值就會(huì)比較大。我們就需要手工進(jìn)行干預(yù),如果是非正常進(jìn)程占用了系統(tǒng)資源,則需要判斷這些進(jìn)程是如何產(chǎn)生的,不能一殺了之;如果是正常進(jìn)程占用了系統(tǒng)資源,則說明服務(wù)器需要升級(jí)了。