簡介
列舉作業系統級監控常用的幾個方法,建議收藏使用
CPU
top 指令可用于監控系統整體負載,包括cpu、記憶體使用等,能夠實時顯示系統中各個程序的資源占用狀況
輸出樣例
top - 19:37:41 up 192 days, 9:14, 1 user, load average: 0.39, 0.28, 0.27
Tasks: 126 total, 1 running, 125 sleeping, 0 stopped, 0 zombie
Cpu(s): 0.1%us, 0.1%sy, 0.0%ni, 99.8%id, 0.0%wa, 0.0%hi, 0.0%si, 0.0%st
Mem: 32113M total, 11351M used, 20762M free, 266M buffers
Swap: 4091M total, 0M used, 4091M free, 304M cached
PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND
1 root 20 0 25280 1016 968 S 0 0.0 2:37.44 init
2 root 20 0 0 0 0 S 0 0.0 0:02.40 kthreadd
3 root 20 0 0 0 0 S 0 0.0 3:28.59 ksoftirqd/0
5 root 20 0 0 0 0 S 0 0.0 0:00.59 kworker/u:0
6 root RT 0 0 0 0 S 0 0.0 0:11.39 migration/0
名額說明
-
load average: 0.06, 0.60, 0.48
系統負載,即任務隊列的長度。分别為 1分鐘、5分鐘、15分鐘内的平均值。
-
Tasks
程序彙總,包括運作中、睡眠、停止、僵屍态的梳理
- Cpu(s)
名額 | 說明 |
---|---|
0.3% us | 使用者空間占用CPU百分比 |
1.0% sy | 核心空間占用CPU百分比 |
0.0% ni | 使用者程序優先級排程CPU百分比 |
98.7% id | 空閑CPU百分比 |
0.0% wa | 等待輸入輸出的CPU時間百分比 |
0.0% hi | 硬體CPU中斷占用百分比 |
0.0% si | 軟中斷占用百分比 |
0.0% st | 虛拟機占用百分比 |
-
Mem
記憶體統計,包括實體記憶體、已使用記憶體、空閑記憶體、核心緩存
-
Swap
交換區統計,包括總量、已使用、空閑量、緩存量
- 程序清單
PID | 程序ID |
USER | 程序所有者的使用者名 |
PR | 優先級 |
NI | nice值。負值表示高優先級,正值表示低優先級 |
VIRT | 程序使用的虛拟記憶體總量,機關kb。VIRT=SWAP+RES |
RES | 程序使用的、未被換出的實體記憶體大小,機關kb。RES=CODE+DATA |
SHR | 共享記憶體大小,機關kb |
S | 程序狀态(D=不可中斷的睡眠狀态,R=運作,S=睡眠,T=跟蹤/停止,Z=僵屍程序) |
%CPU | 程序使用的CPU百分比 |
%MEM | 程序使用的實體記憶體百分比 |
TIME+ | 程序使用的CPU時間總計,機關1/100秒 |
SWAP | 程序使用的虛拟記憶體中,被換出的大小,機關kb |
CODE | 可執行代碼占用的實體記憶體大小,機關kb |
DATA | 可執行代碼以外的部分(資料段+棧)占用的實體記憶體大小,機關kb |
COMMAND | 指令名/指令行 |
按F鍵可以選擇顯示不同的名額,非常詳細
參考文檔記憶體監控
vmstat 指虛拟記憶體統計(Virtual Meomory Statistics), 是常用的實時系統監控工具。
~-> vmstat 2
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 212 21250404 272916 320572 0 0 0 2 0 0 0 0 100 0 0
0 0 212 21250652 272916 320576 0 0 0 0 535 1061 0 0 100 0 0
0 0 212 21250652 272916 320576 0 0 0 0 496 1062 0 0 100 0 0
2 0 212 21250256 272916 320576 0 0 0 0 751 1107 0 0 99 0 0
0 0 212 21250404 272916 320568 0 0 0 0 496 1056 0 0 100 0 0
0 0 212 21250404 272916 320568 0 0 0 0 593 1089 0 0 100 0 0
0 0 212 21250404 272916 320568 0 0 0 56 539 1074 0 0 100 0 0
0 0 212 21250404 272916 320568 0 0 0 0 589 1137 0 0 100 0 0
0 0 212 21250404 272916 320564 0 0 0 0 608 1154 0 0 100 0 0
0 0 212 21250404 272916 320564 0 0 0 0 601 1156 0 0 100 0 0
1 0 212 21250404 272916 320564 0 0 0 0 611 1155 0 0 100 0 0
0 0 212 21250404 272916 320564 0 0 0 0 599 1151 0 0 100 0 0
procs.r | 等待cpu時間片的程序數 |
procs.b | 等待資源的程序數,比如等待IO或記憶體交換等 |
cpu.us | 使用者态CPU 時間百分比 |
cpu.sy | 核心态CPU 時間百分比,參考值us+sy<=80% |
cpu.wa | IO等待所占用的CPU 時間百分比,參考值wa<=30 |
cpu.id | 空閑狀态CPU 時間百分比 |
cpu.st | 虛拟機CPU占用時間百分比,存在超分時可能較高 |
system.in | 裝置中斷數 |
system.cs | 上下文切換次數 |
memory.swpd | 記憶體交換區的記憶體數量(KB) |
memory.free | 空閑頁的記憶體數量(KB) |
memory.buff | buffer cache的記憶體數量,一般在塊裝置讀寫使用 |
memory.cache | 作為page cache的記憶體數量,一般作為檔案系統的cache |
swap.si | 由記憶體進入記憶體交換區數量 |
swap.so | 由記憶體交換區進入記憶體數量 |
io.bi | 從塊裝置讀入的資料量(KB/S) |
io.bo | 向塊裝置寫入的資料量(KB/S) |
網絡連接配接
netstat 指令用于顯示各種網絡相關資訊,如網絡連接配接,路由表,接口狀态等。
iotweb@kwe1000111753:~> netstat -ano |head
Active Internet connections (servers and established)
Proto Recv-Q Send-Q Local Address Foreign Address State
tcp 0 0 0.0.0.0:4444 0.0.0.0:* LISTEN
tcp 0 0 0.0.0.0:19999 0.0.0.0:* LISTEN
tcp 0 0 0.0.0.0:27017 0.0.0.0:* LISTEN
tcp 0 0 0.0.0.0:6380 0.0.0.0:* LISTEN
tcp 0 0 0.0.0.0:111 0.0.0.0:* LISTEN
常見用法
- 檢查出TIME_WAIT的數量
netstat -an | grep -c TIME_WAIT
- 檢查全部socket狀态
netstat -nat| awk '{print awk $NF}'|sort|uniq -c|sort -n
- 檢查程序及socket數量
netstat -nap| awk '{print awk $NF}'|sort|uniq -c|sort -n
- 檢視端口連接配接數
netstat -anp |grep 27071|wc -l
磁盤使用
iostat 用于監控磁盤的IO吞吐及資源占用情況
指令
iostat -d -x -k 1 10
-d為檢視磁盤狀況,-k表示以KB為機關,-x表示輸出更多的擴充字段
Device: rrqm/s wrqm/s r/s w/s rkB/s wkB/s avgrq-sz avgqu-sz await svctm %util
xvda 0.01 8.32 0.49 4.94 6.82 53.08 22.06 0.11 19.68 1.76 0.95
xvde 0.02 841.11 33.24 304.80 331.20 4583.79 29.08 1.67 4.93 1.15 38.76
dm-0 0.00 0.00 33.26 1145.95 331.20 4583.79 8.34 0.30 2.61 0.33 38.81
rrqm/s | 每秒merge的讀取請求數(同一個Block存在merge機制) |
每秒merge的寫入請求數(同一個Block存在merge機制) | |
r/s | 每秒送出的讀取請求數 |
w/s | 每秒送出的寫入請求數 |
await | IO請求的平均響應時間,參考值<=10ms |
rkB/s | 每秒讀取資料量 |
wkb/s | 每秒寫入資料量 |
avgrq-sz | IO平均請求大小(扇區) |
avgqu-sz | IO平均請求隊列大小 |
svctm | IO請求平均執行時間 |
%util | CPU占用百分比 |
程序監控
ps指令能夠給出目前系統中程序的快照
- 查找程序方法
ps -ef |grep nscl
- 按cpu占用排序檢視前10程序
-> ps -aux --sort -pcpu |head -n 10
USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMAND
iotweb 9313 1.0 14.3 6277488 4708752 ? Sl Nov03 687:08 ./bin/mongod -f conf/mongodb.conf --auth
iotweb 16957 0.3 10.1 10208428 3322260 ? Sl Nov01 251:37 java -jar redis-stat-0.4.14.jar 127.0.0.1:6380 3 --server=63800
root 2822 0.1 0.0 133196 1288 ? Sl Jun07 431:05 /usr/bin/vm-agent
iotweb 16942 0.1 0.0 52364 13304 ? Ssl Nov01 95:57 ./bin/redis-server 0.0.0.0:6380
程序 owner | |
CPU占用率 | |
記憶體占用率 | |
TTY | 終端 |
STAT | 程序狀态 |
VSZ | 虛拟記憶體占用 |
RSS | 實體記憶體占用 |
START | 開始日期 |
TIME | 啟動時長 |
Bash指令 |
檔案占用
lsof(list open files)用于列出目前系統打開檔案句柄,包括網絡套接字、裝置句柄等。
~->lsof /opt
COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME
mongod 9313 iotweb txt REG 252,0 36409888 761870 /opt/local/mongodb/bin/mongod
mongod 9313 iotweb 4w REG 252,0 7082638 778244 /opt/local/mongodb/log/mongodb.log
mongod 9313 iotweb 8uW REG 252,0 5 778246 /opt/local/mongodb/data/mongod.lock
mongod 9313 iotweb 9uw REG 252,0 21 778247 /opt/local/mongodb/data/WiredTiger.lock
mongod 9313 iotweb 15u REG 252,0 36864 778253 /opt/local/mongodb/data/sizeStorer.wt
程序的名稱 | |
程序所有者 | |
FD | 檔案描述符 |
TYPE | 檔案類型,如DIR、REG等 |
DEVICE | 指定磁盤的名稱 |
SIZE | 檔案的大小 |
NODE | 檔案索引節點 |
NAME | 檔案的名稱 |

作者:
zale出處:
http://www.cnblogs.com/littleatp/, 如果喜歡我的文章,請
關注我的公衆号本文版權歸作者和部落格園共有,歡迎轉載,但未經作者同意必須保留此段聲明,且在文章頁面明顯位置給出
原文連結如有問題, 可留言咨詢.