溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務(wù)條款》

Linux中如何進(jìn)行網(wǎng)絡(luò)性能分析

發(fā)布時間:2021-12-24 14:25:48 來源:億速云 閱讀:654 作者:小新 欄目:系統(tǒng)運維

這篇文章主要為大家展示了“Linux中如何進(jìn)行網(wǎng)絡(luò)性能分析”,內(nèi)容簡而易懂,條理清晰,希望能夠幫助大家解決疑惑,下面讓小編帶領(lǐng)大家一起研究并學(xué)習(xí)一下“Linux中如何進(jìn)行網(wǎng)絡(luò)性能分析”這篇文章吧。

比較寬泛地講,網(wǎng)絡(luò)方向的性能分析既包括主機(jī)測的網(wǎng)絡(luò)配置查看、監(jiān)控,又包括網(wǎng)絡(luò)鏈路上的包轉(zhuǎn)發(fā)時延、吞吐量、帶寬等指標(biāo)分析。包括但不限于以下分析工具:

  • ping:測試網(wǎng)絡(luò)連通性

  • ifconfig:接口配置

  • ip:網(wǎng)絡(luò)接口統(tǒng)計信息

  • netsat:多種網(wǎng)絡(luò)棧和接口統(tǒng)計信息

  • ifstat:接口網(wǎng)絡(luò)流量監(jiān)控工具

  • netcat:快速構(gòu)建網(wǎng)絡(luò)連接

  • tcpdump:抓包工具

  • sar:統(tǒng)計信息歷史

  • traceroute:測試網(wǎng)絡(luò)路由

  • pathchar:確定網(wǎng)絡(luò)路徑特征

  • dtrace:TCP/IP 棧跟蹤

  • iperf / netperf / netserver:網(wǎng)絡(luò)性能測試工具

  • perf 性能分析神器

本文先來看前面 7 個。

ping

ping 發(fā)送 ICMP echo 數(shù)據(jù)包來探測網(wǎng)絡(luò)的連通性,除了能直觀地看出網(wǎng)絡(luò)的連通狀況外,還能獲得本次連接的往返時間(RTT  時間),丟包情況,以及訪問的域名所對應(yīng)的 IP 地址(使用 DNS 域名解析),比如:

Linux中如何進(jìn)行網(wǎng)絡(luò)性能分析

我們 ping baidu.com,-c 參數(shù)指定發(fā)包數(shù)。可以看到,解析到了 baidu 的一臺服務(wù)器 IP 地址為  220.181.112.244。RTT 時間的平均和算術(shù)平均差分別是 40.732ms、40.762ms、40.791ms 和 0.248。

ifconfig

ifconfig 命令被用于配置和顯示 Linux 內(nèi)核中網(wǎng)絡(luò)接口的統(tǒng)計信息。通過這些統(tǒng)計信息,我們也能夠進(jìn)行一定的網(wǎng)絡(luò)性能調(diào)優(yōu)。

Linux中如何進(jìn)行網(wǎng)絡(luò)性能分析

1)ifconfig 顯示網(wǎng)絡(luò)接口配置信息

其中,RX/TX packets 是對接收/發(fā)送數(shù)據(jù)包的情況統(tǒng)計,包括錯誤的包,丟掉多少包等。RX/TX bytes  是接收/發(fā)送數(shù)據(jù)字節(jié)數(shù)統(tǒng)計。其余還有很多參數(shù),就不一一述說了,性能調(diào)優(yōu)時可以重點關(guān)注 MTU 和  txqueuelen(發(fā)送隊列長度),比如可以用下面的命令來對這兩個參數(shù)進(jìn)行微調(diào):

ifconfig eth0 txqueuelen 2000 ifconfig eth0 mtu 1500

2)網(wǎng)絡(luò)接口地址配置

ifconfig 還常用來配置網(wǎng)口的地址,比如:

為網(wǎng)卡配置和刪除IPv6地址:

ifconfig eth0 add 33ffe:3240:800:1005::2/64 #為網(wǎng)卡eth0配置IPv6地址 ifconfig eth0 del 33ffe:3240:800:1005::2/64 #為網(wǎng)卡eth0刪除IPv6地址

修改MAC地址:

ifconfig eth0 hw ether 00:AA:BB:CC:dd:EE

配置IP地址:

ifconfig eth0 192.168.2.10 ifconfig eth0 192.168.2.10 netmask 255.255.255.0 ifconfig eth0 192.168.2.10 netmask 255.255.255.0 broadcast 192.168.2.255

IP

ip 命令用來顯示或設(shè)置 Linux 主機(jī)的網(wǎng)絡(luò)接口、路由、網(wǎng)絡(luò)設(shè)備、策略路由和隧道等信息,是 Linux 下功能強(qiáng)大的網(wǎng)絡(luò)配置工具,旨在替代  ifconfig 命令,如下顯示 IP 命令的強(qiáng)大之處,功能涵蓋到 ifconfig、netstat、route 三個命令。

Linux中如何進(jìn)行網(wǎng)絡(luò)性能分析

netstat

netstat 可以查看整個 Linux 系統(tǒng)關(guān)于網(wǎng)絡(luò)的情況,是一個集多鐘網(wǎng)絡(luò)工具于一身的組合工具。

常用的選項包括以下幾個:

  • 默認(rèn):列出連接的套接字

  • -a:列出所有套接字的信息

  • -s:各種網(wǎng)絡(luò)協(xié)議棧統(tǒng)計信息

  • -i:網(wǎng)絡(luò)接口信息

  • -r:列出路由表

  • -l:僅列出有在 Listen 的服務(wù)狀態(tài)

  • -p:顯示 PID 和進(jìn)程名稱

各參數(shù)組合使用實例如下:

  • netstat -at 列出所有 TCP 端口

  • netstat -au 列出所有 UDP 端口

  • netstat -lt 列出所有監(jiān)聽 TCP 端口的 socket

  • netstat -lu 列出所有監(jiān)聽 UDP 端口的 socket

  • netstat -lx 列出所有監(jiān)聽 UNIX 端口的 socket

  • netstat -ap | grep ssh 找出程序運行的端口

  • netstat -an | grep ':80' 找出運行在指定端口的進(jìn)程

1)netstat 默認(rèn)顯示連接的套接字?jǐn)?shù)據(jù)

Linux中如何進(jìn)行網(wǎng)絡(luò)性能分析

整體上來看,輸出結(jié)果包括兩個部分:

  • Active Internet connections :有源 TCP 連接,其中 Recv-Q 和 Send-Q  指的是接收隊列和發(fā)送隊列,這些數(shù)字一般都是 0,如果不是,說明請求包和回包正在隊列中堆積。

  • Active UNIX domain sockets:有源 UNIX 域套接口,其中 proto 顯示連接使用的協(xié)議,RefCnt  表示連接到本套接口上的進(jìn)程號,Types 是套接口的類型,State 是套接口當(dāng)前的狀態(tài),Path 是連接到套接口的進(jìn)程使用的路徑名。

2)netstat -i 顯示網(wǎng)絡(luò)接口信息

Linux中如何進(jìn)行網(wǎng)絡(luò)性能分析

接口信息包括網(wǎng)絡(luò)接口名稱(Iface)、MTU,以及一系列接收(RX-)和傳輸(TX-)的指標(biāo)。其中 OK 表示傳輸成功的包,ERR 是錯誤包,DRP  是丟包,OVR 是超限包。

這些參數(shù)有助于我們對網(wǎng)絡(luò)收包情況進(jìn)行分析,從而判斷瓶頸所在。

3)netstat -s 顯示所有網(wǎng)絡(luò)協(xié)議棧的信息

Linux中如何進(jìn)行網(wǎng)絡(luò)性能分析

可以看到,這條命令能夠顯示每個協(xié)議詳細(xì)的信息,這有助于我們針對協(xié)議棧進(jìn)行更細(xì)粒度的分析。

4)netstat -r 顯示路由表信息

Linux中如何進(jìn)行網(wǎng)絡(luò)性能分析

這條命令能夠看到主機(jī)路由表的一個情況。當(dāng)然查路由我們也可以用 ip route 和 route 命令,這個命令顯示的信息會更詳細(xì)一些。

ifstat

ifstat 主要用來監(jiān)測主機(jī)網(wǎng)口的網(wǎng)絡(luò)流量,常用的選項包括:

  • -a:監(jiān)測主機(jī)所有網(wǎng)口

  • -i:指定要監(jiān)測的網(wǎng)口

  • -t:在每行輸出信息前加上時間戳

  • -b:以 Kbit/s 顯示流量數(shù)據(jù),而不是默認(rèn)的 KB/s

  • -delay:采樣間隔(單位是 s),即每隔 delay 的時間輸出一次統(tǒng)計信息

  • -count:采樣次數(shù),即共輸出 count 次統(tǒng)計信息

比如,通過以下命令統(tǒng)計主機(jī)所有網(wǎng)口某一段時間內(nèi)的流量數(shù)據(jù):

Linux中如何進(jìn)行網(wǎng)絡(luò)性能分析

可以看出,分別統(tǒng)計了三個網(wǎng)口的流量數(shù)據(jù),前面輸出的時間戳,有助于我們統(tǒng)計一段時間內(nèi)各網(wǎng)口總的輸入、輸出流量。

netcat

netcat,簡稱 nc,命令簡單,但功能強(qiáng)大,在排查網(wǎng)絡(luò)故障時非常有用。

它主要被用來構(gòu)建網(wǎng)絡(luò)連接??梢砸钥蛻舳撕头?wù)端的方式運行,當(dāng)以服務(wù)端方式運行時,它負(fù)責(zé)監(jiān)聽某個端口并接受客戶端的連接,因此可以用它來調(diào)試客戶端程序;當(dāng)以客戶端方式運行時,它負(fù)責(zé)向服務(wù)端發(fā)起連接并收發(fā)數(shù)據(jù),因此也可以用它來調(diào)試服務(wù)端程序,此時它有點像  Telnet 程序。

常用的選項包括以下幾種:

  • -l:以服務(wù)端的方式運行,監(jiān)聽指定的端口。默認(rèn)是以客戶端的方式運行。

  • -k:重復(fù)接受并處理某個端口上的所有連接,必須與 -l 一起使用。

  • -n:使用 IP 地址表示主機(jī),而不是主機(jī)名,使用數(shù)字表示端口號,而不是服務(wù)名稱。

  • -p:當(dāng)以客戶端運行時,指定端口號。

  • -s:設(shè)置本地主機(jī)發(fā)出的數(shù)據(jù)包的 IP 地址。

  • -C:將 CR 和 LF 兩個字符作為結(jié)束符。

  • -U:使用 UNIX 本地域套接字通信。

  • -u:使用 UDP 協(xié)議通信,默認(rèn)使用的是 TCP 協(xié)議。

  • -w:如果 nc 客戶端在指定的時間內(nèi)未檢測到任何輸入,則退出。

  • -X:當(dāng) nc 客戶端與代理服務(wù)器通信時,該選項指定它們之間的通信協(xié)議,目前支持的代理協(xié)議包括 “4”(SOCKS v.4),“5”(SOCKS  v.5)和 “connect” (HTTPs Proxy),默認(rèn)使用 SOCKS v.5。

  • -x:指定目標(biāo)代理服務(wù)器的 IP 地址和端口號。

下面舉一個簡單的例子,使用 nc 命令發(fā)送消息:

首先,啟動服務(wù)端,用 nc -l 0.0.0.0 12345 監(jiān)聽端口 12345 上的所有連接。

Linux中如何進(jìn)行網(wǎng)絡(luò)性能分析

然后,啟動客戶端,用 nc -p 1234 127.0.0.1 12345 使用 1234 端口連接服務(wù)器 127.0.0.1::12345。

Linux中如何進(jìn)行網(wǎng)絡(luò)性能分析

接著就可以在兩端互發(fā)數(shù)據(jù)了。這里只是拋磚引玉,更多例子大家可以多實踐。

tcpdump

tcpdump是一個強(qiáng)大的網(wǎng)絡(luò)抓包工具。雖然有 wireshark 這樣更易使用的圖形化抓包工具,但 tcpdump  仍然是網(wǎng)絡(luò)排錯的必備利器。

tcpdump 選項很多,我就不一一列舉了,大家可以看文章末尾的引用來進(jìn)一步了解。這里列舉幾種 tcpdump 常用的用法。

1)捕獲某主機(jī)的數(shù)據(jù)包

比如想要捕獲主機(jī) 200.200.200.100 上所有收到和發(fā)出的所有數(shù)據(jù)包,使用:

tcpdump host 200.200.200.100

2)捕獲多個主機(jī)的數(shù)據(jù)包

比如要捕獲主機(jī) 200.200.200.1 和主機(jī) 200.200.200.2 或 200.200.200.3 的通信,使用:

tcpdump host 200.200.200.1 and (200.200.200.2 or )

同樣要捕獲主機(jī) 200.200.200.1 除了和主機(jī) 200.200.200.2 之外所有主機(jī)通信的 IP 包。使用:

tcpdump ip host 200.200.200.1 and ! 200.200.200.2

3)捕獲某主機(jī)接收或發(fā)出的某種協(xié)議類型的包

比如要捕獲主機(jī) 200.200.200.1 接收或發(fā)出的 Telnet 包,使用:

tcpdump tcp port 23 host 200.200.200.1

4)捕獲某端口相關(guān)的數(shù)據(jù)包

比如捕獲在端口 6666 上通過的包,使用:

tcpdump port 6666

5)捕獲某網(wǎng)口的數(shù)據(jù)包

比如捕獲在網(wǎng)口 eth0 上通過的包,使用:

tcpdump -i eth0

以上是“Linux中如何進(jìn)行網(wǎng)絡(luò)性能分析”這篇文章的所有內(nèi)容,感謝各位的閱讀!相信大家都有了一定的了解,希望分享的內(nèi)容對大家有所幫助,如果還想學(xué)習(xí)更多知識,歡迎關(guān)注億速云行業(yè)資訊頻道!

向AI問一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進(jìn)行舉報,并提供相關(guān)證據(jù),一經(jīng)查實,將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI