4.9.1 网络性能指标与基线设定
网络性能指标与基线设定是网络调优的起点,目标是用可量化的指标刻画当前网络健康度,并形成可对比的“正常区间”。本节提供指标定义、采集与基线流程,并给出可执行示例、排错与练习。
1. 核心指标与解释(含命令示例)#
链路质量
- RTT/时延抖动(jitter):反映路径稳定性
- 丢包率:反映链路质量与队列拥塞
- 重传率:反映TCP传输质量
传输效率
- 吞吐量(带宽利用率):实际可用带宽
- 连接建立耗时:SYN→SYN-ACK→ACK
资源利用
- 网卡收发、丢包/错误、队列长度、软中断占用
示例:使用 ping 查看RTT与丢包
# 每秒探测一次,发10个包
ping -c 10 -i 1 10.0.0.10
# 关键字段解释:
# rtt min/avg/max/mdev -> RTT/抖动
# packet loss -> 丢包率
示例:查看网卡丢包与错误
# -S 输出统计项,关注rx/tx drops、errors
ethtool -S eth0 | egrep "rx.*drop|tx.*drop|rx.*err|tx.*err"
示例:查看TCP重传与连接状态
# 统计TCP重传(TcpRetransSegs)
netstat -s | egrep "retrans|segments retransmited"
# 连接状态分布
ss -s
示例:查看吞吐量
# 每秒统计网卡流量
sar -n DEV 1 5
# 输出说明:
# rxpck/s txpck/s -> 每秒包数
# rxkB/s txkB/s -> 每秒流量
2. 基线建立流程与可执行示例#
步骤
1) 明确业务场景:并发、请求大小、地域
2) 选定指标与采样周期(秒级/分钟级)
3) 稳定期采集(避开发布与促销)
4) 统计分位数P50/P95/P99
5) 固化“正常区间 + 告警阈值 + 异常阈值”
6) 定期回归(版本/硬件/业务变化后)
示例:采集 RTT 与丢包并生成基线文件
#!/usr/bin/env bash
# 文件:/opt/netbaseline/collect_rtt.sh
# 说明:每分钟采集一次,持续60分钟,输出CSV
TARGET=10.0.0.10
OUT=/opt/netbaseline/rtt.csv
mkdir -p /opt/netbaseline
echo "ts,loss,rtt_min,rtt_avg,rtt_max,rtt_mdev" > $OUT
for i in $(seq 1 60); do
ts=$(date +"%F %T")
result=$(ping -c 10 -i 0.2 $TARGET | tail -1)
loss=$(ping -c 10 -i 0.2 $TARGET | grep -oP '\d+(?=% packet loss)' | head -1)
rtt=$(echo "$result" | awk -F' = ' '{print $2}' | awk -F'/' '{print $1","$2","$3","$4}')
echo "$ts,$loss,$rtt" >> $OUT
sleep 60
done
示例:基线统计(P95/P99)
# 需要安装 datamash:apt/yum install -y datamash
awk -F, 'NR>1{print $4}' /opt/netbaseline/rtt.csv | sort -n > /tmp/rtt_sorted.txt
# 计算P95/P99(示例)
total=$(wc -l /tmp/rtt_sorted.txt | awk '{print $1}')
p95=$(awk -v t=$total 'BEGIN{print int(t*0.95)}')
p99=$(awk -v t=$total 'BEGIN{print int(t*0.99)}')
echo "P95 RTT: $(sed -n ${p95}p /tmp/rtt_sorted.txt) ms"
echo "P99 RTT: $(sed -n ${p99}p /tmp/rtt_sorted.txt) ms"
基线示例区间(需结合实际环境)
- RTT:同机房 P95 < 5ms
- 丢包率:< 0.1%
- TCP重传率:< 1%
- 网卡丢包:rx/tx drops 接近 0
- 带宽利用率:峰值不超过链路上限的 70%
- 连接建立耗时:P95 < 10ms(内网)
3. 安装与工具准备(最小化清单)#
# Ubuntu/Debian
apt update
apt install -y iperf3 ethtool sysstat tcpdump net-tools
# RHEL/CentOS
yum install -y iperf3 ethtool sysstat tcpdump net-tools
iperf3:吞吐量与带宽基线ethtool:网卡统计与驱动信息sysstat(sar):持续采集tcpdump:包级诊断
4. 吞吐基线示例(iperf3)#
服务端:
iperf3 -s -p 5201
客户端:
# 发送60秒,报告带宽
iperf3 -c 10.0.0.10 -p 5201 -t 60 -i 5
# 关键字段解释:
# sender/receiver -> 实际吞吐
# Retr -> TCP重传数
5. 排错清单(常见异常与定位命令)#
- RTT高但丢包低:排查路由、队列、拥塞控制
bash ip route show ss -ti | grep rtt - 丢包高且rx_drops增大:检查网卡队列/驱动/软中断
bash ethtool -S eth0 | egrep "rx.*drop|rx.*err" cat /proc/softirqs | grep NET_RX - 重传率高:检查MTU、链路质量
bash ip link show eth0 ping -M do -s 1472 10.0.0.10 # 验证MTU是否分片 - 吞吐低但CPU高:检查中断绑定与队列
bash mpstat -P ALL 1 5 cat /proc/interrupts | grep eth0
6. 练习#
1) 用 ping 连续采集1小时,计算RTT P95/P99并给出基线区间。
2) 使用 iperf3 测试同机房两台服务器吞吐,记录峰值并给出基线阈值。
3) 人为制造丢包(例如限制带宽或引入延迟),观察 ss -s 与 ethtool -S 变化并记录。
完成基线后,将指标与监控系统打通,建立可视化面板与告警策略,为后续网络诊断、TCP调优与中间件网络优化提供可对比的参照边界。