首页/网络/常用端口速查/TIME_WAIT 与端口占用:刚停的服务起不来

TIME_WAIT 与端口占用:刚停的服务起不来

服务重启报「Address already in use」未必是端口被占:主动关闭方留下的 TIME_WAIT 持续约 60 秒(2MSL),期间该连接的四元组不可复用。

常用端口速查网络更新于 2026-10-12
状态TIME_WAIT(主动关闭方等待 2MSL)
典型现象重启即报 EADDRINUSE;大量 TIME_WAIT 堆积
关键参数SO_REUSEADDR、net.ipv4.tcp_tw_reuse、tcp_fin_timeout
易踩坑tcp_tw_recycle 已在 Linux 4.12 移除,且对 NAT 场景有害

服务进程退出时若由它主动关闭连接,TIME_WAIT 记在操作系统而非进程上:这就是"进程没了端口还占着"的真相;服务端 bind 前设置 SO_REUSEADDR 属于常规操作。

核对与处置

核对与处置
ss -tan state time-wait | head -20
cat /proc/sys/net/ipv4/tcp_tw_reuse   # 客户端侧端口复用开关
# 不要迷信 tcp_tw_recycle:4.12 起已移除

易错点

  • 盲目开 tcp_tw_recycle"优化":NAT 环境客户端大面积静默掉线,内核后来直接移除该参数

数据来源与参考

  • RFC 793(2MSL 状态转换);Linux ip-sysctl 文档

相关工具

​‌‌​​‌​​​‌‌​‌‌‌‌​‌‌​​​‌‌​‌‌‌​​‌‌​​‌​‌‌‌​​‌‌‌​​​‌​‌‌​‌​​‌​‌‌‌​​​‌​‌‌​‌​​‌​‌‌​​​‌‌​‌‌‌​‌​​​‌‌​‌‌‌‌​​‌​‌‌‌​​‌‌​​​‌‌​‌‌​‌‌‌‌​‌‌​‌‌​‌