日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 运维知识 > linux >内容正文

linux

性能之巅:Linux网络性能分析工具-netstat,ifconfig,nicstat,traceroute,tcpdump

發(fā)布時(shí)間:2025/3/21 linux 35 豆豆
生活随笔 收集整理的這篇文章主要介紹了 性能之巅:Linux网络性能分析工具-netstat,ifconfig,nicstat,traceroute,tcpdump 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

原文地址:http://www.infoq.com/cn/articles/linux-networking-performance-analytics

本文介紹基于Linux操作系統(tǒng)的網(wǎng)絡(luò)性能分析工具。它們的使用策略參見前面的部分。

本節(jié)介紹的工具列于下表中。

Linux

Solaris

描述

netstat

netstat

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

sar

-

統(tǒng)計(jì)信息歷史

ifconfig

ifconfig

接口配置

ip

dladm

網(wǎng)絡(luò)接口統(tǒng)計(jì)信息

nicstat

nicstat

網(wǎng)絡(luò)接口吞吐量和使用率

ping

ping

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

traceroute

traceroute

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

pathchar

pathchar

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

tcpdump

snoop/tcpdump

網(wǎng)絡(luò)數(shù)據(jù)包嗅探器

Wireshark

Wireshark

圖形化網(wǎng)絡(luò)數(shù)據(jù)包檢查器

DTrace, perf

DTrace

TCP/IP棧跟蹤:連接、數(shù)據(jù)包、丟包、延時(shí)

本文將僅介紹Linux系統(tǒng)中的前7個(gè)網(wǎng)絡(luò)性能分析工具。一開始是系統(tǒng)層面的統(tǒng)計(jì)數(shù)據(jù),進(jìn)而向下挖掘到包嗅探和事件跟蹤。完整的功能請(qǐng)參考這些工具的文檔,包括Man手冊(cè)。

netstat

基于使用的選項(xiàng),netstat(8)命令能報(bào)告多種類型的網(wǎng)絡(luò)統(tǒng)計(jì)數(shù)據(jù),就像具有多種功能的組合工具。選項(xiàng)介紹如下:

  • (默認(rèn)):列出連接的套接字。
  • -a:列出所有套接字的信息。
  • -s:網(wǎng)絡(luò)棧統(tǒng)計(jì)信息。
  • -i:網(wǎng)絡(luò)接口信息。
  • -r:列出路由表。

其他選項(xiàng)能修改輸出,例如-n不解析IP地址為主機(jī)名,以及-v(可用時(shí))顯示冗長的詳細(xì)信息。

一個(gè)netstat(8)接口統(tǒng)計(jì)信息的示例如下:

數(shù)據(jù)列包括網(wǎng)絡(luò)接口(Iface)、MTU,以及一系列接收(RX-)和傳輸(TX-)的指標(biāo)。

  • OK:成功傳輸?shù)臄?shù)據(jù)包。
  • ERR:錯(cuò)誤數(shù)據(jù)包。
  • DRP:丟包。
  • OVR:超限。

丟包和超限是網(wǎng)絡(luò)接口飽和的指針,并且能和錯(cuò)誤一起用USE方法檢查。

-c連續(xù)模式能與-i一并使用,每秒輸出這些累積的計(jì)數(shù)器。它提供計(jì)算數(shù)據(jù)包速率的數(shù)據(jù)。

下面是一個(gè)netstat(8)網(wǎng)絡(luò)棧統(tǒng)計(jì)數(shù)據(jù)(片段)的示例:

輸出列出了多項(xiàng)按協(xié)議分組的網(wǎng)絡(luò)數(shù)據(jù),主要是來自TCP的。所幸的是,其中多數(shù)有較長的描述性名稱,因此它們的意思顯而易見。不幸的是這些輸出缺乏一致性而且有拼寫錯(cuò)誤,用程序處理這段文字比較麻煩。

許多與性能相關(guān)的指標(biāo)以加粗強(qiáng)調(diào),用以指出可用的信息。其中許多指標(biāo)要求對(duì)TCP行為的深刻理解,包括近些年引入的的最新功能和算法。下面是一些值得查找的示例指標(biāo)。

  • 相比接收的總數(shù)據(jù)包更高速的包轉(zhuǎn)發(fā)率:檢查服務(wù)器是否應(yīng)該轉(zhuǎn)發(fā)(路由)數(shù)據(jù)包。
  • 開放的被動(dòng)連接:監(jiān)視它們能顯示客戶機(jī)連接負(fù)載。
  • 相比發(fā)送的數(shù)據(jù)段更高的數(shù)據(jù)段重傳輸率:能支持網(wǎng)絡(luò)的不穩(wěn)定。這可能是意料之中的(互聯(lián)網(wǎng)客戶)。
  • 套接字緩沖超限導(dǎo)致的數(shù)據(jù)包從接收隊(duì)列中刪除:這是網(wǎng)絡(luò)飽和的標(biāo)志,能夠通過增加套接字緩沖來修復(fù)——前提是有足夠的系統(tǒng)資源支持應(yīng)用程序。

一些統(tǒng)計(jì)信息名稱包括拼寫錯(cuò)誤。如果其他的監(jiān)視工具建立在同樣的輸出上,簡單地修復(fù)它們可能有問題。這類工具最好能從/proc資源讀取這些統(tǒng)計(jì)信息,它們是/proc/net/snmp和/proc/net/netstat。例如:

/proc/net/snmp統(tǒng)計(jì)信息也用于SNMP管理信息庫(MIB),它提供關(guān)于每個(gè)統(tǒng)計(jì)信息的用途的更進(jìn)一步的文檔。擴(kuò)展的統(tǒng)計(jì)信息在/proc/net/netstat中。

netstat(8)可以接受以秒為單位的時(shí)間間隔,它按每個(gè)時(shí)間間隔連續(xù)地輸出累加的計(jì)數(shù)器。后期處理這些輸出可以計(jì)算每個(gè)計(jì)數(shù)器的速率。

sar

系統(tǒng)活動(dòng)報(bào)告工具sar(1)可以觀測當(dāng)前活動(dòng)并且能配置為保存和報(bào)告歷史統(tǒng)計(jì)數(shù)據(jù)。第4章中介紹過它,并且本書的多個(gè)章節(jié)在需要時(shí)也會(huì)提及它。

Linux版本用以下選項(xiàng)提供網(wǎng)絡(luò)統(tǒng)計(jì)信息。

  • -n DEV:網(wǎng)絡(luò)接口統(tǒng)計(jì)信息。
  • -n EDEV:網(wǎng)絡(luò)接口錯(cuò)誤。
  • -n IP:IP數(shù)據(jù)報(bào)統(tǒng)計(jì)信息。
  • -n EIP:IP錯(cuò)誤統(tǒng)計(jì)信息。
  • -n TCP:TCP統(tǒng)計(jì)信息。
  • -n ETCP:TCP錯(cuò)誤統(tǒng)計(jì)信息。
  • -n SOCK:套接字使用。

提供的統(tǒng)計(jì)信息見下表。

選項(xiàng)

統(tǒng)計(jì)信息

描述

單位

-n DEV

rxpkg/s

接收的數(shù)據(jù)包

數(shù)據(jù)包/s

-n DEV

txpkt/s

傳輸?shù)臄?shù)據(jù)包

數(shù)據(jù)包/s

-n DEV

rxkB/s

接收的千字節(jié)

千字節(jié)/s

-n DEV

txkB/s

傳輸?shù)那ё止?jié)

千字節(jié)/s

-n EDEV

rxerr/s

接收數(shù)據(jù)包錯(cuò)誤

數(shù)據(jù)包/s

-n EDEV

txerr/s

傳輸數(shù)據(jù)包錯(cuò)誤

數(shù)據(jù)包/s

-n EDEV

coll/s

碰撞

數(shù)據(jù)包/s

-n EDEV

rxdrop/s

接收數(shù)據(jù)包丟包(緩沖滿)

數(shù)據(jù)包/s

-n EDEV

txdrop/s

傳輸數(shù)據(jù)包丟包(緩沖滿)

數(shù)據(jù)包/s

-n EDEV

rxfifo/s

接收的數(shù)據(jù)包FIFO超限錯(cuò)誤

數(shù)據(jù)包/s

-n EDEV

txfifo/s

傳輸?shù)臄?shù)據(jù)包FIFO超限錯(cuò)誤

數(shù)據(jù)包/s

-n IP

irec/s

輸入的數(shù)據(jù)報(bào)文(接收)

數(shù)據(jù)報(bào)文/s

-n IP

fwddgm/s

轉(zhuǎn)發(fā)的數(shù)據(jù)報(bào)文

數(shù)據(jù)報(bào)文/s

-n IP

orq/s

輸出的數(shù)據(jù)報(bào)文請(qǐng)求(傳輸)

數(shù)據(jù)報(bào)文/s

-n EIP

idisc/s

輸入的丟棄(例如,緩沖滿)

數(shù)據(jù)報(bào)文/s

-n EIP

odisc/s

輸出的丟棄(例如,緩沖滿)

數(shù)據(jù)報(bào)文/s

-n TCP

active/s

新的主動(dòng)TCP連接(connect())

連接數(shù)/s

-n TCP

active/s

新的被動(dòng)TCP連接(listen())

連接數(shù)/s

-n TCP

active/s

輸入的段(接收)

段/s

-n TCP

active/s

輸出的段(接收)

段/s

-n ETCP

active/s

主動(dòng)TCP失敗連接

連接數(shù)/s

-n ETCP

active/s

TCP段重傳

段/s

-n SOCK

totsck

使用中的總數(shù)據(jù)包

sockets

-n SOCK

ip-frag

當(dāng)前隊(duì)列中的IP數(shù)據(jù)片

fragments

-n SOCK

tcp-tw

TIME-WAIT中的TCP套接字

sockets

這里,許多統(tǒng)計(jì)信息名稱包括方向和計(jì)量單位:rx是“接收”,i是“輸入”,seg是“段”,依此類推。完整的列表參考Man手冊(cè),它包括ICMP、UDP、NFS和IPv6在內(nèi)的統(tǒng)計(jì)信息以及對(duì)應(yīng)的SNMP名稱的說明(例如,ipInReceives對(duì)應(yīng)irec/s)。

以下示例是每秒打印的TCP統(tǒng)計(jì)信息:

輸出顯示被動(dòng)連接率(入站)接近30/s。

網(wǎng)絡(luò)接口統(tǒng)計(jì)信息列(NET)列出所有接口,然而通常只對(duì)一個(gè)接口感興趣。以下示例利用awk(1)過濾輸出:

這顯示出傳輸和發(fā)送的網(wǎng)絡(luò)吞吐量。這里雙向的速率都超過了2MB/s。

ifconfig

ifconfig(8)命令能手動(dòng)設(shè)置網(wǎng)絡(luò)接口。它也可以列出所有接口的當(dāng)前配置。用它來檢查系統(tǒng)、網(wǎng)絡(luò)以及路由設(shè)置有助于靜態(tài)性能調(diào)優(yōu)。

Linux版本的輸出包括以下這些統(tǒng)計(jì)信息:

這些計(jì)數(shù)器與之前介紹的netstat -i命令一致。txqueuelen是這個(gè)接口發(fā)送隊(duì)列的長度。Man手冊(cè)介紹了這個(gè)數(shù)值的調(diào)優(yōu):

對(duì)于速度較低的高延時(shí)設(shè)備(調(diào)制解調(diào)器連接,ISDN),設(shè)置較小的值有助于預(yù)防高速的大量傳輸影響如telnet在內(nèi)的交互通信。

Linux中,ifconfig(8)已經(jīng)被ip(8)命令淘汰。

ip

Linux的ip(8)命令能配置網(wǎng)絡(luò)接口和路由,并且觀測它們的狀態(tài)和統(tǒng)計(jì)信息。例如,顯示連接統(tǒng)計(jì)信息:

除了添加了接收(RX)和傳輸(TX)字節(jié),這些計(jì)數(shù)器與之前介紹的netstat -i命令一致。這利于方便地觀測吞吐量,不過ip(8)不提供按時(shí)間間隔輸出報(bào)告的方式(利用sar(1))。

nicstat

最初為基于Solaris的系統(tǒng)編寫,nicstat(1)這個(gè)開源工具輸出包括吞吐量和使用率在內(nèi)的網(wǎng)絡(luò)接口統(tǒng)計(jì)信息。nicstat(1)延續(xù)傳統(tǒng)的資源統(tǒng)計(jì)工具iostat(1M)和mpstat(1M)的風(fēng)格。用C和Perl編寫的版本可用于基于Solaris和Linux的系統(tǒng)[3]。

例如以下的1.92 Linux版本的輸出:

最前面的輸出是自系統(tǒng)啟動(dòng)以來的總結(jié),緊接著是按時(shí)間間隔的總結(jié)。這里的時(shí)間間隔總結(jié)顯示了eth4接口的使用率為35%(這里報(bào)告的是當(dāng)前RX或者TX方向的最大值),并且讀速度為42MB/s。

字段包括接口名稱(Int)、最大使用率(%Util)、反映接口飽和度的統(tǒng)計(jì)信息(Sat),以及一系列帶前綴的統(tǒng)計(jì)信息:r是“讀”(接收)而w是“寫”(傳輸)。

  • KB/s:千字節(jié)每秒。
  • Pk/s:數(shù)據(jù)包每秒。
  • Avs/s:平均數(shù)據(jù)包大小,以字節(jié)為單位。

該版本支持多種選項(xiàng),包括-z用來忽略數(shù)值為0的行(閑置的接口)以及-t顯示TCP統(tǒng)計(jì)信息。

由于能提供使用率和飽和度數(shù)值,nicstat(1)特別適用于USE方法。

ping

ping(8)命令發(fā)送ICMP echo請(qǐng)求數(shù)據(jù)包測試網(wǎng)絡(luò)連通性。例如:

輸出顯示每個(gè)包的往返時(shí)間(rtt)并總結(jié)各種統(tǒng)計(jì)信息。由于時(shí)間戳是由ping(8)命令自己計(jì)量的,其中包括獲取時(shí)間戳到處理網(wǎng)絡(luò)I/O的整個(gè)CPU代碼路徑執(zhí)行時(shí)間。

與應(yīng)用程序協(xié)議相比,路由器可能以較低的優(yōu)先級(jí)處理ICMP數(shù)據(jù)包,因而延時(shí)可能比通常情況下有更高的波動(dòng)。

traceroute

traceroute(8)命令發(fā)出一系列數(shù)據(jù)包實(shí)驗(yàn)性地探測到一個(gè)主機(jī)當(dāng)前的路由。它的實(shí)現(xiàn)利用了遞增每個(gè)數(shù)據(jù)包IP協(xié)議的生存時(shí)間(TTL),從而導(dǎo)致網(wǎng)關(guān)順序地發(fā)送ICMP超時(shí)響應(yīng)報(bào)文,向主機(jī)揭示自己的存在(如果防火墻沒有攔截它們)。

例如測試一個(gè)加利福尼亞的主機(jī)與一個(gè)弗吉尼亞的目標(biāo)間當(dāng)前的路由:

每一跳顯示連續(xù)的三個(gè)RTT,它們可用作網(wǎng)絡(luò)延時(shí)統(tǒng)計(jì)信息的粗略數(shù)據(jù)源。類似ping(8),由于發(fā)送低優(yōu)先級(jí)的數(shù)據(jù)包,它可能會(huì)顯示出比其他應(yīng)用程序協(xié)議更高的延時(shí)。

也可以把顯示的路徑作為靜態(tài)性能調(diào)優(yōu)的研究對(duì)象。網(wǎng)絡(luò)被設(shè)計(jì)為動(dòng)態(tài)的并且能響應(yīng)故障。路徑的變化可能會(huì)降低性能。

書籍介紹

《性能之巔:洞悉系統(tǒng)、企業(yè)與云計(jì)算》基于Linux 和Solaris系統(tǒng)闡述了適用于所有系統(tǒng)的性能理論和方法,Brendan Gregg 將業(yè)界普遍承認(rèn)的性能方法、工具和指標(biāo)收集于本書之中。閱讀本書,你能洞悉系統(tǒng)運(yùn)作的方式,學(xué)習(xí)到分析和提高系統(tǒng)與應(yīng)用程序性能的方法,這些性能方法同樣適用于大型企業(yè)與云計(jì)算這類最為復(fù)雜的環(huán)境的性能分析與調(diào)優(yōu)。

《新程序員》:云原生和全面數(shù)字化實(shí)踐50位技術(shù)專家共同創(chuàng)作,文字、視頻、音頻交互閱讀

總結(jié)

以上是生活随笔為你收集整理的性能之巅:Linux网络性能分析工具-netstat,ifconfig,nicstat,traceroute,tcpdump的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。