# 阶段 7：短连接专题（Day 24-27）

> **撞上的问题**：长连接测试全部通过后，试着用短连接模式（每次请求建立新连接、收发后立即关闭）压测，立刻看到 TIME_WAIT 堆积如山，端口不够用，SYN 队列溢出。

## 背景

长连接和短连接的问题完全不同——长连接的核心是"连接数承载"，短连接的核心是"连接的快速创建和销毁"。

## 每日概览

| 天 | 主题 | 关键操作 | 核心发现 |
|:--:|------|------|------|
| Day 24 | [短连接基线压测](/demos/echo/day-24/README.md) | `wrk` 短连接压测，记录 QPS 和 TIME_WAIT 峰值 | TW 堆积到 3 万+ |
| Day 25 | [TIME_WAIT 优化](/demos/echo/day-25/README.md) | 开启 `tcp_tw_reuse`、降低 `tcp_fin_timeout`，对比前后 | TW 峰值 ↓70%+ |
| Day 26 | [端口耗尽](/demos/echo/day-26/README.md) | 故意缩窄端口范围触发 `EADDRNOTAVAIL`，再修复 | 理解端口四元组唯一性 |
| Day 27 | [SYN 队列溢出](/demos/echo/day-27/README.md) | 低 `somaxconn` 触发 `ListenOverflows`，观察 `SYN_RECV` 堆积 | SYN Cookie 机制 |

## 长短连接问题对照

| 问题 | 长连接 | 短连接 |
|------|:--:|:--:|
| TIME_WAIT 堆积 | 极少出现 | **核心问题** |
| 端口耗尽（EADDRNOTAVAIL） | 不会 | **核心问题** |
| SYN 队列溢出 | 不会 | **典型场景** |
| 百万 FD 承载 | **核心问题** | 不会出现 |
| NUMA 持续损耗 | **核心问题** | 难以复现 |

> 短连接的知识点是长连接无法替代的，但仅占总体学习时间的约 15%。

## 完工验证清单

- [ ] `tcp_tw_reuse` = 1，`tcp_fin_timeout` ≤ 15
- [ ] 短连接 QPS 相比优化前提升 ≥ 30%
- [ ] 能复现并修复端口耗尽
- [ ] 理解 SYN Queue 和 Accept Queue 的区别

> **一句话总结**：长连接是体力活（承载一百万），短连接是技巧活（快速回收、端口复用）——TIME_WAIT、端口耗尽、SYN 队列是短连接独有的三座大山，一个参数一个坑。
