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_factor
和 net.inet.tcp.autorcvbufmax
和 net.inet.tcp.autosndbufmax
修改方法
sudo nano /etc/sysctl.conf
- 添加如下内容
# 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
- 保存后执行
sudo sysctl -f /etc/sysctl.conf
测试
默认情况下
iperf3 测试
speedtest 测试
修改后
iperf3 测试
speedtest 测试
WARNING
- 这些设置非常适合高性能使用场景,例如文件服务器、高吞吐量应用程序或研究环境。
- 如果这些设置导致不稳定或降低了您特定使用场景的性能,请恢复设置。
- 如果设置后发现 iperf3 Retr 数据包丢失严重,请调 macOS 整缓冲区大小,或者调整 VPS TCP 缓冲区大小。