# 阶段 6：冲击百万长连接（Day 17-23）

> **目标**：在 FD、TCP、CPU、NUMA 四轮优化后的基础上，单机稳定承载 100 万 TCP 长连接，并观测 keepalive、内存开销、TIME_WAIT 冲击等附属问题。

## 背景

到此为止，所有"基础设施"瓶颈已解决。现在是真正的压力测试——逐级爬升到 100 万。

## 每日概览

| 天 | 主题 | 关键操作 | 里程碑 |
|:--:|------|------|:--:|
| Day 17 | [20→50→100K 爬升](/demos/echo/day-17/README.md) | 三级跳，每级观测内存和建连速率 | 首破 10 万 |
| Day 18 | [keepalive 与死连接](/demos/echo/day-18/README.md) | `tcp_keepalive_time`/`intvl`/`probes` 三参数调优，断网模拟 | 死连接回收 2h→5min |
| Day 19 | [100→200→500K 内存深探](/demos/echo/day-19/README.md) | Slab 内存分析、`/proc/meminfo` 观测，精确测单连接内存 | 确认 32G 可撑 300 万+ |
| Day 20 | [一百万！里程碑](/demos/echo/day-20/README.md) | 60→80→100 万逐级爬升，四终端监控布局 | **里程碑！** |
| Day 21 | [百万连接上的业务流量](/demos/echo/day-21/README.md) | 1 万→5 万→10 万活跃收发，观测 PPS 和延迟 | 业务流量下的稳定性 |
| Day 22 | [大量断开与 TIME_WAIT](/demos/echo/day-22/README.md) | 50 万连接同时断开，观测 TIME_WAIT 堆积 | TW 冲击数据 |
| Day 23 | [全量瓶颈分析](/demos/echo/day-23/README.md) | 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 开始一步步撞墙、诊断、修复后水到渠成的结果。
