久久国产成人av_抖音国产毛片_a片网站免费观看_A片无码播放手机在线观看,色五月在线观看,亚洲精品m在线观看,女人自慰的免费网址,悠悠在线观看精品视频,一级日本片免费的,亚洲精品久,国产精品成人久久久久久久

分享

一文讀懂如何查看網(wǎng)絡(luò)的性能指標(biāo)

 好漢勃士 2022-12-09 發(fā)布于廣東

Linux 網(wǎng)絡(luò)協(xié)議棧是根據(jù) TCP/IP 模型來(lái)實(shí)現(xiàn)的,,TCP/IP 模型由應(yīng)用層,、傳輸層、網(wǎng)絡(luò)層和網(wǎng)絡(luò)接口層,,共四層組成,,每一層都有各自的職責(zé)。

文章圖片1

應(yīng)用程序要發(fā)送數(shù)據(jù)包時(shí),,通常是通過(guò) socket 接口,,于是就會(huì)發(fā)生系統(tǒng)調(diào)用,把應(yīng)用層的數(shù)據(jù)拷貝到內(nèi)核里的 socket 層,,接著由網(wǎng)絡(luò)協(xié)議棧從上到下逐層處理后,,最后才會(huì)送到網(wǎng)卡發(fā)送出去。

而對(duì)于接收網(wǎng)絡(luò)包時(shí),,同樣也要經(jīng)過(guò)網(wǎng)絡(luò)協(xié)議逐層處理,,不過(guò)處理的方向與發(fā)送數(shù)據(jù)時(shí)是相反的,也就是從下到上的逐層處理,,最后才送到應(yīng)用程序,。

網(wǎng)絡(luò)的速度往往跟用戶(hù)體驗(yàn)是掛鉤的,那我們又該用什么指標(biāo)來(lái)衡量 Linux 的網(wǎng)絡(luò)性能呢,?以及如何分析網(wǎng)絡(luò)問(wèn)題呢,?


性能指標(biāo)有哪些,?

通常是以 4 個(gè)指標(biāo)來(lái)衡量網(wǎng)絡(luò)的性能,分別是帶寬,、延時(shí),、吞吐率、PPS(Packet Per Second),,它們表示的意義如下:

  • 帶寬,,表示鏈路的最大傳輸速率,單位是 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,全稱(chēng)是 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ò)包的比例,;

你可能會(huì)問(wèn)了,,如何觀測(cè)這些性能指標(biāo)呢?不急,,繼續(xù)往下看,。


網(wǎng)絡(luò)配置如何看?

要想知道網(wǎng)絡(luò)的配置和狀態(tài),,我們可以使用 ifconfig 或者 ip 命令來(lái)查看,。

這兩個(gè)命令功能都差不多,不過(guò)它們屬于不同的軟件包,,ifconfig 屬于 net-tools 軟件包,,ip 屬于 iproute2 軟件包,我的印象中 net-tools 軟件包沒(méi)有人繼續(xù)維護(hù)了,,而 iproute2 軟件包是有開(kāi)發(fā)者依然在維護(hù),,所以更推薦你使用 ip 工具。

學(xué)以致用,,那就來(lái)使用這兩個(gè)命令,,來(lái)查看網(wǎng)口 eth0 的配置等信息:

文章圖片2

雖然這兩個(gè)命令輸出的格式不盡相同,但是輸出的內(nèi)容基本相同,,比如都包含了 IP 地址,、子網(wǎng)掩碼、MAC 地址,、網(wǎng)關(guān)地址,、MTU 大小、網(wǎng)口的狀態(tài)以及網(wǎng)絡(luò)包收發(fā)的統(tǒng)計(jì)信息,,下面就來(lái)說(shuō)說(shuō)這些信息,,它們都與網(wǎng)絡(luò)性能有一定的關(guān)系。

第一,,網(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)口沒(méi)有接網(wǎng)線(xiàn),。

第二,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)境中要查看這類(lèi)信息的時(shí)候,,盡量不要使用 netstat 命令,,因?yàn)樗男阅懿缓茫谙到y(tǒng)比較繁忙的情況下,,如果頻繁使用 netstat 命令則會(huì)對(duì)性能的開(kāi)銷(xiāo)雪上加霜,,所以更推薦你使用性能更好的 ss 命令。

從下面這張圖,,你可以看到這兩個(gè)命令的輸出內(nèi)容:

文章圖片3

可以發(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)程名稱(chēng)(PID/Program name)等。

接收隊(duì)列(Recv-Q)和發(fā)送隊(duì)列(Send-Q)比較特殊,,在不同的 socket 狀態(tài),。它們表示的含義是不同的。

當(dāng) socket 狀態(tài)處于 Established時(shí):

  • Recv-Q 表示 socket 緩沖區(qū)中還沒(méi)有被應(yīng)用程序讀取的字節(jié)數(shù),;

  • Send-Q 表示 socket 緩沖區(qū)中還沒(méi)有被遠(yuǎn)端主機(jī)確認(rèn)的字節(jié)數(shù),;

而當(dāng) socket 狀態(tài)處于 Listen 時(shí):

  • Recv-Q 表示全連接隊(duì)列的長(zhǎng)度;

  • Send-Q 表示全連接隊(duì)列的最大長(zhǎng)度,;

在 TCP 三次握手過(guò)程中,,當(dāng)服務(wù)器收到客戶(hù)端的 SYN 包后,內(nèi)核會(huì)把該連接存儲(chǔ)到半連接隊(duì)列,,然后再向客戶(hù)端發(fā)送 SYN+ACK 包,,接著客戶(hù)端會(huì)返回 ACK,,服務(wù)端收到第三次握手的 ACK 后,內(nèi)核會(huì)把連接從半連接隊(duì)列移除,,然后創(chuàng)建新的完全的連接,,并將其增加到全連接隊(duì)列 ,等待進(jìn)程調(diào)用 accept() 函數(shù)時(shí)把連接取出來(lái),。

文章圖片4

也就說(shuō),,全連接隊(duì)列指的是服務(wù)器與客戶(hù)端完了 TCP 三次握手后,還沒(méi)有被 accept() 系統(tǒng)調(diào)用取走連接的隊(duì)列,。

那對(duì)于協(xié)議棧的統(tǒng)計(jì)信息,,依然還是使用 netstat 或 ss,它們查看統(tǒng)計(jì)信息的命令如下:

文章圖片5

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ù)

比如,,我通過(guò) sar 命令獲取了網(wǎng)口的統(tǒng)計(jì)信息:

文章圖片6

它們的含義:

  • rxpck/s 和 txpck/s 分別是接收和發(fā)送的 PPS,,單位為包 / 秒。

  • rxkB/s 和 txkB/s 分別是接收和發(fā)送的吞吐率,,單位是 KB/ 秒,。

  • rxcmp/s 和 txcmp/s 分別是接收和發(fā)送的壓縮數(shù)據(jù)包數(shù),單位是包 / 秒,。

對(duì)于帶寬,,我們可以使用 ethtool 命令來(lái)查詢(xún),它的單位通常是 Gb/s 或者 Mb/s,,不過(guò)注意這里小寫(xiě)字母 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ò)層,。

比如,如果要測(cè)試本機(jī)到 192.168.12.20 IP 地址的連通性和延時(shí):

文章圖片7

顯示的內(nèi)容主要包含 icmp_seq(ICMP 序列號(hào)),、TTL(生存時(shí)間,,或者跳數(shù))以及 time (往返延時(shí)),而且最后會(huì)匯總本次測(cè)試的情況,,如果網(wǎng)絡(luò)沒(méi)有丟包,,packet loss 的百分比就是 0。

不過(guò),,需要注意的是,,ping 不通服務(wù)器并不代表 HTTP 請(qǐng)求也不通,因?yàn)橛械姆?wù)器的防火墻是會(huì)禁用 ICMP 協(xié)議的,。

工具總結(jié)

性能指標(biāo)

工具

說(shuō)明

吞吐量(BPS)

sar
nethogs
iftop

分別可以查看網(wǎng)絡(luò)接口,、進(jìn)程以及 IP 地址的網(wǎng)絡(luò)吞吐量

PPS

sar
/proc/net/dev

查看網(wǎng)絡(luò)接口的 PPS

連接數(shù)

netstat
ss

查看網(wǎng)絡(luò)連接數(shù)

延遲

ping
hping3

通過(guò) ICMP、TCP等測(cè)試網(wǎng)絡(luò)延遲

連接跟蹤數(shù)

conntrack

查看和管理連接跟蹤狀況

路由

mtr
route
traceroute

查看路由并測(cè)試鏈路信息

DNS

dig
nslookup

排查 DNS 解析問(wèn)題

防火墻和NAT

iptables

配置和管理防火墻及NAT規(guī)則

網(wǎng)卡功能

ethtool

查看和配置網(wǎng)絡(luò)接口的功能

抓包

tcpdump
wireshark

ngrep

抓包分析網(wǎng)絡(luò)流量

內(nèi)核協(xié)議棧跟蹤

bcc
systemtap

動(dòng)態(tài)跟蹤內(nèi)核協(xié)議棧的行為

    本站是提供個(gè)人知識(shí)管理的網(wǎng)絡(luò)存儲(chǔ)空間,,所有內(nèi)容均由用戶(hù)發(fā)布,,不代表本站觀點(diǎn)。請(qǐng)注意甄別內(nèi)容中的聯(lián)系方式,、誘導(dǎo)購(gòu)買(mǎi)等信息,,謹(jǐn)防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,,請(qǐng)點(diǎn)擊一鍵舉報(bào),。
    轉(zhuǎn)藏 分享 獻(xiàn)花(0

    0條評(píng)論

    發(fā)表

    請(qǐng)遵守用戶(hù) 評(píng)論公約

    類(lèi)似文章 更多