概述
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基础知识:如何查看网络性能?所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
发表评论 取消回复