网站与速度

缓冲膨胀:网络繁忙时通话卡顿

缓冲膨胀(bufferbloat)是网络设备在缓冲区中积压过多数据时额外增加的延迟。网络繁忙时,通话和游戏就会卡顿。

适用于:所有当前 macOS 版本。networkQuality 需要 macOS 12 Monterey 或更高版本。核查日期:2026年10月29日

症状

  • 备份或上传进行时,通话卡住或声音断断续续。
  • 其他设备下载时,游戏卡顿。
  • 大文件传输期间网页加载缓慢,但速度测试结果很快。

可能的原因

  • 路由器或调制解调器的缓冲区过大。链路占满时,数据包会在长队列中等待,每次等待都会增加延迟。
  • 上传占满链路。上传带宽通常远小于下载带宽,所以上传很快就会把它占满。
  • 路由器没有队列管理。智能队列管理可以让队列保持较短。并非所有路由器都有这项功能,有的则处于关闭状态。

如何检查

  1. 在没有其他设备使用网络时运行 networkQuality,记下 Responsiveness(响应性)数值。

    networkQuality
  2. 在另一台设备上开始大文件上传或下载,然后再次运行测试。

    networkQuality
  3. 比较两次结果。负载下响应性大幅下降,即表明存在缓冲膨胀。

  4. 简单的测试方法:在上传进行时 ping 一台服务器,观察延迟上升。

    ping 1.1.1.1
  5. 按下 Control-C 停止 ping。

如何修复

  1. 打开路由器的设置,查找 SQM、智能队列管理或类似的 QoS 设置。

  2. 如果路由器有这项设置,请打开它,并按照路由器厂商的说明填写速率值。

  3. 如果路由器没有这项设置,请把大文件上传和备份安排在不通话的时段。

  4. 重要通话期间暂停云同步。

  5. 询问运营商:调制解调器或路由器是否支持队列管理。

使用 Kilobat

  1. Kilobat 的速度测试会报告负载下的延迟,并将缓冲膨胀评为“低”“中等”“高”或“无法判断”。

    kilobat speedtest --json

    输出 addedLatencyMs 和 bufferbloat,以及针对通话和串流的结论。

  2. 增加的延迟低于 15 ms 为“低”,低于 60 ms 为“中等”,60 ms 及以上为“高”。

  3. 要找出正在上传的 App,请将实时流量按上传量排序。

    kilobat status --watch
  4. 有了 Pro 和网络过滤器,可以在通话期间阻止某个 App。请参阅测试通话卡顿。

常见问题

缓冲膨胀是 Mac 的问题吗?

通常不是。过大的缓冲区位于路由器、调制解调器或运营商的网络中,Mac 只是表现出了后果。

换更快的套餐能解决缓冲膨胀吗?

不一定。更大的带宽可能有帮助,但传输占满整条链路时,队列仍会被填满。

参考资料

参考资料核查于 2026年10月29日。man 手册页为 macOS 自带版本;在“终端”中用 man <name> 打开。