MacBook 连续运行 49 天后,网络彻底崩掉,只能重启解决

MacBook 连续运行 49 天后,网络彻底崩掉,只能重启解决

如果你好几周都不重启 Mac,让它一直开着,可能会突然发现上网出问题了。最近 Photon.codes 的网友发现 macOS 存在一个隐蔽的 Bug:机器连续运行大约 49 天后,网络连接会完全失效。电脑看起来一切正常,也能正常离线使用,但浏览器和其他需要联网的程序却突然打不开任何网页。

目前 Apple 还没修复这个内核层面的问题,用户只能自己想办法解决。

定时器问题到底是怎么搞坏网络的

问题出在一个叫 “tcp_now” 的内部计数器上。它精确记录着从开机到现在过去了多少毫秒,使用的是 32 位整数格式,这个格式有严格的上限——最大就是 49 天 17 小时 2 分 47 秒。

一旦计数器达到这个极限,按理说应该归零。但 macOS 内核里的核心代码没有正确处理这个归零过程,导致系统在检查旧连接时彻底懵掉,不知道该怎么处理。

端口为什么会卡死

每次电脑访问网站,都会临时打开一个网络端口来传输数据。传输结束后,这个端口本该正常关闭并释放,以便后面重复使用。

但在第 49 天那个临界点,内部时钟计算出错,系统每次检查“这个已关闭的连接要不要删除”时都会失败。结果,所有临时端口就这么永远卡在那里动不了。你上网用得越多,卡死的端口就堆积得越严重。

到最后,电脑干脆没有可用端口来处理新的网络请求了。具体多快会彻底卡住,取决于你平时上网的频繁程度。

为什么现在只能靠重启解决

发现者专门搭建了测试机器,把运行时间推到 49.7 天极限。每次实验,机器都无法建立新的网络连接,也没有弹出任何警告。电脑还能响应其他设备的简单 Ping,但正常的网页浏览和网络流量直接瘫痪。

由于这是 Apple 在系统底层处理的网络核心任务,第三方开发者根本没法提供快速修复。目前唯一可靠的办法,就是重启电脑,把卡死的端口全部清空,同时让计数器重新从零开始。

普通家庭用户每个月关机重启一次,就能彻底避开这个 Bug。而服务器管理员在官方补丁出来之前,只能定期安排重启计划了。

全部评论0

没有了

到底了

查看更多

发表评论

评分:
显示验证码 验证码