深色模式
网络带宽容量
网络容量有三个天花板:带宽(bits/s)、包速率(PPS)、并发连接数。不同业务先撞到的天花板不同,要分别算。
适用环境
- Linux 主机,能执行
sar/ethtool/ss - 服务为 HTTP/API 或文件/视频分发
- 已知网卡规格与云厂商限制
bash
# 确认网卡速率与驱动
ethtool eth0 | grep -E 'Speed|Link detected'
sudo apt-get install -y sysstat iproute21
2
3
2
3
操作步骤
1. 采集当前流量
bash
# 每秒刷新,看 rxkB/s 与 txkB/s
sar -n DEV 1 5
# 换算成 Mbps:kB/s × 8 / 1000
sar -n DEV 1 1 | awk '/eth0/{printf "in=%.1f Mbps out=%.1f Mbps\n", $5*8/1000, $6*8/1000}'1
2
3
4
5
2
3
4
5
promql
# Prometheus 中算带宽占用率
rate(node_network_receive_bytes_total{device="eth0"}[5m]) * 8 / 1000 / 1000 # Mbps1
2
2
2. 建立流量模型
text
入向带宽 = 峰值 QPS × 平均请求大小 × 8 / 1e6 (Mbps)
出向带宽 = 峰值 QPS × 平均响应大小 × 8 / 1e6 (Mbps)
示例:
峰值 QPS 3000
平均请求 2 KB、响应 30 KB
入向 = 3000 × 2048 × 8 / 1e6 ≈ 49 Mbps
出向 = 3000 × 30720 × 8 / 1e6 ≈ 737 Mbps1
2
3
4
5
6
7
8
2
3
4
5
6
7
8
注意:绝大多数 Web 服务是出向受限,别只盯着入口带宽。
bash
# 从 Nginx 日志取真实平均响应大小($body_bytes_sent)
awk '{s+=$10; n++} END{printf "avg body=%.0f bytes\n", s/n}' access.log1
2
2
3. 算包速率 PPS(小包场景必做)
bash
sar -n DEV 1 5 | grep eth0 # 看 rxpck/s 与 txpck/s1
text
PPS = 带宽(bps) / (包大小 × 8)
小包(64 B)时:1 Gbps ≈ 1.49 Mpps1
2
2
心跳、DNS、游戏、实时消息这类小包业务,PPS 会远早于带宽打满。
4. 算并发连接数
bash
# 当前连接数
ss -s
ss -tan state established | wc -l
# 按目标端口统计
ss -tan | awk '{print $4}' | grep ':8080$' | wc -l1
2
3
4
5
6
2
3
4
5
6
promql
node_netstat_Tcp_CurrEstab1
估算:
text
连接数 = 峰值 QPS × 平均响应时间(s) × keepalive 放大
示例:3000 × 0.05 × 1.2 ≈ 180 条(内部 RPC,短连接少)
若客户端为长轮询/移动端,系数可能达 10+1
2
3
2
3
5. 核对三个天花板
bash
# 文件描述符与端口范围,连接数上限常卡在这里
ulimit -n
cat /proc/sys/net/ipv4/ip_local_port_range
cat /proc/sys/net/netfilter/nf_conntrack_max 2>/dev/null1
2
3
4
2
3
4
| 天花板 | 检查命令 | 告警阈值 |
|---|---|---|
| 带宽 | sar -n DEV 1 | 峰值 ≥ 70% 网卡速率 |
| PPS | sar -n DEV 1 | 接近网卡标称 PPS |
| 连接数 | ss -s / nf_conntrack_count | ≥ 70% 上限 |
6. 加入内部流量(别漏掉东西向)
text
总带宽 = 南北向(用户)+ 东西向(服务间调用、DB 同步、日志采集、备份)1
备份与日志采集常在业务低峰跑满带宽,要单独排期错峰。
验证
bash
# 用 iperf3 实测两台机器间可达带宽
iperf3 -s # 服务端
iperf3 -c 10.0.0.12 -t 30 -P 4 # 客户端,-P 并行流1
2
3
2
3
实测值应 ≥ 需求带宽 ÷ 0.7。
常见坑
只看入口带宽
API/视频/图片服务出向流量远大于入向。按入向选型会在峰值时出向直接打满。
单位换算错误
kB/s × 8 / 1000 = Mbps(或直接 MB/s × 8 = Mbps)。把 KB 当 kb 算会低估 8 倍,这是最常见的容量事故原因之一。
忽略云厂商的连接数/PPS 限制
云主机的 PPS 上限和 conntrack 上限往往远低于其标称带宽。小包高并发业务必须先向厂商确认实例规格的 PPS 与连接数配额。
压测时压测机带宽打满
千兆压测机压万兆服务端,结果永远上不去。压测前先用 iperf3 确认压测机网卡不是瓶颈。