WiFi 信号满格,状态栏一切正常,但网页就是转圈打不开。微信收不到消息,VPN 死活连不上,SSH 频繁断线。
你换过路由器,给运营商打过电话,差点重装系统——最后发现,重启一下 Mac,什么都好了。
这不是玄学。macOS 内核藏着一个已知问题:系统连续运行超过 49.7 天后,TCP 时间戳计数器溢出,新连接会被静默丢弃。你的 Mac 连着网,但流量出不去。
你中招了吗?
打开终端,一行命令:
uptime
输出里 up 后面的数字就是连续运行天数。如果超过 49.7 天(约 7 周),最近的网络问题大概率就是它。

常见症状:
- SSH 连服务器频繁断线,以为是网络抖动
- 云端协作工具文件同步全部失败
- 邮件发不出去,但 WiFi 明明好好的
- VPN 显示已连接,但流量走不通
这些场景的共同特征是:WiFi 本身没问题,但 TCP 通信悄悄失效了。你的 Mac 变成了一个”发得出信号、收不到回音”的黑洞。
技术原理:一个 32 位计数器的”千年虫”
macOS 的内核叫 XNU(X is Not Unix)。它在管理 TCP 连接时,依赖一个叫 TCP 时间戳(Timestamps)的机制——每次建立连接,系统会给数据包打上一个时间戳,用来判断超时和计算往返延迟(RTT)。
这个时间戳用一个 32 位计数器表示,在 macOS 里,它以 1 毫秒为单位递增。
2³² 毫秒 = 4,294,967,296 毫秒 ≈ 49.710 天。
精确到秒:49 天 17 小时 2 分 47.29 秒。
连续运行到这个时间点,计数器归零——时间戳瞬间”穿越”回零点。服务器收到一个时间戳远小于预期的数据包,判定为重复或过期,直接丢弃。所有新建的 TCP 连接就此失败。
重启能解决,因为计数器会回到零,重新开始计时。
这是一个经典的整数溢出问题,跟当年的千年虫本质相同,只不过这次溢出的不是年份数字,而是毫秒计数器。
哪些人最容易中招?
长期不关机的用户都可能踩到这个坑,但以下几类风险更高:
- 开发者——Mac 常年跑代码和服务,从不关机
- 设计师——开着 Adobe 全家桶、DaVinci Resolve,关机成本太高
- 远程办公族——Mac 是主力生产力工具,常年开机待命
- 服务器运维——用 Mac 做跳板机,长期挂着 SSH 和 VPN
特别注意:睡眠(Sleep)不等于重启。合盖休眠时,内核计数器仍在运行。如果你习惯每天合盖就走,Mac 的倒计时从来没停过。
排查四步走
网络出问题时,按这个顺序排查,不用任何专业知识。
第一步:查运行时间
uptime
超过 49.7 天?嫌疑直接锁定。
第二步:看 TCP 连接状态
netstat -an | grep TIME_WAIT | wc -l
TIME_WAIT 是 TCP 关闭后的等待状态,正常情况下会快速释放。数量异常(几千个以上)说明连接出了问题。
第三步:排除其他因素
- 同一网络下其他设备正常吗?
- 换个 WiFi 或插根网线,问题还在吗?
- 重启路由器没用?
如果以上都排除了,基本可以确定是 Mac 自身的问题。
第四步:重启验证
保存工作,重启 Mac。
重启后打开网页测试,再跑一次 uptime 确认时间归零。如果一切恢复正常——恭喜,你找到了罪魁祸首。
不想每天关机?试试自动重启
Mac 的睡眠/休眠设计得确实优雅,合盖就走、掀盖就用,谁愿意折腾关机呢。
关键不是每天关机,而是在 49.7 天之前重启一次。推荐节奏:每周一次,绰绰有余。
macOS 自动重启设置
- 按 Command ⌘ + 空格键 打开聚焦搜索
- 搜素「终端」并打开
- 执行
sudo pmset repeat restart U 03:00:00可实现每周日凌晨3点自动重启
如果你的 Mac 跑着 Docker、渲染等重型任务,可以缩短到每 3-4 天,留更多安全余量。
不想自动重启?
几个临时方案:
- 偶尔查
uptime,接近 49 天就手动重启 - 尝试重置网络接口(部分场景有效,不保证根治):
sudo ifconfig en0 down && sudo ifconfig en0 up - 把需要长年运行的服务放进 Docker 或虚拟机,主系统定期重启不受影响
但说到底,最省心的方案还是定期重启。几十秒换几十天稳定,怎么算都不亏。
一个小 bug 的三点启示
“没关机”不等于”没问题”。 Mac 确实稳定,但长期不关机也有代价。这个 bug 属于典型的”沉默积累”型——平时完全无感,一旦触发就让人摸不着头脑。
排查问题要有第二视角。 遇到网络故障,路由器、运营商、WiFi 信号是优先排查项,这没问题。但如果这些都排除了,不妨问一句:这台 Mac 多久没重启了?有时候最简单的答案,恰恰最容易被忽略。
成熟系统也有盲区。 macOS 久经考验,但这个 TCP 时间戳溢出至今仍存在于 XNU 内核中。与其指望系统完美,不如养成一个好习惯。
你的 Mac 一直在默默倒计时。
49.7 天后,TCP 时间戳归零,网络悄悄罢工——不是路由器的问题,不是运营商的锅,答案藏在一个 uptime 命令里。
下次 WiFi 正常但网页打不开,先别急着换路由器。打开终端,跑一下 uptime。也许重启一下就够了。




