Plainnotes

TIME_WAIT 很多,要不要调内核

2026-07-28 · 3 分钟网络

ss -tan | grep TIME-WAIT | wc -l 出来几万,看着吓人。先判断是不是问题:

TIME_WAIT 只出现在主动关闭的一方,持续 2MSL(Linux 硬编码 60 秒)。它存在的意义是让迟到的包不会串到新连接上,以及保证最后的 ACK 能被重传。所以它是**正常状态**,不是泄漏。

真正会出问题的是端口耗尽:本地端口范围约 28000 个,如果 60 秒内新建连接超过这个数,connect 会报 Cannot assign requested address。

调 tcp_tw_reuse=1 可以让新连接复用 TIME_WAIT 的端口(仅对出站连接有效),这是相对安全的。tcp_tw_recycle 在 4.12 已经删除,别再从网上抄这个参数。