性能測試監控經常使用命令(大全)

 1.free命令詳解

 

-b:以Byte爲單位顯示內存使用狀況;
-k:以KB爲單位顯示內存使用狀況;
-m:以MB爲單位顯示內存使用狀況;
-o:不顯示緩衝區調節列;
-s<間隔秒數>:持續觀察內存使用情況;
-t:顯示內存總和列;
-V:顯示版本信息

第一部分Mem行解釋:

total:內存總數;
used:已經使用的內存數;
free:空閒的內存數;
shared:當前已經廢棄不用;
buffers Buffer:緩存內存數;
cached Page:緩存內存數。

2 VMSTAT
2表示每一個兩秒採集一次服務器狀態,1表示只採集一次

r 表示運行隊列(就是說多少個進程真的分配到CPU),我測試的服務器目前CPU比較空閒,沒什麼程序在跑,當這個值超過了CPU數目,就會出現CPU瓶頸了。這個也和top的負載有關係,通常負載超過了3就比較高,超過了5就高,超過了10就不正常了,服務器的狀態很危險。top的負載相似每秒的運行隊列。若是運行隊列過大,表示你的CPU很繁忙,通常會形成CPU使用率很高。node

 
 

b 表示阻塞的進程,這個很少說,進程阻塞,你們懂的。ios

 
 

swpd 虛擬內存已使用的大小,若是大於0,表示你的機器物理內存不足了,若是不是程序內存泄露的緣由,那麼你該升級內存了或者把耗內存的任務遷移到其餘機器。nginx

 
 

free   空閒的物理內存的大小,個人機器內存總共8G,剩餘3415M。web

 
 

buff   Linux/Unix系統是用來存儲,目錄裏面有什麼內容,權限等的緩存,我本機大概佔用300多Mapache

 
 

cache cache直接用來記憶咱們打開的文件,給文件作緩衝,我本機大概佔用300多M(這裏是Linux/Unix的聰明之處,把空閒的物理內存的一部分拿來作文件和目錄的緩存,是爲了提升 程序執行的性能,當程序使用內存時,buffer/cached會很快地被使用。)緩存

 
 

si  每秒從磁盤讀入虛擬內存的大小,若是這個值大於0,表示物理內存不夠用或者內存泄露了,要查找耗內存進程解決掉。個人機器內存充裕,一切正常。服務器

 
 

so  每秒虛擬內存寫入磁盤的大小,若是這個值大於0,同上。網絡

 
 

bi  塊設備每秒接收的塊數量,這裏的塊設備是指系統上全部的磁盤和其餘塊設備,默認塊大小是1024byte,我本機上沒什麼IO操做,因此一直是0,可是我曾在處理拷貝大量數據(2-3T)的機器上看過能夠達到140000/s,磁盤寫入速度差很少140M每秒併發

 
 

bo 塊設備每秒發送的塊數量,例如咱們讀取文件,bo就要大於0。bi和bo通常都要接近0,否則就是IO過於頻繁,須要調整。ssh

 
 

in 每秒CPU的中斷次數,包括時間中斷

 
 

cs 每秒上下文切換次數,例如咱們調用系統函數,就要進行上下文切換,線程的切換,也要進程上下文切換,這個值要越小越好,太大了,要考慮調低線程或者進程的數目,例如在apache和nginx這種web服務器中,咱們通常作性能測試時會進行幾千併發甚至幾萬併發的測試,選擇web服務器的進程能夠由進程或者線程的峯值一直下調,壓測,直到cs到一個比較小的值,這個進程和線程數就是比較合適的值了。系統調用也是,每次調用系統函數,咱們的代碼就會進入內核空間,致使上下文切換,這個是很耗資源,也要儘可能避免頻繁調用系統函數。上下文切換次數過多表示你的CPU大部分浪費在上下文切換,致使CPU幹正經事的時間少了,CPU沒有充分利用,是不可取的。

 
 

us 用戶CPU時間,我曾經在一個作加密解密很頻繁的服務器上,能夠看到us接近100,r運行隊列達到80(機器在作壓力測試,性能表現不佳)。

 
 

sy 系統CPU時間,若是過高,表示系統調用時間長,例如是IO操做頻繁。

 
 

id  空閒 CPU時間,通常來講,id + us + sy = 100,通常我認爲id是空閒CPU使用率,us是用戶CPU使用率,sy是系統CPU使用率。

 
 

wt 等待IO CPU時間。

 

3. sar命令詳解

Sar -help

A:全部報告的總和

-u:輸出CPU使用狀況的統計信息

-v:輸出inode、文件和其餘內核表的統計信息

-d:輸出每個塊設備的活動信息

-r:輸出內存和交換空間的統計信息

-b:顯示I/O和傳送速率的統計信息

-a:文件讀寫狀況

-c:輸出進程統計信息,每秒建立的進程數

-R:輸出內存頁面的統計信息

-y:終端設備活動狀況

-w:輸出系統交換活動信息

 

CPU資源監控

每隔10秒採集樣本一次採集3次後生成test的一個文件,若是要查看二進制文件test中的內容,需鍵入以下sar命令:sar -u -f test
 

 all:全部的cpu
 user:用戶的級別運行使用 CPU 總時間的百分比。

 nice:用於nice操做,所佔用 CPU 總時間的百分比

system:系統所佔cpu的百分比

iowait:IO所佔cpu的百分比

steal:管理程序(hypervisor)爲另外一個虛擬進程提供服務而等待虛擬 CPU 的百分比。

idle:顯示 CPU 空閒時間佔用 CPU 總時間的百分比。

1. 若 %iowait 的值太高,表示硬盤存在I/O瓶頸

2. 若 %idle 的值高但系統響應慢時,有多是 CPU 等待分配內存,此時應加大內存容量

3. 若 %idle 的值持續低於1,則系統的 CPU 處理能力相對較低,代表系統中最須要解決的資源是 CPU 。

 

 

2. inode、文件和其餘內核表監控(我理解文件數量)

每10秒採樣一次,連續採樣3次,觀察覈心表的狀態,需鍵入以下命令:

sar -v 10 3

屏幕顯示以下:

17:10:49 dentunusd file-nr inode-nr pty-nr

17:10:59 6301 5664 12037 4

17:11:09 6301 5664 12037 4

17:11:19 6301 5664 12037 4

Average: 6301 5664 12037 4

輸出項說明:

dentunusd:目錄高速緩存中未被使用的條目數量

file-nr:文件句柄(file handle)的使用數量

inode-nr:索引節點句柄(inode handle)的使用數量

pty-nr:使用的pty數量

3. 內存和交換空間監控

例如,每10秒採樣一次,連續採樣3次,監控內存分頁:

sar -r 10 3

屏幕顯示以下:

輸出項說明:

kbmemfree:這個值和free命令中的free值基本一致,因此它不包括buffer和cache的空間.

kbmemused:這個值和free命令中的used值基本一致,因此它包括buffer和cache的空間.

%memused:這個值是kbmemused和內存總量(不包括swap)的一個百分比.

kbbuffers和kbcached:這兩個值就是free命令中的buffer和cache.

kbcommit:保證當前系統所須要的內存,即爲了確保不溢出而須要的內存(RAM+swap).

%commit:這個值是kbcommit與內存總量(包括swap)的一個百分比.

 

4. iostat 命令詳解

  • -C 顯示CPU使用狀況
  • -d 顯示磁盤使用狀況
  • -k 以 KB 爲單位顯示
  • -m 以 M 爲單位顯示
  • -N 顯示磁盤陣列(LVM) 信息
  • -n 顯示NFS 使用狀況
  • -p[磁盤] 顯示磁盤和分區的狀況
  • -t 顯示終端和CPU的信息
  • -x 顯示詳細信息
  • -V 顯示版本信息

查看設備使用率(%util)和響應時間(await)

  • rrqm/s: 每秒進行 merge 的讀操做數目.即 delta(rmerge)/s
  • wrqm/s: 每秒進行 merge 的寫操做數目.即 delta(wmerge)/s
  • r/s: 每秒完成的讀 I/O 設備次數.即 delta(rio)/s
  • w/s: 每秒完成的寫 I/O 設備次數.即 delta(wio)/s
  • rsec/s: 每秒讀扇區數.即 delta(rsect)/s
  • wsec/s: 每秒寫扇區數.即 delta(wsect)/s
  • rkB/s: 每秒讀K字節數.是 rsect/s 的一半,由於每扇區大小爲512字節.(須要計算)
  • wkB/s: 每秒寫K字節數.是 wsect/s 的一半.(須要計算)
  • avgrq-sz:平均每次設備I/O操做的數據大小 (扇區).delta(rsect+wsect)/delta(rio+wio)
  • avgqu-sz:平均I/O隊列長度.即 delta(aveq)/s/1000 (由於aveq的單位爲毫秒).
  • await: 平均每次設備I/O操做的等待時間 (毫秒).即 delta(ruse+wuse)/delta(rio+wio)
  • svctm: 平均每次設備I/O操做的服務時間 (毫秒).即 delta(use)/delta(rio+wio)
  • %util: 一秒中有百分之多少的時間用於 I/O 操做,或者說一秒中有多少時間 I/O 隊列是非空的,即 delta(use)/s/1000 (由於use的單位爲毫秒)

 5 netstat 命令詳解

1.netstat  -help(自行查看)

我的經常使用的:

netstat -c>>log.log  持續輸出相關信息 放到文件裏方便查看 

netstat -an | grep ssh  , netstat -ap | grep  '22'     關於網絡方面的查看均可以使用 netsta進行查看,包括網絡堵塞,網絡接口,

相關文章
相關標籤/搜索