网站与速度
缓冲膨胀:网络繁忙时通话卡顿
缓冲膨胀(bufferbloat)是网络设备在缓冲区中积压过多数据时额外增加的延迟。网络繁忙时,通话和游戏就会卡顿。
症状
- 备份或上传进行时,通话卡住或声音断断续续。
- 其他设备下载时,游戏卡顿。
- 大文件传输期间网页加载缓慢,但速度测试结果很快。
可能的原因
- 路由器或调制解调器的缓冲区过大。链路占满时,数据包会在长队列中等待,每次等待都会增加延迟。
- 上传占满链路。上传带宽通常远小于下载带宽,所以上传很快就会把它占满。
- 路由器没有队列管理。智能队列管理可以让队列保持较短。并非所有路由器都有这项功能,有的则处于关闭状态。
如何检查
在没有其他设备使用网络时运行
networkQuality,记下 Responsiveness(响应性)数值。networkQuality在另一台设备上开始大文件上传或下载,然后再次运行测试。
networkQuality比较两次结果。负载下响应性大幅下降,即表明存在缓冲膨胀。
简单的测试方法:在上传进行时 ping 一台服务器,观察延迟上升。
ping 1.1.1.1按下 Control-C 停止
ping。
如何修复
打开路由器的设置,查找 SQM、智能队列管理或类似的 QoS 设置。
如果路由器有这项设置,请打开它,并按照路由器厂商的说明填写速率值。
如果路由器没有这项设置,请把大文件上传和备份安排在不通话的时段。
重要通话期间暂停云同步。
询问运营商:调制解调器或路由器是否支持队列管理。
使用 Kilobat
Kilobat 的速度测试会报告负载下的延迟,并将缓冲膨胀评为“低”“中等”“高”或“无法判断”。
kilobat speedtest --json输出
addedLatencyMs和bufferbloat,以及针对通话和串流的结论。增加的延迟低于 15 ms 为“低”,低于 60 ms 为“中等”,60 ms 及以上为“高”。
要找出正在上传的 App,请将实时流量按上传量排序。
kilobat status --watch有了 Pro 和网络过滤器,可以在通话期间阻止某个 App。请参阅测试通话卡顿。
常见问题
缓冲膨胀是 Mac 的问题吗?
通常不是。过大的缓冲区位于路由器、调制解调器或运营商的网络中,Mac 只是表现出了后果。
换更快的套餐能解决缓冲膨胀吗?
不一定。更大的带宽可能有帮助,但传输占满整条链路时,队列仍会被填满。
参考资料
- Bufferbloat.net:简介
- Apple 支持:使用 Apple 网络响应性测试 Wi-Fi 网络
- networkQuality(8),macOS 27.2 自带的 man 手册页
- ping(8),macOS 27.2 自带的 man 手册页
参考资料核查于 2026年10月29日。man 手册页为 macOS 自带版本;在“终端”中用 man <name> 打开。