Appearance
Day 21: 百万连接上的业务流量 (Active Traffic on 1M Connections)
所属阶段:阶段 6 — 百万长连接
今日目标
100 万连接不能只是"挂着",要真正在上面收发数据。今天逐步加入活跃流量,观测 PPS(Packets Per Second,每秒数据包数)和延迟变化。
实验设计
bash
# 在 100 万已建立的连接上,逐步唤醒部分连接发送数据
# 活跃连接数: 1 万 → 5 万 → 10 万
# 每连接每秒 1 条消息| 活跃连接 | PPS 预期 | 风险 |
|---|---|---|
| 1 万 | ~2 万 PPS | 无 |
| 5 万 | ~10 万 PPS | %soft 开始上升 |
| 10 万 | ~20 万 PPS | 接近网卡 PPS 上限? |
观测维度
bash
# PPS 和带宽
sar -n DEV 1
# IFACE rxpck/s txpck/s rxkB/s txkB/s
# eth0 ~100000 ~100000 ~8000 ~8000
# CPU
mpstat -P ALL 1
# 重点关注 %soft 是否回升
# 延迟
# 客户端记录 P50/P99会碰到的现象
%soft随着 PPS 上升而上升(正常——软中断处理每个数据包)- PPS 达到一定量级后延迟开始上涨(队列深度增加)
- 网卡 PPS 上限约 160 万(小包场景),当前还远未触及
NN 连接 vs 活跃连接
这是两个完全不同的概念:
| 维度 | 连接数 | 活跃连接 |
|---|---|---|
| 资源消耗 | 内存(~6.5KB/连接) | CPU + 软中断 |
| 瓶颈 | 内存总量 | PPS/%soft |
| 100 万 | 约 6.5GB 内存 | — |
| 10 万活跃 | — | ~20 万 PPS |
关键指标记录
| 活跃连接 | PPS | %soft(avg) | P50 | P99 |
|---|---|---|---|---|
| 1 万 | 待记录 | 待记录 | 待记录 | 待记录 |
| 5 万 | 待记录 | 待记录 | 待记录 | 待记录 |
| 10 万 | 待记录 | 待记录 | 待记录 | 待记录 |
一句话总结:百万连接是"仓库容量",活跃流量是"运输能力"——容量够大不等于运力够强。10 万活跃连接在百万连接池中只占 10%,PPS 约 20 万,离网卡 160 万 PPS 上限还有很大余量。