我是靠谱客的博主 感动可乐,最近开发中收集的这篇文章主要介绍Linux基础知识:如何查看网络性能?,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

1、首先我们通过两个工具来查看网络接口的配置和状态(ifconfig和ip命令)

        1.1 已网络ens33为例,首先看ifconfig的接口状态:

harbo@harbo-virtual-machine:~$ ifconfig ens33
ens33: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500
        inet 192.168.40.133  netmask 255.255.255.0  broadcast 192.168.40.255
        inet6 fe80::f436:8d68:7e98:c93d  prefixlen 64  scopeid 0x20<link>
        ether 00:0c:29:02:4a:5b  txqueuelen 1000  (Ethernet)
        RX packets 14603  bytes 10515845 (10.5 MB)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 6648  bytes 726403 (726.4 KB)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

        1.2 已网络ens33为例,看一下ip -s  addr show dev ens33的接口状态

harbo@harbo-virtual-machine:~$ ip -s addr show dev ens33
2: ens33: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc fq_codel state UP group default qlen 1000
    link/ether 00:0c:29:02:4a:5b brd ff:ff:ff:ff:ff:ff
    altname enp2s1
    inet 192.168.40.133/24 brd 192.168.40.255 scope global dynamic noprefixroute ens33
       valid_lft 1752sec preferred_lft 1752sec
    inet6 fe80::f436:8d68:7e98:c93d/64 scope link noprefixroute 
       valid_lft forever preferred_lft forever
    RX:  bytes packets errors dropped  missed   mcast           
      10543274   14853      0       0       0       0 
    TX:  bytes packets errors dropped carrier collsns           
        744485    6813      0       0       0       0 

        1.3 两者命令输出的内容基本相同,只是显示格式略微不同。

                1.3.1 网络接口的状态标志。ifconfig 显示【RUNNING】,IP 输出【LOWER_UP】,表示物理网络是连通。如果看不到它们的状态,可能网线被拔掉了。

                1.3.2 MTU的大小,MTU默认大小是1500,可能需要根据网络架构的不同调整MTU大小

                1.3.3 网络接口的配置信息需要确保正确,IP地址、子网掩码及MAC地址。

                1.3.4 网络收发的字节数、包数、错误数以及丢包情况,特别是 TX 和 RX 部分的 errors、dropped、overruns、carrier 以及 collisions 等指标不为 0 时,通常表示出现了网络 I/O 问题        

                 1.3.5 errors 表示发生错误的数据包数,比如校验错误、帧同步错误等;
                 1.3.6 dropped 表示丢弃的数据包数,即数据包已经收到了 Ring Buffer,但因为内存不足等原因丢包;
                 1.3.7 overruns 表示超限数据包数,即网络 I/O 速度过快,导致 Ring Buffer 中的数据包来不及处理(队列满)而导致的丢包;
                 1.3.8 carrier 表示发生 carrirer 错误的数据包数,比如双工模式不匹配、物理电缆出现问题等;
                 1.3.9 collisions 表示碰撞数据包数。

2、查看网络协议栈的统计信息

        2.1 可以使用netstat或者SS,来查看套接字、网络栈、网络接口以及路由信息

        2.2 首先我们使用netstat,来查询套接字信息;

# head -n 3 表示只显示前面3行
# -l 表示只显示监听套接字
# -n 表示显示数字地址和端口(而不是名字)
# -p 表示显示进程信息
harbo@harbo-virtual-machine:~$  netstat -nlp | head -n 3
(Not all processes could be identified, non-owned process info
 will not be shown, you would have to be root to see it all.)
Active Internet connections (only servers)
Proto Recv-Q Send-Q Local Address           Foreign Address         State       PID/Program name    
tcp        0      0 127.0.0.53:53           0.0.0.0:*               LISTEN      -             

# -l 表示只显示监听套接字
# -t 表示只显示 TCP 套接字
# -n 表示显示数字地址和端口(而不是名字)
# -p 表示显示进程信息
harbo@harbo-virtual-machine:~$  ss -ltnp | head -n 3
State  Recv-Q Send-Q Local Address:Port  Peer Address:PortProcess
LISTEN 0      4096   127.0.0.53%lo:53         0.0.0.0:*          
LISTEN 0      128          0.0.0.0:22         0.0.0.0:* 

        2.3 需要注意两个参数接收队列(Recv-Q)和发送队列(Send-Q),它们通常为0。当它们不是0时,说明网络包有堆积发生,当然还要注意,在不同套接字状态下,它们的含义不同。

        2.4 当套接字处于连接状态(Established)时,

                2.4.1 Recv-Q 表示套接字缓冲还没有被应用程序取走的字节数(即接收队列长度)。

                2.4.2 而 Send-Q 表示还没有被远端主机确认的字节数(即发送队列长度)。

        2.5 当套接字处于监听状态(LISTEN)时,

                2.5.1 Recv-Q 表示全连接队列的长度

                2.5.2 而 Send-Q 表示全连接队列的最大长度

        2.6 协议栈统计信息

                2.6.1  分别使用netstat和SS,查看协议栈的信息。

#  -s, --statistics         display networking statistics (like SNMP)

harbo@harbo-virtual-machine:~$ netstat  -s
Ip:
    Forwarding: 1
    10149 total packets received
    1 with invalid addresses
    0 forwarded
    0 incoming packets discarded
    10139 incoming packets delivered
    7453 requests sent out
    20 outgoing packets dropped
Icmp:
    40 ICMP messages received
    0 input ICMP message failed
    ICMP input histogram:
        destination unreachable: 40
    43 ICMP messages sent
    0 ICMP messages failed
    ICMP output histogram:
        destination unreachable: 43
IcmpMsg:
        InType3: 40
        OutType3: 43
Tcp:
    93 active connection openings
    7 passive connection openings
    0 failed connection attempts
    3 connection resets received
    4 connections established
    8332 segments received
    6061 segments sent out
    51 segments retransmitted
    0 bad segments received
    4 resets sent
Udp:
    1626 packets received
    43 packets to unknown port received
    0 packet receive errors
    1308 packets sent
    0 receive buffer errors
    0 send buffer errors
    IgnoredMulti: 99
UdpLite:
TcpExt:
    13 TCP sockets finished time wait in fast timer
    67 delayed acks sent
    3192 packet headers predicted
    866 acknowledgments not containing data payload received
    2830 predicted acknowledgments
    TCPLostRetransmit: 33
    TCPTimeouts: 51
    TCPBacklogCoalesce: 1
    2 connections reset due to early user close
    1 connections aborted due to timeout
    TCPRcvCoalesce: 146
    TCPAutoCorking: 40
    TCPSynRetrans: 51
    TCPOrigDataSent: 4269
    TCPKeepAlive: 9
    TCPDelivered: 4355
    TcpTimeoutRehash: 51
IpExt:
    InNoRoutes: 7
    InMcastPkts: 505
    OutMcastPkts: 138
    InBcastPkts: 99
    InOctets: 10238578
    OutOctets: 743160
    InMcastOctets: 52362
    OutMcastOctets: 14631
    InBcastOctets: 8478
    InNoECTPkts: 15508
MPTcpExt:
harbo@harbo-virtual-machine:~$ ss -s
Total: 786
TCP:   30 (estab 4, closed 8, orphaned 0, timewait 0)

Transport Total     IP        IPv6
RAW	  1         0         1        
UDP	  7         5         2        
TCP	  22        14        8        
INET	  30        19        11       
FRAG	  0         0         0        

                2.6.2 从两者信息输出可以看出,netstat的统计信息比较全面(TCP协议的主动连接、被动连接、失败重试、发送和接收的分段数量等各种信息)。而ss 只显示了连接、关闭、孤儿套接字等简要统计。

3、网络吞吐和PPS 

        3.1 使用sar命令查看网络吞吐量和PPS。(如果没有安装的话,安装一下sysstat

#数字1表示每隔15秒输出一组数据
sar -n DEV 15

给 sar 增加 -n 参数就可以查看网络的统计信息,比如网络接口(DEV)、网络接口错误(EDEV)、TCP、UDP、ICMP 等等。执行下面的命令,你就可以得到网络接口统计信息:

-n { <keyword> [,...] | ALL }
		Network statistics [A_NET_...]
		Keywords are:
		DEV	Network interfaces
		EDEV	Network interfaces (errors)
		NFS	NFS client
		NFSD	NFS server
		SOCK	Sockets	(v4)
		IP	IP traffic	(v4)
		EIP	IP traffic	(v4) (errors)
		ICMP	ICMP traffic	(v4)
		EICMP	ICMP traffic	(v4) (errors)
		TCP	TCP traffic	(v4)
		ETCP	TCP traffic	(v4) (errors)
		UDP	UDP traffic	(v4)
		SOCK6	Sockets	(v6)
		IP6	IP traffic	(v6)
		EIP6	IP traffic	(v6) (errors)
		ICMP6	ICMP traffic	(v6)
		EICMP6	ICMP traffic	(v6) (errors)
		UDP6	UDP traffic	(v6)
		FC	Fibre channel HBAs
		SOFT	Software-based network processing
harbo@harbo-virtual-machine:~$ sar  -n  DEV 30
Linux 5.15.0-40-generic (harbo-virtual-machine) 	2022年07月04日 	_x86_64_	(2 CPU)

15时40分15秒     IFACE   rxpck/s   txpck/s    rxkB/s    txkB/s   rxcmp/s   txcmp/s  rxmcst/s   %ifutil
15时40分45秒        lo      0.00      0.00      0.00      0.00      0.00      0.00      0.00      0.00
15时40分45秒     ens33      0.07      0.10      0.00      0.01      0.00      0.00      0.00      0.00
15时40分45秒   docker0      0.00      0.00      0.00      0.00      0.00      0.00      0.00      0.00
15时40分45秒 veth8a707f0      0.00      0.00      0.00      0.00      0.00      0.00      0.00      0.00
15时40分45秒 veth3357878      0.00      0.00      0.00      0.00      0.00      0.00      0.00      0.00
15时40分45秒 vethfc2ac27      0.00      0.00      0.00      0.00      0.00      0.00      0.00      0.00
15时40分45秒 veth7d0558d      0.00      0.00      0.00      0.00      0.00      0.00      0.00      0.00

        3.2  rxpck/s 和 txpck/s 分别是接收和发送的 PPS,单位为包 / 秒。
        3.3  rxkB/s 和 txkB/s 分别是接收和发送的吞吐量,单位是 KB/ 秒。
        3.4 rxcmp/s 和 txcmp/s 分别是接收和发送的压缩数据包数,单位是包 / 秒。
        3.5 %ifutil 是网络接口的使用率,即半双工模式下为 (rxkB/s+txkB/s)/Bandwidth

        3.6 全双工模式下为 max(rxkB/s, txkB/s)/Bandwidth。

        3.7 如何确定网卡硬件,可以使用ethtool命令

harbo@harbo-virtual-machine:~$ ethtool ens33 | grep Speed
	Speed: 1000Mb/s

4、关于ping命令和Tracert 的命令使用,可以看看的另一篇博客。

https://blog.csdn.net/qq_39507436/article/details/125593507?spm=1001.2014.3001.5501

 本文整理自极客时间 倪朋飞:《Linux性能优化实战》

最后

以上就是感动可乐为你收集整理的Linux基础知识:如何查看网络性能?的全部内容,希望文章能够帮你解决Linux基础知识:如何查看网络性能?所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(55)

评论列表共有 0 条评论

立即
投稿
返回
顶部