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進行查看,包括網絡堵塞,網絡接口,