本博文主要講解Linux對硬件和軟件資源的監控命令,包括:ios
vmstat
、top(相似msgtask)和簡單的free;iostat -dx x y
;netstat
、網絡IO流量概覽的nload
和每一個套接字IO流量的iftop
vmstat
和其餘服務器資源管理命令vmstat
是virtual memory status的縮寫,即虛擬內存狀態。能夠用來監控CUP、虛擬內存、IO等多個服務器指標。數據庫
vm有兩個參數:vim
vmstat x y
一次採樣vmstat
:windows
procs -----------memory---------- ---swap-- -----io---- -system-- ------cpu----- r b swpd free buff cache si so bi bo in cs us sy id wa st 3 0 0 1502252 18464 261972 0 0 70 11 158 391 4 0 95 0 0
使用man vmstat
能夠查看vmstat參數說明和打印詳解:緩存
進程相關:服務器
內存相關:網絡
頁面調度相關swap(如下參數每秒不要超過10):併發
IO相關:ssh
系統相關:tcp
cup相關:五種操做對CPU時間的佔比
以上重點參數已經加粗:
若是b一直不爲0能夠考慮是否存在死鎖。
r表示使用和等待cup資源的進程個數,若是超過了cpu核數不少,就可能頻繁的引發上下文切換,表現爲cs很大。
若是si、so很大、free很小,可能主存性能知足不了如今工做,致使頻繁的磁盤IO甚至抖動。
當上傳文件並放入到本地磁盤時,bo忽然很大:
當使用vim將本地磁盤數據讀入到內存中時,bi忽然變大:
1.procs ---------2.memory--------- ---3.swap-------4.io---- -5.system--------6.cpu----- r b swpd free buff cache si so bi bo in cs us sy id wa st 0 0 0 1458020 22500 295004 0 0 1388 0 186 456 4 1 93 2 0
雖然沒有換入換出si/so的例子,可是應當知道這是vmstat
最終要的參數,當這兩個參數太大時應該考慮優化程序的實現和升級內存容量。
cup密集型服務器vmstat
的us
輸出一般是一個很高的值,即cup花費在非內核代碼上的cup時間佔比應該很高。
cup密集型服務器上下文切換次數警告閾值是10萬/s(具體狀況看機器?)。
IO密集型服務器cup會花費大量時間等待IO請求完成,則意味着不少任務處於非中斷休眠狀態(b
列),而且wa
數字也很高(等待IO時間)。
top命令能夠查看動態刷新的各個進程的cup和內存使用率,以及執行的命令和命令執行的用戶和PID(進程ID),界面相似於windows的任務管理器:
free命令,界面以下:
root@iZwz94idfw2r7h2hnepjZ:~# free total used free shared buff/cache available Mem: 2048212 587876 981736 5264 478600 1301432 Swap: 0 0 0
iostat -dx a b
設備和分區的IO統計信息和cup統計信息。參數d x
分別表示顯示設備使用狀態和輸出更多信息。a和b分別表示採樣時間間隔和採樣次數,同vmstat,第一次輸出也是系統啓動以來的平均值:iostat -dx
:爬蟲程序啓動後的變化值:
root@iZwz94iww8uynepjZ:~# iostat -dx 3 Linux 4.4.0-63-generic (iZwz94iww8uynepjZ) 05/04/2018 _x86_64_ (1 CPU) Device: rrqm/s wrqm/s r/s w/s rkB/s wkB/s avgrq-sz avgqu-sz await r_await w_await svctm %util vda 0.00 0.00 0.00 0.33 0.00 5.33 32.00 0.00 0.00 0.00 0.00 0.00 0.00 Device: rrqm/s wrqm/s r/s w/s rkB/s wkB/s avgrq-sz avgqu-sz await r_await w_await svctm %util vda 0.00 7.33 0.00 1.33 0.00 37.33 56.00 0.00 0.00 0.00 0.00 0.00 0.00 Device: rrqm/s wrqm/s r/s w/s rkB/s wkB/s avgrq-sz avgqu-sz await r_await w_await svctm %util vda 0.00 4.00 0.00 10.00 0.00 57.33 11.47 0.01 0.80 0.00 0.80 0.80 0.80 Device: rrqm/s wrqm/s r/s w/s rkB/s wkB/s avgrq-sz avgqu-sz await r_await w_await svctm %util vda 0.00 28.52 0.00 87.25 0.00 1268.46 29.08 0.18 2.08 0.00 2.08 1.66 14.50
r/s、w/s
:每秒鐘發送到設備的讀寫請求;avgqu-sz
:在設備隊列中等待的請求數量;await
:磁盤排隊上花費的毫秒數,包括讀和寫;svctm
:服務請求花費的毫秒數,不包括排隊時間。重要概念:請求服務併發數:
concurrency=(r/s+w/s)*(svctm/1000)
表示在採樣週期內每秒設備處理的請求數。
netstat
鏈接詳情Print network connections, routing tables, interface statistics, masquerade connections, and multicast membership
打印網絡鏈接、路由表、接口統計、假裝鏈接和多播membership。
root@iZwz94i8afw2r7g62hnepjZ:~# netstat -at Active Internet connections (servers and established) Proto Recv-Q Send-Q Local Address Foreign Address State tcp 0 0 localhost:32000 *:* LISTEN tcp 0 0 *:http-alt *:* LISTEN tcp 0 0 *:ssh *:* LISTEN tcp 0 0 172.16.252.71:57346 211.151.27.128:http TIME_WAIT tcp 0 0 172.16.252.71:57598 211.151.27.128:http TIME_WAIT tcp 0 0 172.16.252.71:57306 211.151.27.128:http TIME_WAIT tcp 0 0 172.16.252.71:39240 59.151.32.81:http TIME_WAIT tcp 0 0 172.16.252.71:39274 59.151.32.81:http TIME_WAIT tcp 0 0 172.16.252.71:39208 59.151.32.81:http TIME_WAIT tcp 0 0 172.16.252.71:57480 211.151.27.128:http TIME_WAIT tcp 0 0 172.16.252.71:39372 59.151.32.81:http TIME_WAIT tcp 0 0 172.16.252.71:57450 211.151.27.128:http TIME_WAIT tcp 0 0 172.16.252.71:57482 211.151.27.128:http TIME_WAIT
nload
、iftop
nload
查看整體的輸入輸出流量,而且能夠查看峯值、谷值和平均值,太簡單,如圖開啓爬蟲:
iftop
則能夠查看每一個套接字的輸出輸出流量:
**以上提到的命令還能夠用於數據庫查詢性能分析