Linux查看網絡即時網速
fping 是ping 工具的加強版本
- 例出局域網中存活的主機 (Ubuntu apt-get裝上 cnetos裝不上)
zzx@zzx11:~$ fping -a 192.168.1.1/24 -g 2> /dev/null
查cpu和io sar 1 3 或者iostat 1 3
查網絡
sar -n DEV 1 100
rxpck/s : 每秒接收的數據包大小
txpck/s : 每秒發送的數據包大小
zzx@zzx120:~$ sar -r 1 3 查內存
或者用Python腳本
$ wget https://raw.github.com/sivel/speedtest-cli/master/speedtest_cli.py
$ chmod a+rx speedtest_cli.py
[root@localhost c]# ./speedtest_cli.py # 實測不准的 怎么可能到7M 家里寬帶最多2M下載
Retrieving speedtest.net configuration...
Retrieving speedtest.net server list...
Testing from Guangdong Mobile (223.73.122.175)...
Selecting best server based on latency...
Hosted by Unicom-GZ (Guangzhou) [49.47 km]: 11.453 ms
Testing download speed........................................
Download: 7.87 Mbit/s
Testing upload speed..................................................
Upload: 7.81 Mbit/s
1代表一秒統計並顯示一次
100代表統計一百次
使用ntop等工具,就更方便簡單了,不過這個更靈活
P.S.
sar在sysstat包
一. CPU性能評估
1.vmstat [-V] [-n] [depay [count]]
-V : 打印出版本信息,可選參數
-n : 在周期性循環輸出時,頭部信息僅顯示一次
delay : 兩次輸出之間的時間間隔
count : 按照delay指定的時間間隔統計的次數。默認是1
如:vmstat 1 3
user1@user1-desktop:~$ vmstat 1 3
procs -----------memory---------- ---swap-- -----io---- -system-- ----cpu----
r b swpd free buff cache si so bi bo in cs us sy id wa
0 0 0 1051676 139504 477028 0 0 46 31 130 493 3 1 95 2
0 0 0 1051668 139508 477028 0 0 0 4 377 1792 3 1 95 0
0 0 0 1051668 139508 477028 0 0 0 0 327 1741 3 1 95 0
r : 運行和等待CPU時間片的進程數(若長期大於CPU的個數,說明CPU不足,需要增加CPU)【注意】
b : 在等待資源的進程數(如等待I/O或者內存交換等)
swpd : 切換到內存交換區的內存數量,單位kB
free : 當前空閑物理內存,單位kB
buff : buffers cache的內存數量,一般對塊設備的讀寫才需要緩存
cache : page cached的內存數量,一般作為文件系統cached,頻繁訪問的文件都會被cached
si : 由磁盤調入內存,即內存進入內存交換區的數量
so : 內存調入磁盤,內存交換區進入內存的數量
bi : 從塊設備讀入數據的總量,即讀磁盤,單位kB/s
bo : 寫入到塊設備的數據總量,即寫磁盤,單位kB/s
in : 某一時間間隔中觀測到的每秒設備中斷數
cs : 每秒產生的上下文切換次數
us :用戶進程消耗的CPU時間百分比【注意】
sy : 內核進程消耗CPU時間百分比【注意】
id : CPU處在空閑狀態的時間百分比【注意】
wa :IO等待所占用的CPU時間百分比
如果si、so的值長期不為0,表示系統內從不足,需要增加系統內存
bi+bo參考值為1000,若超過1000,且wa較大,表示系統IO有問題,應該提高磁盤的讀寫性能
in與cs越大,內核消耗的CPU時間就越多
us+sy參考值為80%,如果大於80%,說明可能存在CPU資源不足的情況
綜上所述,CPU性能評估中重點注意r、us、sy和id列的值。
2. sar [options] [-o filename] [interval [count] ]
options:
-A :顯示系統所有資源設備(CPU、內存、磁盤)的運行狀態
-u : 顯示系統所有CPU在采樣時間內的負載狀態
-P : 顯示指定CPU的使用情況(CPU計數從0開始)
-d : 顯示所有硬盤設備在采樣時間內的使用狀況
-r : 顯示內存在采樣時間內的使用狀況
-b : 顯示緩沖區在采樣時間內的使用情況
-v : 顯示進程、文件、I節點和鎖表狀態
-n : 顯示網絡運行狀態。參數后跟DEV(網絡接口)、EDEV(網絡錯誤統計)、SOCK(套接字)、FULL(顯示其它3個參數所有)。可單獨或一起使用
-q : 顯示運行隊列的大小,與系統當時的平均負載相同
-R : 顯示進程在采樣時間內的活動情況
-y : 顯示終端設備在采樣時間內的活動情況
-w : 顯示系統交換活動在采樣時間內的狀態
-o : 將命令結果以二進制格式存放在指定的文件中
interval : 采樣間隔時間,必須有的參數
count : 采樣次數,默認1
如:sar -u 1 3
user1@user1-desktop:~$ sar -u 1 3
Linux 2.6.35-27-generic (user1-desktop) 2011年03月05日 _i686_ (2 CPU)
09時27分18秒 CPU %user %nice %system %iowait %steal %idle
09時27分19秒 all 1.99 0.00 0.50 5.97 0.00 91.54
09時27分20秒 all 3.90 0.00 2.93 5.85 0.00 87.32
09時27分21秒 all 2.93 0.00 1.46 4.39 0.00 91.22
平均時間: all 2.95 0.00 1.64 5.40 0.00 90.02
%user : 用戶進程消耗CPU時間百分比
%nice : 運行正常進程消耗CPU時間百分比
%system : 系統進程消耗CPU時間百分比
%iowait : IO等待多占用CPU時間百分比
%steal : 內存在相對緊張壞經下pagein強制對不同頁面進行的steal操作
%idle : CPU處在空閑狀態的時間百分比
3. iostat [-c | -d] [-k] [-t] [-x [device]] [interval [count]]
-c :顯示CPU使用情況
-d :顯示磁盤使用情況
-k : 每秒以k bytes為單位顯示數據
-t : 打印出統計信息開始執行的時間
-x device : 指定要統計的磁盤設備名稱,默認為所有磁盤設備
interval : 制定兩次統計時間間隔
count : 統計次數
如: iostat -c
user1@user1-desktop:~$ iostat -c
Linux 2.6.35-27-generic (user1-desktop) 2011年03月05日 _i686_ (2 CPU)
avg-cpu: %user %nice %system %iowait %steal %idle
2.51 0.02 1.27 1.40 0.00 94.81
(每項代表的含義與sar相同)
4. uptime ,如:(還有一個命令 w )
user1@user1-desktop:~$ uptime
10:13:30 up 1:15, 2 users, load average: 0.00, 0.07, 0.11
顯示的分別是:系統當前時間,系統上次開機到現在運行了多長時間,目前登錄用戶個數,系統在1分鍾內、5分鍾內、15分鍾內的平均負載
注意:load average的三個值一般不能大於系統CPU的個數,否則說明CPU很繁忙
二 . 內存性能評估
1. free
2. watch 與 free 相結合,在watch后面跟上需要運行的命令,watch就會自動重復去運行這個命令,默認是2秒執行一次,如:( watch free )
Every 2.0s: free Sat Mar 5 10:30:17 2011
total used free shared buffers cached
Mem: 2060496 1130188 930308 0 261284 483072
-/+ buffers/cache: 385832 1674664
Swap: 3000316 0 3000316
(-n指定重復執行的時間,-d表示高亮顯示變動)
3.使用vmstat,關注swpd、si和so
4. sar -r,如:
user1@user1-desktop:~$ sar -r 2 3
Linux 2.6.35-27-generic (user1-desktop) 2011年03月05日 _i686_ (2 CPU)
10時34分11秒 kbmemfree kbmemused %memused kbbuffers kbcached kbcommit %commit
10時34分13秒 923548 1136948 55.18 265456 487156 1347736 26.63
10時34分15秒 923548 1136948 55.18 265464 487148 1347736 26.63
10時34分17秒 923548 1136948 55.18 265464 487156 1347736 26.63
平均時間: 923548 1136948 55.18 265461 487153 1347736 26.63
kbmemfree : 空閑物理內存
kbmemused : 已使用物理內存
%memused : 已使用內存占總內存百分比
kbbuffers : Buffer Cache大小
kbcached : Page Cache大小
kbcommit : 應用程序當前使用內存大小
%commit : 應用程序使用內存百分比
三 . 磁盤I/O性能評估
1. sar -d ,如:
user1@user1-desktop:~$ sar -d 1 3
Linux 2.6.35-27-generic (user1-desktop) 2011年03月05日 _i686_ (2 CPU)
10時42分27秒 DEV tps rd_sec/s wr_sec/s avgrq-sz avgqu-sz await svctm %util
10時42分28秒 dev8-0 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00
10時42分28秒 DEV tps rd_sec/s wr_sec/s avgrq-sz avgqu-sz await svctm %util
10時42分29秒 dev8-0 2.00 0.00 64.00 32.00 0.02 8.00 8.00 1.60
10時42分29秒 DEV tps rd_sec/s wr_sec/s avgrq-sz avgqu-sz await svctm %util
10時42分30秒 dev8-0 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00
平均時間: DEV tps rd_sec/s wr_sec/s avgrq-sz avgqu-sz await svctm %util
平均時間: dev8-0 0.67 0.00 21.33 32.00 0.01 8.00 8.00 0.53
DEV : 磁盤設備名稱
tps : 每秒到物理磁盤的傳送數,即每秒的I/O流量。一個傳送就是一個I/O請求,多個邏輯請求可以被合並為一個物理I/O請求
rc_sec/s: 每秒從設備讀入的扇區數(1扇區=512字節)
wr_sec/s : 每秒寫入設備的扇區數目
avgrq-sz : 平均每次設備I/O操作的數據大小(以扇區為單位)
avgqu-sz : 平均I/O隊列的長度
await : 平均每次設備I/O操作的等待時間(毫秒)
svctm :平均每次設備I/O 操作的服務時間(毫秒)
%util : 一秒中有百分之幾的時間用用於I/O操作
正常情況下svctm應該小於await,而svctm的大小和磁盤性能有關,CPU、內存的負荷也會對svctm值造成影響,過多的請求也會簡介導致svctm值的增加。
await的大小一般取決與svctm的值和I/O隊列長度以及I/O請求模式。如果svctm與await很接近,表示幾乎沒有I/O等待,磁盤性能很好;如果await的值遠高於svctm的值,表示I/O隊列等待太長,系統上運行的應用程序將變慢,此時可以通過更換更快的硬盤來解決問題。
%util若接近100%,表示磁盤產生I/O請求太多,I/O系統已經滿負荷地在工作,該磁盤可能存在瓶頸。長期下去,勢必影響系統的性能,可通過優化程序或者通過更換更高、更快的磁盤來解決此問題。
2. iostat -d
user1@user1-desktop:~$ iostat -d 2 3
Linux 2.6.35-27-generic (user1-desktop) 2011年03月05日 _i686_ (2 CPU)
Device: tps Blk_read/s Blk_wrtn/s Blk_read Blk_wrtn
sda 5.89 148.87 57.77 1325028 514144
Device: tps Blk_read/s Blk_wrtn/s Blk_read Blk_wrtn
sda 0.00 0.00 0.00 0 0
Device: tps Blk_read/s Blk_wrtn/s Blk_read Blk_wrtn
sda 0.00 0.00 0.00 0 0
Blk_read/s : 每秒讀取的數據塊數
Blk_wrtn/s : 每秒寫入的數據塊數
Blk_read : 讀取的所有塊數
Blk_wrtn : 寫入的所有塊數
如果Blk_read/s很大,表示磁盤直接讀取操作很多,可以將讀取的數據寫入內存中進行操作;如果Blk_wrtn/s很大,表示磁盤的寫操作很頻繁,可以考慮優化磁盤或者優化程序。這兩個選項沒有一個固定的大小,不同的操作系統值也不同,但長期的超大的數據讀寫,肯定是不正常的,一定會影響系統的性能。
3. iostat -x /dev/sda 2 3 ,對指定磁盤的單獨統計
4. vmstat -d
四 . 網絡性能評估
1. ping
time值顯示了兩台主機之間的網絡延時情況,若很大,表示網絡的延時很大。packets loss表示網絡丟包率,越小表示網絡的質量越高。
2. netstat -i ,如:
user1@user1-desktop:~$ netstat -i
Kernel Interface table
Iface MTU Met RX-OK RX-ERR RX-DRP RX-OVR TX-OK TX-ERR TX-DRP TX-OVR Flg
eth0 1500 0 6043239 0 0 0 87311 0 0 0 BMRU
lo 16436 0 2941 0 0 0 2941 0 0 0 LRU
Iface : 網絡設備的接口名稱
MTU : 最大傳輸單元,單位字節
RX-OK / TX-OK : 准確無誤地接收 / 發送了多少數據包
RX-ERR / TX-ERR : 接收 / 發送數據包時產生了多少錯誤
RX-DRP / TX-DRP : 接收 / 發送數據包時丟棄了多少數據包
RX-OVR / TX-OVR : 由於誤差而遺失了多少數據包
Flg :接口標記,其中:
L :該接口是個回環設備
B : 設置了廣播地址
M : 接收所有的數據包
R :接口正在運行
U : 接口處於活動狀態
O : 在該接口上禁用arp
P :表示一個點到點的連接
正常情況下,RX-ERR,RX-DRP,RX-OVR,TX-ERR,TX-DRP,TX-OVR都應該為0,若不為0且很大,那么網絡質量肯定有問題,網絡傳輸性能也一定會下降。
當網絡傳輸存在問題時,可以檢測網卡設備是否存在故障,還可以檢查網絡部署環境是否合理。
3. netstat -r (default行對應的值表示系統的默認路由)
4. sar -n ,n后為DEV(網絡接口信息)、EDEV(網絡錯誤統計信息)、SOCK(套接字信息)、和FULL(顯示所有)
wangxin@wangxin-desktop:~$ sar -n DEV 2 3
Linux 2.6.35-27-generic (wangxin-desktop) 2011年03月05日 _i686_ (2 CPU)
11時55分32秒 IFACE rxpck/s txpck/s rxkB/s txkB/s rxcmp/s txcmp/s rxmcst/s
11時55分34秒 lo 2.00 2.00 0.12 0.12 0.00 0.00 0.00
11時55分34秒 eth0 2.50 0.50 0.31 0.03 0.00 0.00 0.00
11時55分34秒 IFACE rxpck/s txpck/s rxkB/s txkB/s rxcmp/s txcmp/s rxmcst/s
11時55分36秒 lo 0.00 0.00 0.00 0.00 0.00 0.00 0.00
11時55分36秒 eth0 1.50 0.00 0.10 0.00 0.00 0.00 0.00
11時55分36秒 IFACE rxpck/s txpck/s rxkB/s txkB/s rxcmp/s txcmp/s rxmcst/s
11時55分38秒 lo 0.00 0.00 0.00 0.00 0.00 0.00 0.00
11時55分38秒 eth0 14.50 0.00 0.88 0.00 0.00 0.00 0.00
平均時間: IFACE rxpck/s txpck/s rxkB/s txkB/s rxcmp/s txcmp/s rxmcst/s
平均時間: lo 0.67 0.67 0.04 0.04 0.00 0.00 0.00
平均時間: eth0 6.17 0.17 0.43 0.01 0.00 0.00 0.00
IFACE : 網絡接口設備
rxpck/s : 每秒接收的數據包大小
txpck/s : 每秒發送的數據包大小
rxkB/s : 每秒接受的字節數
txkB/s : 每秒發送的字節數
rxcmp/s : 每秒接受的壓縮數據包
txcmp/s : 每秒發送的壓縮數據包
rxmcst/s : 每秒接受的多播數據包
查流量 nload 、iptraf