此文是人在囧途之營運的第二篇、第一篇請參見:【人在營運囧途_01】20個Linux系統內建監視工具:top
閑言少敘、看招哈O(∩_∩)O~
⑵ vmstat
寫在前面的話、這裡 Rocky 嘮嗑一點、私下認為、vmstat 最佳實務也該是:
"到底哪個部分的資源被使用的最為頻繁"
先瞧瞧 vmstat 的輸出
[root@Rocky ~]# vmstat 5 3procs -----------memory---------- ---swap-- -----io---- --system-- -----cpu------ r b swpd free buff cache si so bi bo in cs us sy id wa st 0 0 0 1249892 29292 410624 0 0 143 25 101 206 2 2 94 2 0 1 0 0 1249628 29316 410624 0 0 0 60 95 210 2 3 94 1 0 1 0 0 1249644 29316 410624 0 0 0 0 93 189 0 0 100 0 0
① 項目【procs】顯示與進程相關
r:等待啟動並執行進程數量
b:被阻塞的進程數量
這 2 兩列越多、代表系統越忙碌
② 項目【memory】顯示與記憶體相關
swpd:已使用的 swap 的容量(KB)
free:可用的實體記憶體(KB)
buff:被檔案中繼資料使用的容量(KB)
cache:被檔案資料本身使用的容量(KB)
③ 項目【swap】顯示與 swap 相關
si:資料從 SWAP 讀取到 RAM(swap in)的大小(KB/秒)
so:資料從 RAM 寫到 SWAP(swap out)的大小(KB/秒)
如果 si/so 比值太大、表示記憶體中的資料經常在磁碟和實體記憶體之間倒騰、系統效能很差
④ 項目【io】顯示與 磁碟讀寫相關
bi:向磁碟發送資料的速率(塊/秒)
bo:從磁碟讀取資料的速率(塊/秒)
如果這部分的值越高、代表系統的 I/O 非常忙碌
⑤ 項目【system】顯示與系統活動相關
in:每秒被中斷的進程數量
cs:在進程空間中進行上下文卻換的速率
這兩個數值越大、代表系統與周圍裝置(網卡、磁碟、時間鐘等)通訊非常頻繁
⑥ 項目【cpu】顯示與 CPU 負載相關
us:消費在使用者進程的 CPU 百分比、 Oracle 進程屬於這一類
sy:消費在系統進程的 CPU 百分比
id:可用 CPU 百分比
wa:消費在"等待 I/O"上的百分比
st:消費在虛擬機器上的 CPU 百分比
下面列舉一些常見用法
Ⅰ 每秒一次、共計三次:vmstat 1 3
⑶ netstat
偶照樣外甥打燈籠、先表明一下自個態度、netstat 的最佳實務應該是
"查看網路的串連狀態"
先看一下netstat的輸出:
[root@localhost ~]# netstat -lntpActive Internet connections (only servers)Proto Recv-Q Send-Q Local Address Foreign Address State PID/Program name tcp 0 0 127.0.0.1:2208 0.0.0.0:* LISTEN 3890/./hpiod tcp 0 0 0.0.0.0:3306 0.0.0.0:* LISTEN 4055/mysqld tcp 0 0 0.0.0.0:111 0.0.0.0:* LISTEN 3604/portmap tcp 0 0 192.168.122.1:53 0.0.0.0:* LISTEN 4379/dnsmasq tcp 0 0 0.0.0.0:22 0.0.0.0:* LISTEN 3908/sshd tcp 0 0 0.0.0.0:854 0.0.0.0:* LISTEN 3640/rpc.statd tcp 0 0 127.0.0.1:631 0.0.0.0:* LISTEN 3021/cupsd tcp 0 0 127.0.0.1:25 0.0.0.0:* LISTEN 4099/sendmail tcp 0 0 127.0.0.1:2207 0.0.0.0:* LISTEN 3895/python tcp 0 0 :::5989 :::* LISTEN 4382/cimservermain tcp 0 0 :::22 :::* LISTEN 3908/sshd
① Local Address:本地的 IP:PORT 情況
② Foreign Address:遠端 IP:PORT 情況
③ State:串連狀態、主要有 【ESTABLISED】【LISTEN】
舉個例子:
找出目前系統上已在監聽的網路連接及其PID
[root@localhost ~]# netstat -lntpActive Internet connections (only servers)Proto Recv-Q Send-Q Local Address Foreign Address State PID/Program name tcp 0 0 127.0.0.1:2208 0.0.0.0:* LISTEN 3890/./hpiod tcp 0 0 0.0.0.0:3306 0.0.0.0:* LISTEN 4055/mysqld tcp 0 0 0.0.0.0:111 0.0.0.0:* LISTEN 3604/portmap tcp 0 0 192.168.122.1:53 0.0.0.0:* LISTEN 4379/dnsmasq tcp 0 0 0.0.0.0:22 0.0.0.0:* LISTEN 3908/sshd tcp 0 0 0.0.0.0:854 0.0.0.0:* LISTEN 3640/rpc.statd tcp 0 0 127.0.0.1:631 0.0.0.0:* LISTEN 3021/cupsd tcp 0 0 127.0.0.1:25 0.0.0.0:* LISTEN 4099/sendmail tcp 0 0 127.0.0.1:2207 0.0.0.0:* LISTEN 3895/python tcp 0 0 :::5989 :::* LISTEN 4382/cimservermain tcp 0 0 :::22 :::* LISTEN 3908/sshd
將上述的本地 192.168.122.1:53 那個網路服務關閉
[root@localhost ~]# kill -9 4379[root@localhost ~]# killall -9 dnsmasq