【人在營運囧途_02】20個Linux系統內建監視工具: vmstat和netstat 此文是人在囧途之營運的第二篇、第一篇請參見:【人在營運囧途_01】20個Linux系統內建監視工具:top 閑言少敘、看招哈O(∩_∩)O~ ⑵ vmstat 寫在前面的話、這裡 Rocky 嘮嗑一點、私下認為、vmstat 最佳實務也該是: "到底哪個部分的資源被使用的最為頻繁" 先瞧瞧 vmstat 的輸出 [plain] [root@Rocky ~]# vmstat 5 3 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 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的輸出: [plain] [root@localhost ~]# netstat -lntp Active 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[plain] [root@localhost ~]# netstat -lntp Active 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 那個網路服務關閉[plain] [root@localhost ~]# kill -9 4379 [root@localhost ~]# killall -9 dnsmasq