系統監控的一些工具w , vmstat

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,不用關注);

相關文章
相關標籤/搜索