472 字
2 分钟
macOS 网络调优

背景#

最近购买了一些美国西部、德国等物理距离较远的服务器,使用 iperf3 以及 speedtest 测试,发现单线程下载速度限速严重(200Mbps左右,我发现限速规律大概随着延迟的增大呈现正相关,经过测试是160ms 延迟限速在200Mbps左右,150ms 延迟限速在220Mbps左右,随着延迟的增加,限速会逐渐增加,速率会逐渐降低)。

现在的默认值#

从 macOS 10.5 开始,Apple 实施了“自我调整 TCP”,它会动态调整某些参数以优化性能。虽然默认设置随着时间推移有所改进,但仍需进行调整以充分利用高速连接。

最近的 macOS 版本带有以下默认设置(具体数值可能会根据版本略有不同):

  • net.inet.tcp.win_scale_factor: 3
  • net.inet.tcp.autorcvbufmax: 4194304
  • net.inet.tcp.autosndbufmax: 4194304

高速连接的建议设置#

为了在 1Gbps 或更快的网络上优化性能,请增加 TCP 窗口缩放因子和自动调整缓冲区的最大值。将以下设置添加到/etc/sysctl.conf 文件中(或使用 sysctl 命令动态应用):

修改 net.inet.tcp.win_scale_factornet.inet.tcp.autorcvbufmaxnet.inet.tcp.autosndbufmax

修改方法#

  1. sudo nano /etc/sysctl.conf
  2. 添加如下内容
# Increase TCP window scaling factor (default is 3-6; increase to 8)
net.inet.tcp.win_scale_factor=8

# Increase maximum receive buffer for TCP autotuning to 32MB
net.inet.tcp.autorcvbufmax=33554432

# Increase maximum send buffer for TCP autotuning to 32MB
net.inet.tcp.autosndbufmax=33554432
  1. 保存后执行 sudo sysctl -f /etc/sysctl.conf

测试#

默认情况下#

iperf3 测试#

image.png

speedtest 测试#

image.png

修改后#

iperf3 测试#

image.png

speedtest 测试#

image.png

WARNING
  • 这些设置非常适合高性能使用场景,例如文件服务器、高吞吐量应用程序或研究环境。
  • 如果这些设置导致不稳定或降低了您特定使用场景的性能,请恢复设置。
  • 如果设置后发现 iperf3 Retr 数据包丢失严重,请调 macOS 整缓冲区大小,或者调整 VPS TCP 缓冲区大小
macOS 网络调优
https://www.mihouo.com/posts/server/macos-network-optimization/
作者
发布于
2025-05-12
许可协议
CC BY-NC-SA 4.0