简介
本文章主要通过Linux命令查看网络信息、判断是否出现网络瓶颈等简单分析方法。其他硬件性能分析如下:
1. 硬件性能 - CPU瓶颈分析
2. 硬件性能 - 掌握内存知识
3. 硬件性能 - 磁盘瓶颈分析
目录
1. 监控命令 sar
2. 带宽利用率
3. 网络延迟
4. 网络连接数
5. 模拟网络故障
1. 监控命令 sar
sar 命令实时查看网络情况(详细命令:Linux性能监控命令_sar & 自动保存30天历史信息)
# 监控网卡信息
sar -n DEV 间隔时间 监控次数# 监控网卡异常信息
sar -n EDEV 间隔时间 监控次数# 查看历史信息(06表示本月6号,只保存1个月信息)
sar -f /var/log/sa/sa06 -n DEV
每1秒输出一次网卡信息
IFACE :网卡名
rxpck/s :每秒接收的包
txpck/s :每秒发送的包
rxkB/s :每秒接收的大小(单位 KB)
txkB/s :每秒发送的大小(单位 KB)
rxcmp/s :每秒接收的压缩包
txcmp/s :每秒发送的压缩包
rxmcst/s:每秒接收的多播包
每1秒输出一次网卡异常信息
IFACE :网卡名
rxerr/s :每秒接收错误的数量
txerr/s :每秒发送错误的数量
coll/s :每秒发生冲突的数量
rxdrop/s:每秒接收丢弃的数据包数量
txdrop/s:每秒发送丢弃的数据包数量
txcarr/s:每秒发送信号载波的数量
rxfram/s:每秒接收帧错误的数量
rxfifo/s:每秒接收的FIFO错误数量
txfifo/s:每秒发送的FIFO错误数量
txcomp/s:每秒传输完成的数量
2. 带宽利用率
监测带宽利用率可以清晰知道系统当前网络传输的整体效率。如果带宽利用率接近100%,可能意味着已经达到带宽瓶颈。
由于没有命令可以直接查看带宽利用率,我们可以用 sar 的监控结果计算,公式如下:
(接收大小 + 发送大小) / 最大传输 * 100
接收大小 (rxkB/s) 和发送大小 (txkB/s) 如 sar 监控结果:
sar -n DEV 1
传输大小查看方法
1. 先根据自己的 IP 找到网卡名
ip a
2. 在查看网卡的带宽(传输大小)
ethtool 网卡名
根据我们刚才的结果来计算
每秒接收大小:563.63 KB
每秒发送大小:1014.05 KB
最大传输大小:1000Mb/s 换算成KB:(1000/8)*1024=128000 KB
- 单位换算:1MB = 8Mb,1MB = 1024KB
按公式计算(乘以100是为了代入百分号)
( 563.63 + 1014.05 ) / 128000 * 100 = 1.23%
从结果来看,利用率非常低,无性能瓶颈
当然了,如果觉得计算不方便,可以直接看发送和接收的大小是否接近最大传输。以千兆网络为例:(1000/8)*1024=128000 KB,只需要看发送和接收大小相加是不是接近 128000 即可。如果接近这个值,说明可能存在网络瓶颈;如果相差较远,则没有网络瓶颈。
3. 网络延迟
除了带宽利用率,网络延迟也是衡量传输性能的指标之一。您可以使用工具如ping、traceroute 或者 mtr 来评估网络延迟和响应时间。如果网络延迟较高或响应时间不稳定,可能表示网络传输达到了瓶颈。
使用 ping 命令,查看另一个网络是否通畅
icmp_seq:发出ICMP回显请求
ttl :数据包的生存时间
time :从发送 ICMP 请求到接收到回应所花费的往返时间
# 最后一行
发送3包,接收3包,0%丢包,时间2060ms
从ping命令分析网络
较高的往返时间:当
ping
命令输出中的往返时间较高时,表示从发送请求到接收响应所需的时间较长。一般来说,正常的往返时间应该在几毫秒或几十毫秒内。当往返时间超过100毫秒或更高时,可以认为存在网络延迟问题。延迟波动较大:
ping
命令的输出中,每次往返时间的变化应保持相对稳定。如果出现明显的波动,例如从几毫秒突然跳到几百毫秒,或者时间间隔内的方差较大,那么这可能是网络连接存在延迟问题的迹象。丢包率较高:在
ping
命令输出中,丢失的 ICMP 请求百分比(packet loss)较高,即未收到响应的请求占总请求数的比例较大时,可能是由于网络延迟导致请求无法到达目标主机或无法返回响应。
结合 watch 命令实时查看是否丢包(Ctrl + C 退出)
# 每3秒发送1个包
watch -n 3 ping -c 1 IP地址
4. 网络连接数
如果网络传输达到瓶颈,可能会导致网络连接的延迟增加或连接失败。当连接请求到达系统时,如果队列已满,新的连接请求将被拒绝。将会导致网络延迟增加、带宽利用率降低等问题。
连接数仅仅只能初步估计网络瓶颈,还需要考虑系统负载、带宽利用率、网络设备的能力等都可能对网络性能产生影响。更深入的网络性能分析和故障排除通常需要结合其他工具和指标来进行。
查看系统套接字最大连接数(默认128)
sysctl net.core.somaxconn
查看当前系统连接数
netstat -ant | grep ESTABLISHED | wc -l
5. 模拟网络故障
tc 命令模拟网络故障
# 模拟延迟100ms
sudo tc qdisc add dev 网卡名 root netem delay 100ms# 模拟丢包率10%
sudo tc qdisc change dev 网卡名 root netem loss 10%# 模拟网络延迟100ms,带宽限制为1Mbps
sudo tc qdisc add dev 网卡名 root handle 1:0 netem delay 100ms rate 1mbit# 模拟网络抖动,延迟100ms ± 50
sudo tc qdisc add dev 网卡名 root handle 1:0 netem delay 100ms 50ms distribution normal# 还原网络设置
sudo tc qdisc del dev 网卡名 root