w 命令:--w 查看的是系統總體上的負載nginx
# w 15:23:46 up 3:34, 2 users, load average: 0.03, 0.05, 0.00 USER TTY FROM LOGIN@ IDLE JCPU PCPU WHAT root tty1 - 12:26 2:55m 0.11s 0.11s -bash root pts/0 10.72.137.53 12:28 1:17m 1:32 1:32 -bash
時間, 登錄終端, 系統運行時間,登陸用戶數,平均負載。web
當前登陸的都有哪些用戶,以及他們是從哪裏登陸的等等。最應該關注的應該是第一行中的 ‘load average:’ 後面的三個數值:apache
第一個數值表示1分鐘內系統的平均負載值;第二個數值表示5分鐘內系統的平均負載值;第三個數值表示15分鐘系統的平均負載值。緩存
這個值的意義是,單位時間段內CPU活動進程數。固然這個值越大就說明您的服務器壓力越大。bash
通常狀況下這個值只要不超過服務器的cpu數量就沒有關係,若是服務器cpu數量爲8,那麼這個值若小於8,就說明當前服務器沒有壓力,不然就要關注一下了。服務器
查看cpu 數目: cat /proc/cpuinfo grep -c 'processor' /proc/cpuinfo併發
vmstat: vmstat能夠查出具體是哪裏(CPU, 內存,磁盤等)有壓力。函數
vmstat 2 1 ---2表示每一個兩秒採集一次服務器狀態,1表示只採集一次。性能
vmstat 2 ---這表示vmstat每2秒採集數據,一直採集,一直打印,除非咱們按 Ctrl + c 結束測試
~]# vmstat procs -----------memory---------- ---swap-- -----io---- --system-- -----cpu----- r b swpd free buff cache si so bi bo in cs us sy id wa st 0 0 512 5392 37460 213276 0 0 100 549 153 59 1 4 93 1 0
vmstat命令打印的結果共分爲6部分:procs, memory, swap, io, system, cpu.
proc 顯示進程相關信息:
r 表示運行隊列(就是說多少個進程真的分配到CPU),當這個值超過了CPU數目,就會出現CPU瓶頸了。這個也和top的負載有關係,通常負載超過了3就比較高,超過了5就高,超過了10就不正常了,服 務器的狀態很危險。top的負載相似每秒的運行隊列。若是運行隊列過大,表示你的CPU很繁忙,通常會形成CPU使用率很高。
b 表示阻塞的進程,這個很少說,進程阻塞(等待資源的進程數,好比等待I/O, 內存),這列的值若是長時間大於1,則須要關注一下了
memory內存相關信息:
swpd 虛擬內存已使用的大小,若是大於0,表示你的機器物理內存不足了,若是不是程序內存泄露的緣由,那麼你該升級內存了或者把耗內存的任務遷移到其餘機器。
free 空閒的物理內存的大小
buff 緩衝大小,(即將寫入磁盤的);
cache 緩存大小,(從磁盤中讀取的數據);直接用來記憶咱們打開的文件
swap 內存交換狀況:
si : 每秒從磁盤讀入虛擬內存的大小,若是這個值大於0,表示物理內存不夠用或者內存泄露了,要查找耗內存進程解決掉。由交換區寫入到內存的數據量;
so : 每秒虛擬內存寫入磁盤的大小,若是這個值大於0,同上。 由內存寫入到交換區的數據量;
io 磁盤使用:
bi:從塊設備讀取數據的量(讀磁盤);每秒從塊設備接收到的塊數,即讀塊設備
bo:從塊設備寫入數據的量(寫磁盤);每秒發送到塊設備的塊數,即寫塊設備。
system 顯示採集間隔內發生的中斷次數
in: 每秒CPU的中斷次數,包括時間中斷-- 表示在某一時間間隔中觀測到的每秒設備中斷數
cs:表示每秒CPU產生的上下文切換次數 --如咱們調用系統函數,就要進行上下文切換,線程的切換,也要進程上下文切換,這個值要越小越好,太大了,要考慮調低線程或者進程的數目,例如在apache和 nginx這種web服務器中,咱們通常作性能測試時會進行幾千併發甚至幾萬併發的測試,選擇web服務器的進程能夠由進程或者線程的峯值一直下調,壓測,直到cs到一個比較小的值,這個進程和線程數 就是比較合適的值了。系統調用也是,每次調用系統函數,咱們的代碼就會進入內核空間,致使上下文切換,這個是很耗資源,也要儘可能避免頻繁調用系統函數。上下文切換次數過多表示你的CPU大部 分浪費在上下文切換,致使CPU幹正經事的時間少了,CPU沒有充分利用,是不可取的。
cpu的使用狀態
us :顯示了用戶下所花費 cpu 時間的百分比;
sy :顯示系統花費cpu時間百分比;若是過高,表示系統調用時間長,例如是IO操做頻繁。
id :表示cpu處於空閒狀態的時間百分比;通常來講,id + us + sy = 100,通常我認爲id是空閒CPU使用率,us是用戶CPU使用率,sy是系統CPU使用率。
wa :表示I/O等待所佔用cpu時間百分比;
st :表示被偷走的cpu所佔百分比(通常都爲0,不用關注);