阶段 6:冲击百万长连接(Day 17-23)
⏳ 状态:规划中。
目标:在 FD、TCP、CPU、NUMA 四轮优化后的基础上,单机稳定承载 100 万 TCP 长连接,并观测 keepalive、内存开销、TIME_WAIT 冲击等附属问题。
背景
到此为止,所有"基础设施"瓶颈已解决。现在是真正的压力测试——逐级爬升到 100 万。
每日概览
| 天 | 主题 | 关键操作 | 里程碑 |
|---|---|---|---|
| Day 17 | 20→50→100K 爬升 | 三级跳,每级观测内存和建连速率 | 首破 10 万 |
| Day 18 | keepalive 与死连接 | tcp_keepalive_time/intvl/probes 三参数调优,断网模拟 | 死连接回收 2h→5min |
| Day 19 | 100→200→500K 内存深探 | Slab 内存分析、/proc/meminfo 观测,精确测单连接内存 | 确认 32G 可撑 300 万+ |
| Day 20 | 一百万!里程碑 | 60→80→100 万逐级爬升,四终端监控布局 | 里程碑! |
| Day 21 | 百万连接上的业务流量 | 1 万→5 万→10 万活跃收发,观测 PPS 和延迟 | 业务流量下的稳定性 |
| Day 22 | 大量断开与 TIME_WAIT | 50 万连接同时断开,观测 TIME_WAIT 堆积 | TW 冲击数据 |
| Day 23 | 全量瓶颈分析 | perf + numastat + sar 全量采集,定位当前第一瓶颈 | 瓶颈热力图 |
百万连接里程碑指标
| 指标 | 目标值 | 说明 |
|---|---|---|
ss -s TCP 连接数 | ≥ 1,000,000 | 含 ESTABLISHED |
| 内存总用量 | ≤ 28GB | 留 4GB 给系统 |
| FD 使用量 | ≥ 1,000,000 | ls /proc/<pid>/fd | wc -l |
| 建连总耗时 | 记录实际值 | 不做硬性要求 |
| 保持时间 | ≥ 10 分钟 | 证明稳定 |
完工验证清单
- [ ] 100 万连接稳定运行 ≥ 10 分钟
- [ ] keepalive 参数生效,死连接能回收
- [ ] 内存开销 ≤ 28GB
- [ ] 能解释百万连接的内存组成
一句话总结:阶段 6 是整个项目的高潮——前面所有优化(FD/TCP/NUMA)都是为了这一刻,百万连接不是"配置出来的",而是从 1024 个 FD 开始一步步撞墙、诊断、修复后水到渠成的结果。