摘要:這是性能分析系列的第五篇,前四篇在這里一文掌握性能分析之篇一文掌握性能分析之內(nèi)存篇一文掌握性能分析之篇一文掌握性能分析之網(wǎng)絡(luò)篇在上篇網(wǎng)絡(luò)篇中,我們已經(jīng)介紹了幾個網(wǎng)絡(luò)方向的性能分析工具,本文再補充幾個。
本文首發(fā)于我的公眾號 CloudDeveloper(ID: cloud_dev),專注于干貨分享,號內(nèi)有大量書籍和視頻資源,后臺回復(fù)「1024」即可領(lǐng)取,歡迎大家關(guān)注,二維碼文末可以掃。
這是 Linux 性能分析系列的第五篇,前四篇在這里:
一文掌握 Linux 性能分析之 CPU 篇
一文掌握 Linux 性能分析之內(nèi)存篇
一文掌握 Linux 性能分析之 IO 篇
一文掌握 Linux 性能分析之網(wǎng)絡(luò)篇
在上篇網(wǎng)絡(luò)篇中,我們已經(jīng)介紹了幾個 Linux 網(wǎng)絡(luò)方向的性能分析工具,本文再補充幾個??偨Y(jié)下來,余下的工具包括但不限于以下幾個:
sar:統(tǒng)計信息歷史
traceroute:測試網(wǎng)絡(luò)路由
dtrace:TCP/IP 棧跟蹤
iperf / netperf / netserver:網(wǎng)絡(luò)性能測試工具
perf 性能分析神器
由于篇幅有限,本文會先介紹前面兩個,其他工具留作后面介紹,大家可以持續(xù)關(guān)注。
sarsar 是一個系統(tǒng)歷史數(shù)據(jù)統(tǒng)計工具。統(tǒng)計的信息非常全,包括 CPU、內(nèi)存、磁盤 I/O、網(wǎng)絡(luò)、進程、系統(tǒng)調(diào)用等等信息,是一個集大成的工具,非常強大。在 Linux 系統(tǒng)上 sar --help 一下,可以看到它的完整用法。
-A:所有報告的總和
-u:輸出 CPU 使用情況的統(tǒng)計信息
-v:輸出 inode、文件和其他內(nèi)核表的統(tǒng)計信息
-d:輸出每一個塊設(shè)備的活動信息
-r:輸出內(nèi)存和交換空間的統(tǒng)計信息
-b:顯示 I/O和傳送速率的統(tǒng)計信息
-a:文件讀寫情況
-c:輸出進程統(tǒng)計信息,每秒創(chuàng)建的進程數(shù)
-R:輸出內(nèi)存頁面的統(tǒng)計信息
-y:終端設(shè)備活動情況
-w:輸出系統(tǒng)交換活動信息
-n:輸出網(wǎng)絡(luò)設(shè)備統(tǒng)計信息
在平時使用中,我們常常用來分析網(wǎng)絡(luò)狀況,其他幾項的通常有更好的工具來分析。所以,本文會重點介紹 sar 在網(wǎng)絡(luò)方面的分析手法。
Linux 系統(tǒng)用以下幾個選項提供網(wǎng)絡(luò)統(tǒng)計信息:
-n DEV:網(wǎng)絡(luò)接口統(tǒng)計信息。
-n EDEV:網(wǎng)絡(luò)接口錯誤。
-n IP:IP 數(shù)據(jù)報統(tǒng)計信息。
-n EIP:IP 錯誤統(tǒng)計信息。
-n TCP:TCP 統(tǒng)計信息。
-n ETCP:TCP 錯誤統(tǒng)計信息。
-n SOCK:套接字使用。
我們來看幾個示例:
(1)每秒打印 TCP 的統(tǒng)計信息。sar -n TCP 1
幾個參數(shù)了解一下:
active/s:新的 TCP 主動連接(也就是 socket 中的 connect() 事件),單位是:連接數(shù)/s。
passive/s:新的 TCP 被動連接(也就是 socket 中的 listen() 事件)。
iseg/s:接收的段(傳輸層以段為傳輸單位),單位是:段/s
oseg/s:發(fā)送的段。
通過這幾個參數(shù),我們基本可以知道當前系統(tǒng) TCP 連接的負載情況。
(2)每秒打印感興趣的網(wǎng)卡的統(tǒng)計信息sar -n DEV 1 | awk "NR == 3 || $3 == "eth0""
幾個參數(shù)了解一下:
rxpck/s / txpck/s:網(wǎng)卡接收/發(fā)送的數(shù)據(jù)包,單位是:數(shù)據(jù)包/s。
rxkB/s / txkB/s:網(wǎng)卡接收/發(fā)送的千字節(jié),單位是:千字節(jié)/s。
rxcmp/s / txcmp/s:網(wǎng)卡每秒接受/發(fā)送的壓縮數(shù)據(jù)包,單位是:數(shù)據(jù)包/s。
rxmcst/s:每秒接收的多播數(shù)據(jù)包,單位是:數(shù)據(jù)包/s。
%ifutil:網(wǎng)絡(luò)接口的利用率。
這幾個參數(shù)對于分析網(wǎng)卡接收和發(fā)送的網(wǎng)絡(luò)吞吐量很有幫助。
(3)錯誤包和丟包情況分析sar -n EDEV 1
幾個參數(shù)了解一下:
rxerr/s / txerr/s:每秒鐘接收/發(fā)送的壞數(shù)據(jù)包
coll/s:每秒沖突數(shù)
rxdrop/s:因為緩沖充滿,每秒鐘丟棄的已接收數(shù)據(jù)包數(shù)
txdrop/s:因為緩沖充滿,每秒鐘丟棄的已發(fā)送數(shù)據(jù)包數(shù)
txcarr/s:發(fā)送數(shù)據(jù)包時,每秒載波錯誤數(shù)
rxfram/s:每秒接收數(shù)據(jù)包的幀對齊錯誤數(shù)
rxfifo/s / txfifo/s:接收/發(fā)送的數(shù)據(jù)包每秒 FIFO 過速的錯誤數(shù)
當發(fā)現(xiàn)接口傳輸數(shù)據(jù)包有問題時,查看以上參數(shù)能夠讓我們快速判斷具體是出的什么問題。
OK,這個工具就介紹到這里,以上只是拋磚引玉,更多技巧還需要大家動手去探索,只有動手,才能融會貫通。
traceroutetraceroute 也是一個排查網(wǎng)絡(luò)問題的好工具,它能顯示數(shù)據(jù)包到達目標主機所經(jīng)過的路徑(路由器或網(wǎng)關(guān)的 IP 地址)。如果發(fā)現(xiàn)網(wǎng)絡(luò)不通,我們可以通過這個命令來進一步判斷是主機的問題還是網(wǎng)關(guān)的問題。
它通過向源主機和目標主機之間的設(shè)備發(fā)送一系列的探測數(shù)據(jù)包(UDP 或者 ICMP)來發(fā)現(xiàn)設(shè)備的存在,實現(xiàn)上利用了遞增每一個包的 TTL 時間,來探測最終的目標主機。比如開始 TTL = 1,當?shù)竭_第一個網(wǎng)關(guān)設(shè)備的時候,TTL - 1,TTL = 0 導(dǎo)致網(wǎng)關(guān)響應(yīng)一個 ICMP 超時報文,這樣,如果沒有防火墻攔截的話,源主機就知道網(wǎng)關(guān)設(shè)備的地址。以此類推,逐步增加 TTL 時間,就可以探測到目標主機之間所經(jīng)過的路徑。
為了防止發(fā)送和響應(yīng)過程出現(xiàn)問題導(dǎo)致丟包,traceroute 默認會發(fā)送 3 個探測包,我們可以用 -q x 來改變探測的數(shù)量。如果中間設(shè)備設(shè)置了防火墻限制,會導(dǎo)致源主機收不到響應(yīng)包,就會顯示 * 號。如下是 traceroute baidu 的結(jié)果:
每一行默認會顯示設(shè)備名稱(IP 地址)和對應(yīng)的響應(yīng)時間。發(fā)送多少個探測包,就顯示多少個。如果只想顯示 IP 地址可以用 -n 參數(shù),這個參數(shù)可以避免 DNS 域名解析,加快響應(yīng)時間。
和這個工具類似的還有一個工具叫 pathchar,但平時用的不多,我就不介紹了。
以上就是兩個工具的簡單介紹,工具雖然簡單,但只要能解決問題,就是好工具。當然,性能分析不僅僅依靠工具就能解決的,更多需要我們多思考、多動手、多總結(jié),逐步培養(yǎng)自己的系統(tǒng)能力,才能融會貫通。
參考:
iperf3
netperf netserver
https://www.jianshu.com/p/42e...
我的公眾號 cloud_dev,號內(nèi)有大量書籍和視頻資源,后臺回復(fù)「1024」即可領(lǐng)取,分享的內(nèi)容包括但不限于云計算虛擬化、容器、OpenStack、K8S、霧計算、網(wǎng)絡(luò)、工具、SDN、OVS、DPDK、Linux、Go、Python、C/C++編程技術(shù)等內(nèi)容,歡迎大家關(guān)注。
文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請注明本文地址:http://systransis.cn/yun/25485.html
閱讀 2189·2020-06-12 14:26
閱讀 2492·2019-08-29 16:41
閱讀 1890·2019-08-29 15:28
閱讀 2459·2019-08-26 13:43
閱讀 758·2019-08-26 13:37
閱讀 2781·2019-08-23 18:13
閱讀 2804·2019-08-23 15:31
閱讀 1022·2019-08-23 14:10