性能指標(biāo)
常用性能指標(biāo)
- 帶寬,表示鏈路的最大傳輸速率
- 吞吐量淹朋,表示單位時間內(nèi)成功傳輸?shù)臄?shù)據(jù)量
- 延時笙各,表示從網(wǎng)絡(luò)請求發(fā)出后,一直收到遠(yuǎn)端相應(yīng)础芍,所需要的時間延遲杈抢。
- PPS,是 Packet Per Second(包 / 秒)的縮寫仑性,表示以網(wǎng)絡(luò)包為單位的傳輸速率惶楼。
其它性能指標(biāo)
網(wǎng)絡(luò)的可用性(網(wǎng)絡(luò)能否正常通信)、并發(fā)連接數(shù)(TCP 連接數(shù)量)诊杆、丟包率(丟包百分比)歼捐、重傳率(重新傳輸?shù)木W(wǎng)絡(luò)包比例)等也是常用的性能指標(biāo)。
網(wǎng)絡(luò)配置
# ifconfig eth1
eth1: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500
inet 9.134.167.17 netmask 255.255.252.0 broadcast 9.134.167.255
inet6 fe80::5054:ff:fed2:861a prefixlen 64 scopeid 0x20<link>
ether 52:54:00:d2:86:1a txqueuelen 1000 (Ethernet)
RX packets 2208265079 bytes 2250150418319 (2.0 TiB)
RX errors 0 dropped 0 overruns 0 frame 0
TX packets 1194884309 bytes 481836721760 (448.7 GiB)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
# ip -s addr show dev eth1
2: eth1: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc mq state UP group default qlen 1000
link/ether 52:54:00:d2:86:1a brd ff:ff:ff:ff:ff:ff
inet 9.134.167.17/22 brd 9.134.167.255 scope global noprefixroute eth1
valid_lft forever preferred_lft forever
inet6 fe80::5054:ff:fed2:861a/64 scope link
valid_lft forever preferred_lft forever
RX: bytes packets errors dropped missed mcast
2250150441296 2208265311 0 0 0 0
TX: bytes packets errors dropped carrier collsns
481836762646 1194884519 0 0 0 0
幾個需要注意的指標(biāo):
- 網(wǎng)絡(luò)接口的狀態(tài)標(biāo)志晨汹,ifconfig 輸出中的 RUNNING 豹储,或 ip 輸出中的 LOWER_UP ,都表示物理網(wǎng)絡(luò)是連通的淘这。
- MTU 的大小剥扣。
- 網(wǎng)絡(luò)接口的 IP巩剖,MAC 地址
- 網(wǎng)絡(luò)收發(fā)的字節(jié)數(shù)、包數(shù)钠怯、錯誤數(shù)以及丟包情況球及,特別是 TX 和 RX 部分的 errors、dropped呻疹、overruns吃引、carrier 以及 collisions 等指標(biāo)不為 0 時,通常表示出現(xiàn)了網(wǎng)絡(luò) I/O 問題刽锤。其中:
- errors 表示發(fā)生錯誤的數(shù)據(jù)包數(shù)镊尺,比如校驗錯誤,幀同步錯誤等并思;
- dropped 表示丟棄的數(shù)據(jù)包數(shù)庐氮,即數(shù)據(jù)包已經(jīng)收到了 Ring Buffer,但因為內(nèi)存不足等原因丟包宋彼;
- overruns 表示超限數(shù)據(jù)包數(shù)弄砍,即網(wǎng)絡(luò) I/O 速度過快,導(dǎo)致 Ring Buffer 中的數(shù)據(jù)包來不及處理(隊列滿)而導(dǎo)致的丟包输涕;
- carrier 表示發(fā)生 carrirer 錯誤的數(shù)據(jù)包數(shù)音婶,比如雙工模式不匹配、物理電纜出現(xiàn)問題等莱坎;
- collisions 表示碰撞數(shù)據(jù)包數(shù)衣式。
套接字信息
# head -n 3 表示只顯示前面3行
# -l 表示只顯示監(jiān)聽套接字
# -n 表示顯示數(shù)字地址和端口(而不是名字)
# -p 表示顯示進(jìn)程信息
$ netstat -nlp | head -n 3
Active Internet connections (only servers)
Proto Recv-Q Send-Q Local Address Foreign Address State PID/Program name
tcp 0 0 127.0.0.53:53 0.0.0.0:* LISTEN 840/systemd-resolve
# -l 表示只顯示監(jiān)聽套接字
# -t 表示只顯示 TCP 套接字
# -n 表示顯示數(shù)字地址和端口(而不是名字)
# -p 表示顯示進(jìn)程信息
$ ss -ltnp | head -n 3
State Recv-Q Send-Q Local Address:Port Peer Address:Port
LISTEN 0 128 127.0.0.53%lo:53 0.0.0.0:* users:(("systemd-resolve",pid=840,fd=13))
LISTEN 0 128 0.0.0.0:22 0.0.0.0:* users:(("sshd",pid=1459,fd=3))
其中,接收隊列(Recv-Q)和發(fā)送隊列(Send-Q)需要特別關(guān)注檐什,它們通常應(yīng)該是 0碴卧。當(dāng)你發(fā)現(xiàn)它們不是 0 時,說明有網(wǎng)絡(luò)包的堆積發(fā)生乃正。當(dāng)然還要注意住册,在不同套接字狀態(tài)下,它們的含義不同瓮具。
當(dāng)套接字處于連接狀態(tài)(Established)時荧飞,
- Recv-Q 表示套接字緩沖還沒有被應(yīng)用程序取走的字節(jié)數(shù)(即接收隊列長度)。
- 而 Send-Q 表示還沒有被遠(yuǎn)端主機確認(rèn)的字節(jié)數(shù)(即發(fā)送隊列長度)搭综。
當(dāng)套接字處于監(jiān)聽狀態(tài)(Listening)時垢箕, - Recv-Q 表示全連接隊列的長度。
- 而 Send-Q 表示全連接隊列的最大長度兑巾。
協(xié)議棧統(tǒng)計信息
$ netstat -s
...
Tcp:
3244906 active connection openings
23143 passive connection openings
115732 failed connection attempts
2964 connection resets received
1 connections established
13025010 segments received
17606946 segments sent out
44438 segments retransmitted
42 bad segments received
5315 resets sent
InCsumErrors: 42
...
$ ss -s
Total: 186 (kernel 1446)
TCP: 4 (estab 1, closed 0, orphaned 0, synrecv 0, timewait 0/0), ports 0
Transport Total IP IPv6
* 1446 - -
RAW 2 1 1
UDP 2 2 0
TCP 4 3 1
...
網(wǎng)絡(luò)吞吐和 PPS
給 sar 增加 -n 參數(shù)就可以查看網(wǎng)絡(luò)的統(tǒng)計信息,比如網(wǎng)絡(luò)接口(DEV)忠荞、網(wǎng)絡(luò)接口錯誤(EDEV)蒋歌、TCP帅掘、UDP、ICMP 等等堂油。執(zhí)行下面的命令修档,你就可以得到網(wǎng)絡(luò)接口統(tǒng)計信息:
# 數(shù)字1表示每隔1秒輸出一組數(shù)據(jù)
$ sar -n DEV 1
Linux 4.15.0-1035 (ubuntu) 01/06/19 _x86_64_ (2 CPU)
13:21:40 IFACE rxpck/s txpck/s rxkB/s txkB/s rxcmp/s txcmp/s rxmcst/s %ifutil
13:21:41 eth0 18.00 20.00 5.79 4.25 0.00 0.00 0.00 0.00
13:21:41 docker0 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00
13:21:41 lo 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00
- rxpck/s 和 txpck/s 分別是接收和發(fā)送的 PPS,單位為包 / 秒府框。
- rxkB/s 和 txkB/s 分別是接收和發(fā)送的吞吐量吱窝,單位是 KB/ 秒。
- rxcmp/s 和 txcmp/s 分別是接收和發(fā)送的壓縮數(shù)據(jù)包數(shù)迫靖,單位是包 / 秒院峡。
- %ifutil 是網(wǎng)絡(luò)接口的使用率,即半雙工模式下為 (rxkB/s+txkB/s)/Bandwidth系宜,而全雙工模式下為 max(rxkB/s, txkB/s)/Bandwidth照激。
連通性和延遲
ping -c3 10.123.119.98
PING 10.123.119.98 (10.123.119.98) 56(84) bytes of data.
64 bytes from 10.123.119.98: icmp_seq=1 ttl=117 time=6.46 ms
64 bytes from 10.123.119.98: icmp_seq=2 ttl=117 time=6.53 ms
64 bytes from 10.123.119.98: icmp_seq=3 ttl=117 time=6.76 ms
--- 10.123.119.98 ping statistics ---
3 packets transmitted, 3 received, 0% packet loss, time 2003ms
rtt min/avg/max/mdev = 6.462/6.583/6.758/0.142 ms
ping 的輸出,可以分為兩部分盹牧。
- 第一部分俩垃,是每個 ICMP 請求的信息,包括 ICMP 序列號(icmp_seq)汰寓、TTL(生存時間口柳,或者跳數(shù))以及往返延時。
- 第二部分有滑,則是三次 ICMP 請求的匯總啄清。