自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

一文掌握 Linux 性能分析之網(wǎng)絡(luò)篇

系統(tǒng) Linux
比較寬泛地講,網(wǎng)絡(luò)方向的性能分析既包括主機測的網(wǎng)絡(luò)配置查看、監(jiān)控,又包括網(wǎng)絡(luò)鏈路上的包轉(zhuǎn)發(fā)時延、吞吐量、帶寬等指標分析。

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

  • 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 域名解析),比如:

 

我們 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)計信息,我們也能夠進行一定的網(wǎng)絡(luò)性能調(diào)優(yōu)。

 

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ù)進行微調(diào):

  1. ifconfig eth0 txqueuelen 2000 
  2. ifconfig eth0 mtu 1500  

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

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

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

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

修改MAC地址:

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

配置IP地址:

  1. ifconfig eth0 192.168.2.10 
  2. ifconfig eth0 192.168.2.10 netmask 255.255.255.0 
  3. ifconfig eth0 192.168.2.10 netmask 255.255.255.0 broadcast 192.168.2.255 

IP

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

 

netstat

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

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

  • 默認:列出連接的套接字
  • -a:列出所有套接字的信息
  • -s:各種網(wǎng)絡(luò)協(xié)議棧統(tǒng)計信息
  • -i:網(wǎng)絡(luò)接口信息
  • -r:列出路由表
  • -l:僅列出有在 Listen 的服務(wù)狀態(tài)
  • -p:顯示 PID 和進程名稱

各參數(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' 找出運行在指定端口的進程

1)netstat 默認顯示連接的套接字數(shù)據(jù)

 

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

  • Active Internet connections :有源 TCP 連接,其中 Recv-Q 和 Send-Q 指的是接收隊列和發(fā)送隊列,這些數(shù)字一般都是 0,如果不是,說明請求包和回包正在隊列中堆積。
  • Active UNIX domain sockets:有源 UNIX 域套接口,其中 proto 顯示連接使用的協(xié)議,RefCnt 表示連接到本套接口上的進程號,Types 是套接口的類型,State 是套接口當前的狀態(tài),Path 是連接到套接口的進程使用的路徑名。

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

 

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

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

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

 

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

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

 

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

ifstat

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

  • -a:監(jiān)測主機所有網(wǎng)口
  • -i:指定要監(jiān)測的網(wǎng)口
  • -t:在每行輸出信息前加上時間戳
  • -b:以 Kbit/s 顯示流量數(shù)據(jù),而不是默認的 KB/s
  • -delay:采樣間隔(單位是 s),即每隔 delay 的時間輸出一次統(tǒng)計信息
  • -count:采樣次數(shù),即共輸出 count 次統(tǒng)計信息

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

 

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

netcat

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

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

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

  • -l:以服務(wù)端的方式運行,監(jiān)聽指定的端口。默認是以客戶端的方式運行。
  • -k:重復(fù)接受并處理某個端口上的所有連接,必須與 -l 一起使用。
  • -n:使用 IP 地址表示主機,而不是主機名,使用數(shù)字表示端口號,而不是服務(wù)名稱。
  • -p:當以客戶端運行時,指定端口號。
  • -s:設(shè)置本地主機發(fā)出的數(shù)據(jù)包的 IP 地址。
  • -C:將 CR 和 LF 兩個字符作為結(jié)束符。
  • -U:使用 UNIX 本地域套接字通信。
  • -u:使用 UDP 協(xié)議通信,默認使用的是 TCP 協(xié)議。
  • -w:如果 nc 客戶端在指定的時間內(nèi)未檢測到任何輸入,則退出。
  • -X:當 nc 客戶端與代理服務(wù)器通信時,該選項指定它們之間的通信協(xié)議,目前支持的代理協(xié)議包括 “4”(SOCKS v.4),“5”(SOCKS v.5)和 “connect” (HTTPs Proxy),默認使用 SOCKS v.5。
  • -x:指定目標代理服務(wù)器的 IP 地址和端口號。

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

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

 

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

 

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

tcpdump

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

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

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

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

  1. tcpdump host 200.200.200.100 

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

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

  1. tcpdump host 200.200.200.1 and (200.200.200.2 or ) 

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

tcpdump ip host 200.200.200.1 and ! 200.200.200.2

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

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

  1. tcpdump tcp port 23 host 200.200.200.1 

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

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

  1. tcpdump port 6666 

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

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

  1. tcpdump -i eth0 

下面還是舉個例子,抓取 TCP 三次握手的包:(具體抓包的過程請移步到我的公眾號進一步了解,那里閱讀體驗好一點,謝謝。)

總結(jié):

本文總結(jié)了幾種初級的網(wǎng)絡(luò)工具,基本的網(wǎng)絡(luò)性能分析,通過組合以上幾種工具,基本都能應(yīng)付,但對于復(fù)雜的問題,以上工具可能就無能為力了。更多高階的工具將在下文送上,敬請期待。

責(zé)任編輯:武曉燕 來源: 今日頭條
相關(guān)推薦

2022-10-27 07:21:47

Linux性能頻率

2021-05-12 18:22:36

Linux 內(nèi)存管理

2020-10-09 07:56:52

Linux

2020-12-18 11:54:22

Linux系統(tǒng)架構(gòu)

2021-02-22 09:05:59

Linux字符設(shè)備架構(gòu)

2021-06-04 09:35:05

Linux字符設(shè)備架構(gòu)

2022-12-20 07:39:46

2023-12-21 17:11:21

Containerd管理工具命令行

2022-10-21 17:24:34

契約測試定位

2020-07-30 07:50:56

數(shù)據(jù)分析

2023-10-24 11:44:21

2023-12-15 09:45:21

阻塞接口

2017-11-29 13:55:55

神經(jīng)網(wǎng)絡(luò)循環(huán)神經(jīng)網(wǎng)絡(luò)RNN

2022-08-01 14:59:57

Web前端后端

2017-11-28 15:20:27

Python語言編程

2023-03-10 07:57:26

2023-08-01 09:27:44

Golang模糊測試

2024-11-19 09:00:00

Pythondatetime模塊

2025-04-18 05:50:59

Spring接口Aware

2022-07-05 06:30:54

云網(wǎng)絡(luò)網(wǎng)絡(luò)云原生
點贊
收藏

51CTO技術(shù)棧公眾號