linux-sre-handbook

04-网络性能分析

网络性能指标

指标 工具 含义
带宽 (Bandwidth) ethtool, iperf3 理论最大传输速率
吞吐量 (Throughput) iperf3, sar -n DEV 实际传输速率
延迟 (Latency) ping, mtr RTT (往返时间)
抖动 (Jitter) iperf3 -u 延迟变化程度
丢包率 (Packet Loss) ping, mtr, iperf3 数据包丢失比例
重传率 (Retransmit) ss -ti, netstat -s TCP 重传比例
连接数 ss -s 活跃连接总数

工具链

1. 带宽和吞吐量

# 网卡信息
ethtool eth0                         # 速率、双工、驱动
ip -s link show eth0                 # 收发字节/包/错误

# 逐接口流量
sar -n DEV 1                         # 各接口流量
iftop                                # 按连接展示流量
nload                                # 简洁流量图
bmon                                 # 带宽监控

2. 连接和重传

# 连接统计
ss -s                                # 汇总
ss -tan state established            # ESTABLISHED 连接
ss -tan state time-wait | wc -l     # TIME_WAIT 计数
ss -ti                               # TCP 详情(含 RTT、cwnd 等)

# 重传统计
netstat -s | grep -i retrans
ss -ti | grep -oP 'retrans:\d+'     # 每个连接的重传数

3. 延迟分析

ping -c 10 -i 0.2 example.com       # RTT 和丢包率
mtr -r -c 60 example.com            # 逐跳延迟和丢包
tcptraceroute example.com 80        # TCP 方式 traceroute

4. 深入分析

# 抓包
tcpdump -i eth0 -w /tmp/cap.pcap host 10.0.0.1

# TCP 重传模式分析
# 使用 Wireshark 或 tshark 分析 pcap 文件
tshark -r /tmp/cap.pcap -Y "tcp.analysis.retransmission" \
    -T fields -e frame.time_relative -e ip.src -e ip.dst

# 丢包分析
cat /proc/net/dev           # 各接口错误/丢包计数
tc -s qdisc show dev eth0   # 流量控制丢包

网络内核调优

# TCP 缓冲区
net.core.rmem_max = 134217728
net.core.wmem_max = 134217728
net.ipv4.tcp_rmem = 4096 87380 134217728
net.ipv4.tcp_wmem = 4096 65536 134217728

# 连接队列
net.core.somaxconn = 65535
net.core.netdev_max_backlog = 65535

# TIME_WAIT 优化
net.ipv4.tcp_tw_reuse = 1
net.ipv4.tcp_fin_timeout = 15

# 端口范围
net.ipv4.ip_local_port_range = 1024 65535

网络决策树

网络慢?
├─ ping 延迟高 → mtr 定位哪一跳 → 联系 ISP/换线路
├─ 吞吐量低但延迟正常 → 检查窗口大小/带宽限制
├─ 重传率高 → 检查网卡错误/交换机丢包/防火墙
├─ TIME_WAIT 堆积 → 短连接改长连接/调整内核参数
├─ 连接数异常 → 检查连接泄漏/调整 somaxconn
└─ 软中断 CPU 高 → RSS 中断亲和性/网卡队列数

延伸阅读