Linux查看網(wǎng)絡(luò)性能指標(biāo)實(shí)現(xiàn)方式
一、性能指標(biāo)有哪些?
- 帶寬,表示鏈路的最大傳輸速率,單位是 b/s (比特 / 秒),帶寬越大,其傳輸能力就越強(qiáng)。
- 延時(shí),表示請(qǐng)求數(shù)據(jù)包發(fā)送后,收到對(duì)端響應(yīng),所需要的時(shí)間延遲。不同的場(chǎng)景有著不同的含義,比如可以表示建立 TCP 連接所需的時(shí)間延遲,或一個(gè)數(shù)據(jù)包往返所需的時(shí)間延遲。
- 吞吐率,表示單位時(shí)間內(nèi)成功傳輸?shù)臄?shù)據(jù)量,單位是 b/s(比特 / 秒)或者 B/s(字節(jié) / 秒),吞吐受帶寬限制,帶寬越大,吞吐率的上限才可能越高。
- PPS,全稱是 Packet Per Second(包 / 秒),表示以網(wǎng)絡(luò)包為單位的傳輸速率,一般用來(lái)評(píng)估系統(tǒng)對(duì)于網(wǎng)絡(luò)的轉(zhuǎn)發(fā)能力。
當(dāng)然,除了以上這四種基本的指標(biāo),還有一些其他常用的性能指標(biāo),比如:
- 網(wǎng)絡(luò)的可用性,表示網(wǎng)絡(luò)能否正常通信;
- 并發(fā)連接數(shù),表示 TCP 連接數(shù)量;
- 丟包率,表示所丟失數(shù)據(jù)包數(shù)量占所發(fā)送數(shù)據(jù)組的比率;
- 重傳率,表示重傳網(wǎng)絡(luò)包的比例;
二、查看網(wǎng)絡(luò)配置
ifconfig 屬于 net-tools 軟件包,ip 屬于 iproute2 軟件包,我的印象中 net-tools 軟件包沒有人繼續(xù)維護(hù)了,而 iproute2 軟件包是有開發(fā)者依然在維護(hù),所以更推薦你使用 ip 工具。

第一,網(wǎng)口的連接狀態(tài)標(biāo)志。其實(shí)也就是表示對(duì)應(yīng)的網(wǎng)口是否連接到交換機(jī)或路由器等設(shè)備,如果 ifconfig 輸出中看到有 RUNNING,或者 ip 輸出中有 LOWER_UP,則說(shuō)明物理網(wǎng)絡(luò)是連通的,如果看不到,則表示網(wǎng)口沒有接網(wǎng)線。
第二,MTU 大小。默認(rèn)值是 1500 字節(jié),其作用主要是限制網(wǎng)絡(luò)包的大小,如果 IP 層有一個(gè)數(shù)據(jù)報(bào)要傳,而且網(wǎng)絡(luò)包的長(zhǎng)度比鏈路層的 MTU 還大,那么 IP 層就需要進(jìn)行分片,即把數(shù)據(jù)報(bào)分成若干片,這樣每一片就都小于 MTU。事實(shí)上,每個(gè)網(wǎng)絡(luò)的鏈路層 MTU 可能會(huì)不一樣,所以你可能需要調(diào)大或者調(diào)小 MTU 的數(shù)值。
第三,網(wǎng)口的 IP 地址、子網(wǎng)掩碼、MAC 地址、網(wǎng)關(guān)地址。這些信息必須要配置正確,網(wǎng)絡(luò)功能才能正常工作。
第四,網(wǎng)絡(luò)包收發(fā)的統(tǒng)計(jì)信息。通常有網(wǎng)絡(luò)收發(fā)的字節(jié)數(shù)、包數(shù)、錯(cuò)誤數(shù)以及丟包情況的信息,如果 TX(發(fā)送) 和 RX(接收) 部分中 errors、dropped、overruns、carrier 以及 collisions 等指標(biāo)不為 0 時(shí),則說(shuō)明網(wǎng)絡(luò)發(fā)送或者接收出問(wèn)題了,這些出錯(cuò)統(tǒng)計(jì)信息的指標(biāo)意義如下:
errors表示發(fā)生錯(cuò)誤的數(shù)據(jù)包數(shù),比如校驗(yàn)錯(cuò)誤、幀同步錯(cuò)誤等;dropped表示丟棄的數(shù)據(jù)包數(shù),即數(shù)據(jù)包已經(jīng)收到了 Ring Buffer(這個(gè)緩沖區(qū)是在內(nèi)核內(nèi)存中,更具體一點(diǎn)是在網(wǎng)卡驅(qū)動(dòng)程序里),但因?yàn)橄到y(tǒng)內(nèi)存不足等原因而發(fā)生的丟包;overruns表示超限數(shù)據(jù)包數(shù),即網(wǎng)絡(luò)接收/發(fā)送速度過(guò)快,導(dǎo)致 Ring Buffer 中的數(shù)據(jù)包來(lái)不及處理,而導(dǎo)致的丟包,因?yàn)檫^(guò)多的數(shù)據(jù)包擠壓在 Ring Buffer,這樣 Ring Buffer 很容易就溢出了;carrier表示發(fā)生 carrirer 錯(cuò)誤的數(shù)據(jù)包數(shù),比如雙工模式不匹配、物理電纜出現(xiàn)問(wèn)題等;collisions表示沖突、碰撞數(shù)據(jù)包數(shù);
ifconfig 和 ip 命令只顯示的是網(wǎng)口的配置以及收發(fā)數(shù)據(jù)包的統(tǒng)計(jì)信息,而看不到協(xié)議棧里的信息,那接下來(lái)就來(lái)看看如何查看協(xié)議棧里的信息。
三、查看Socket信息
使用 netstat 或者 ss,這兩個(gè)命令查看 socket、網(wǎng)絡(luò)協(xié)議棧、網(wǎng)口以及路由表的信息。
雖然 netstat 與 ss 命令查看的信息都差不多,但是如果在生產(chǎn)環(huán)境中要查看這類信息的時(shí)候,盡量不要使用 netstat 命令,因?yàn)樗男阅懿缓?,在系統(tǒng)比較繁忙的情況下,如果頻繁使用 netstat 命令則會(huì)對(duì)性能的開銷雪上加霜,所以更推薦你使用性能更好的 ss 命令。

可以發(fā)現(xiàn),輸出的內(nèi)容都差不多, 比如都包含了 socket 的狀態(tài)(State)、接收隊(duì)列(Recv-Q)、發(fā)送隊(duì)列(Send-Q)、本地地址(Local Address)、遠(yuǎn)端地址(Foreign Address)、進(jìn)程 PID 和進(jìn)程名稱(PID/Program name)等。
接收隊(duì)列(Recv-Q)和發(fā)送隊(duì)列(Send-Q)比較特殊,在不同的 socket 狀態(tài)。它們表示的含義是不同的。
當(dāng) socket 狀態(tài)處于 Established時(shí):
- Recv-Q 表示 socket 緩沖區(qū)中還沒有被應(yīng)用程序讀取的字節(jié)數(shù);
- Send-Q 表示 socket 緩沖區(qū)中還沒有被遠(yuǎn)端主機(jī)確認(rèn)的字節(jié)數(shù);
而當(dāng) socket 狀態(tài)處于 Listen 時(shí):
- Recv-Q 表示全連接隊(duì)列的長(zhǎng)度;
- Send-Q 表示全連接隊(duì)列的最大長(zhǎng)度;
那對(duì)于協(xié)議棧的統(tǒng)計(jì)信息,依然還是使用 netstat 或 ss,它們查看統(tǒng)計(jì)信息的命令如下:

ss 命令輸出的統(tǒng)計(jì)信息相比 netsat 比較少,ss 只顯示已經(jīng)連接(estab)、關(guān)閉(closed)、孤兒(orphaned) socket 等簡(jiǎn)要統(tǒng)計(jì)。
而 netstat 則有更詳細(xì)的網(wǎng)絡(luò)協(xié)議棧信息,比如上面顯示了 TCP 協(xié)議的主動(dòng)連接(active connections openings)、被動(dòng)連接(passive connection openings)、失敗重試(failed connection attempts)、發(fā)送(segments send out)和接收(segments received)的分段數(shù)量等各種信息。
四、查看網(wǎng)絡(luò)吞吐率和PPS
可以使用 sar 命令當(dāng)前網(wǎng)絡(luò)的吞吐率和 PPS,用法是給 sar 增加 -n 參數(shù)就可以查看網(wǎng)絡(luò)的統(tǒng)計(jì)信息,比如
- sar -n DEV,顯示網(wǎng)口的統(tǒng)計(jì)數(shù)據(jù);
- sar -n EDEV,顯示關(guān)于網(wǎng)絡(luò)錯(cuò)誤的統(tǒng)計(jì)數(shù)據(jù);
- sar -n TCP,顯示 TCP 的統(tǒng)計(jì)數(shù)據(jù)

它們的含義:
rxpck/s和txpck/s分別是接收和發(fā)送的 PPS,單位為包 / 秒。rxkB/s和txkB/s分別是接收和發(fā)送的吞吐率,單位是 KB/ 秒。rxcmp/s和txcmp/s分別是接收和發(fā)送的壓縮數(shù)據(jù)包數(shù),單位是包 / 秒。
對(duì)于帶寬,我們可以使用 ethtool 命令來(lái)查詢,它的單位通常是 Gb/s 或者 Mb/s,不過(guò)注意這里小寫字母 b ,表示比特而不是字節(jié)。
我們通常提到的千兆網(wǎng)卡、萬(wàn)兆網(wǎng)卡等,單位也都是比特(bit)。
- 如下你可以看到, eth0 網(wǎng)卡就是一個(gè)千兆網(wǎng)卡:
$ ethtool eth0 | grep Speed Speed: 1000Mb/s
五、連通性與延時(shí)性
要測(cè)試本機(jī)與遠(yuǎn)程主機(jī)的連通性和延時(shí),通常是使用 ping 命令,它是基于 ICMP 協(xié)議的,工作在網(wǎng)絡(luò)層。

顯示的內(nèi)容主要包含 icmp_seq(ICMP 序列號(hào))、TTL(生存時(shí)間,或者跳數(shù))以及 time (往返延時(shí)),而且最后會(huì)匯總本次測(cè)試的情況,如果網(wǎng)絡(luò)沒有丟包,packet loss 的百分比就是 0。
不過(guò),需要注意的是,ping 不通服務(wù)器并不代表 HTTP 請(qǐng)求也不通,因?yàn)橛械姆?wù)器的防火墻是會(huì)禁用 ICMP 協(xié)議的。
總結(jié)
以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。
- linux查看網(wǎng)絡(luò)設(shè)備類型的實(shí)現(xiàn)方式
- Linux系統(tǒng)查看當(dāng)前網(wǎng)絡(luò)連接數(shù)的方法小結(jié)
- Linux中查看服務(wù)器內(nèi)存/CPU/網(wǎng)絡(luò)占用情況的命令
- Linux系統(tǒng)查看服務(wù)器帶寬及網(wǎng)絡(luò)使用情況的具體方法
- Linux虛擬機(jī)修改ip地址,查看網(wǎng)關(guān),網(wǎng)絡(luò)環(huán)境配置的教程
- 在Linux中如何查看可用的網(wǎng)絡(luò)接口詳解
- Linux下用netstat查看網(wǎng)絡(luò)狀態(tài)、端口狀態(tài)
相關(guān)文章
linux7下虛擬主機(jī)的三種實(shí)現(xiàn)方式
這篇文章主要介紹了linux7下虛擬主機(jī)的三種實(shí)現(xiàn)方式,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2019-10-10
linux下/etc/passwd文件的選項(xiàng)說(shuō)明
/etc/passwd 文件是系統(tǒng)的主要文件之一。該文件中包含了所有用戶登錄名清單;為所有用戶指定了主目錄;在登錄時(shí)使用的 shell 程序名稱等。該文件還保存了用戶口令;給每個(gè)用戶提供系統(tǒng)識(shí)別號(hào)。2008-06-06
Linux權(quán)限管理與ACL訪問(wèn)控制詳解
Linux權(quán)限管理涵蓋基本rwx權(quán)限(通過(guò)chmod設(shè)置)、特殊權(quán)限(SUID/SGID/StickyBit)及ACL精細(xì)授權(quán),由umask決定默認(rèn)權(quán)限,需合理配置以保障系統(tǒng)安全2025-08-08
Linux實(shí)現(xiàn)多個(gè)JDK版本切換
這篇文章主要介紹了Linux實(shí)現(xiàn)多個(gè)JDK版本切換方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2026-03-03

