1. 程式人生 > >知識點051-判斷linux系統狀態命令彙總

知識點051-判斷linux系統狀態命令彙總

一般和cpu個數一起參考,超過CPU的個數就有瓶頸

b 阻塞的程序,程序阻塞 swpd 虛擬記憶體已使用的大小,如果大於0,表示機器實體記憶體不足,可能需要機器記憶體不足 free 空閒的空間 buff 儲存系統中目錄,許可權等快取 cache 用來記憶我們開啟的檔案,給檔案做緩衝 si 每秒從磁碟讀入虛擬記憶體的大小,如果這個值大於0,表示實體記憶體不夠用或者記憶體洩露 so 每秒虛擬記憶體寫入磁碟的大小,如果這個值大於0,同上
bi 裝置每秒接收的塊數量,這裡的塊裝置是指系統上所有的磁碟和其他塊裝置,預設塊大小是1024byte bo 塊裝置每秒傳送的塊數量,例如我們讀取檔案,bo就要大於0。bi和bo一般都要接近0,不然就是IO過於頻繁,需要調整 in 每秒CPU的中斷次數,包括時間中斷 cs 每秒上下文切換次數,例如我們呼叫系統函式,就要進行上下文切換,執行緒的切換,也要程序上下文切換,這個值要越小越好 us 使用者CPU時間 sy 系統CPU時間
id 空閒 CPU時間 id+us +sy =100 wt io等待磁碟寫進去

mpstat(單個CPU情況)

引數 解析
mpstat -P ALL 檢視所有CPU的平均情況
mpstat -P 2 檢視指定CPU的情況

pidstat(單個程序的情況)

yum install -y sysstat  

引數 解析
pidstat -d -p 3679

kB_rd/s - 任務從硬碟上的讀取速度(kb)
kB_wr/s - 任務向硬碟中的寫入速度(kb)
kB_ccwr/s - 任務寫入磁碟被取消的速率(kb)

pidstat -r -p 3679

minflt/s - 從記憶體中載入資料時每秒出現的小的錯誤的數目,這些不要求從磁碟載入記憶體頁面。
majflt/s - 從記憶體中載入資料時每秒出現的較大錯誤的數目,這些要求從磁碟載入記憶體頁面。
VSZ - 虛擬容量:整個程序的虛擬記憶體使用(kb)
RSS - 長期記憶體使用:任務的不可交換實體記憶體的使用量(kb)

pidstat -r 2 5 該命令比較容易定為出問題的程序
pidstat -urd -h 統計所有資料一起打印出來
pidstat -w -p 3679

Cswch/s - 每秒主動任務上下文切換數量
Nvcswch/s - 每秒被動任務上下文切換數量


iostat (磁碟情況)

引數 解析
iostat -d -k 2 5

-d 表示顯示裝置磁碟的使用狀態

-k 表示強制使用kilobytes為單位,如果是-m ,則是M

2 每2秒重新整理

6 重新整理6次

tps 一次I/O請求
kB_read/s 每秒從裝置(drive expressed)讀取的資料量
kB_wrtn/s 每秒向裝置(drive expressed)寫入的資料量
kB_wrtn 寫入的總數量資料量
kB_wrtn 寫入的總數量資料量
iostat -c 2 5 類似mpstat -P ALL 命令,檢視cpu 統計資訊
iostat -d -x -k 2 5 多了-x 引數,用於顯示磁碟io的更多資訊

free(記憶體情況)

引數 解析
Mem 記憶體的使用情況
Swap 交換空間
total 系統總共可用的實體記憶體和交換空間大小
used 已使用的實體記憶體和交換空間
free 還有多少實體記憶體和交換空間
shared 被共享的實體記憶體大小
buff/cache 顯示被buffer和cache使用的實體記憶體
available availble = free +buffer +cache

sar (找出系統的瓶頸)

懷疑CPU存在瓶頸,可用 sar -u 和 sar -q 等來檢視
懷疑記憶體存在瓶頸,可用sar -B、sar -r 和 sar -W 等來檢視
懷疑I/O存在瓶頸,可用 sar -b、sar -u 和 sar -d 等來檢視

引數 解析

sar -f /var/log/sa/saxx

(追溯系統中xx天的系統執行情況)

指定時間段s(start),e(end)

sar -f /var/log/sa/saxx -s 00:00:00 -e 23:00:00 -r

sar -u

(CPU資源,磁碟IO)

%user - 使用者模式下消耗的CPU時間的比例
%nice - 通過nice改變了程序排程優先順序的程序,在使用者模式下消耗的CPU時間的比例
%system - 系統模式下消耗的CPU時間的比例
%iowait - CPU等待磁碟I/O導致空閒狀態消耗的時間比例
%steal - 利用Xen等作業系統虛擬化技術,等待其它虛擬CPU計算佔用的時間比例
%idle - CPU空閒時間比例

sar -q

(系統平均負載)

runq-sz - 執行佇列的長度(等待執行的程序數)
plist-sz - 程序列表中程序(processes)和執行緒(threads)的數量

sar -r

(記憶體和交換空間)

kbmemfree - 這個值和free命令中的free值基本一致,所以它不包括buffer和cache的空間
kbmemused - 這個值和free命令中的used值基本一致,所以它包括buffer和cache的空間
%memused - 實體記憶體使用率,這個值是kbmemused和記憶體總量(不包括swap)的一個百分比
kbbuffers和kbcached - 這兩個值就是free命令中的buffer和cache
kbcommit - 保證當前系統所需要的記憶體,即為了確保不溢位而需要的記憶體(RAM+swap)
%commit - 這個值是kbcommit與記憶體總量(包括swap)的一個百分比

sar -W

(檢視頁面交換髮生狀況)

pswpin/s - 每秒系統換入的交換頁面(swap page)數量
pswpout/s - 每秒系統換出的交換頁面(swap page)數量

sar -v 10 3

(每10秒取樣一次,連續取樣3次,觀察核心表狀態)

 

dentunusd - 目錄快取記憶體中未被使用的條目數量
file-nr - 檔案控制代碼(file handle)的使用數量
inode-nr - 索引節點控制代碼(inode handle)的使用數量
pty-nr - 使用的pty數量

 

sar -n SOCK 1 3

(針對socket進行彙報)

 

totsck - 被使用的socket的總數目
tcpsck - 當前正在被使用於TCP的socket數目
udpsck - 當前正在被使用於UDP的socket數目
rawsck - 當前正在被使用於RAW的socket數目
ip-frag - 當前的IP分片的數目

sar -n EDEV 1 3

(網路資料包使用情況,EDEV失敗的情況,DEV正確的情況)

rxerr/s - 每秒鐘接收到的損壞的包的數目
txerr/s - 當傳送包時,每秒鐘發生的錯誤數
coll/s - 當傳送包時,每秒鐘發生的衝撞(collisions)數(這個是在半雙工模式下才有)
rxdrop/s - 由於緩衝區滿,網路裝置接收端,每秒鐘丟掉的網路包的數目
txdrop/s - 由於緩衝區滿,網路裝置傳送端,每秒鐘丟掉的網路包的數目
txcarr/s - 當傳送資料包時,每秒鐘載波錯誤發生的次數
rxfram/s - 在接收資料包時,每秒鐘發生的幀對齊錯誤的次數
rxfifo/s - 在接收資料包時,每秒鐘緩衝區溢位錯誤發生的次數
txfifo/s - 在傳送資料包時,每秒鐘緩衝區溢位錯誤發生的次數

iftop(網絡卡流量)

引數 解析
iftop -F 10.0.0.2/32 檢視某個ip的出入網絡卡的流量

L

流量刻度顯示
依次輸入3 → t → B

3 根據最近40s統計排序

t 傳送和接收合併一行

B 分別檢視最近2s 10s 和40s的統計

<= 接收資料
=> 傳送資料

netstat(埠相關)

引數 解析
netstat -lntp 伺服器中執行的埠情況
netstat -ie 輸出和ifconfig資訊一樣
netstat -s

列出所有埠的統計資訊

加上(-t和-u)對應tcp和udp

netstat -nat |awk '{print $6}'|sort|uniq -c|sort -rn 網路連線狀態彙總

lsof(當前系統開啟檔案的工具)

引數 解析
lsof 列出系統中開啟的檔案
lsof -u xxxx -c nginx 列出xxxx使用者的nginx程序開啟檔案的資訊
lsof -p xxx 程序號xxx開啟檔案的資訊
lsof -i :80 開啟80埠的資訊
lsof +d /usr/local 顯示目錄下被程序開啟的檔案
lsof +D /usr/local 同上,目錄下的目錄會被找
lsof -g gid 顯示程序歸屬gid的程序情況

find(查詢檔案)

<
引數 解析
find /data/logs/xxx/ -type f -mtime +3 -iname "*.log" 找出3天前/data/logs/xxx/ 目錄中為*.log 的檔案
find /data/logs/xxx/ -type f -iname "*.log" -exec rm -f {}\; 找出3天前/data/logs/xxx/ 目錄中為*.log 的檔案並刪除