测试驿栈-由浅入深学性能 TCP 参数优化笔记
linux 下 tcp 参数优化
vim /etc/sysctl.conf
# 未收到客户端确认信息的连接请求的最大值
net.ipv4.tcp_max_syn_backlog=5000
#timewait 数量
net.ipv4.tcp_max_tw_buckets = 6000
# 改进 tcp 的拥塞控制机制
net.ipv4.tcp_sack =1
#tcp 窗口大于 64K,必须开启此值
net.ipv4.tcp_window_scaling = 1
# 增加 tcp 最大缓冲区
net.ipv4.tcp_mem = 4096 67380 4194304
net.ipv4.tcp_rmem = 4096 67380 4194304
net.ipv4.tcp_timestamps = 0
net.ipv4.tcp_fin_timeout = 30
# 内核放弃建立连接之前发送 synack/syn 包的数量
net.ipv4.tcp_synack_retries = 3
net.ipv4.tcp_syn_retries = 1
net.ipv4.tcp_tw_reuse = 0
# 设置文件最大句柄数
fs.file-max = 102400
# 修改消息队列长度
kernel.msgmnb = 65536
kernel.msgmax = 65536
# 设置最大内存共享段大小 bytes
kernel.shmmax = 68719476736
kernel.shmall = 4294967296
net.core.wmem_default = 8388608
net.core.rmem_default = 8388608
net.core.wmem_max = 16777216
net.core.rmem_max = 16777216
# 设置同时发起的 tcp 连接数
net.core.somaxconn = 65535
windows 下的 tcp 参数调整
TCPWindowSize
在 HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\TCPIP\Parameters 子键下创建名为 TCPWindowSize 的 REG_DWORD 值,该值的范围是从 0 到 65535,将该值设置为 62420。
缺省情况下,TCP 将试图根据 MSS 来优化窗口大小,起始值为 16KB,最大值为 64KB。TCPWindowSize 的最大值通常为 65535 字节(64KB),以太网最大段长度为 1460 字节,低于 64KB 的 1460 的最大整数倍为 62420 字节,因而可以在注册表中将 TCPWindowSize 设置为 62420,作为高带宽网络中适用的性能优化值
TCP1323Opts
浏览至 HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\TCPIP\Parameters 注册表子键。在 Parameters 子键下创建或修改名为 TCP1323Opts 的 REG_DWORD 值
该值的含义为:
0(缺省值)表示禁用 TCP Window Scaling 和时间戳;
1 表示只启用 TCP Window Scaling;
2 表示只启用时间戳;
3 表示同时启用 TCP Window Scaling 和时间戳。
TCP1323Opts 设置为激活 TCP Window Scaling 后,可以将上文中的注册表项 TCPWindowSize 的值增大,最大能达到 1GB,为了达到最佳性能,这里的值最好设置成 MSS 的倍数,推荐值为 256960 字节
TcpTimedWaitDelay
TcpTimedWaitDelay 的值表示系统释放已关闭的 TCP 连接并复用其资源之前,必须等待的时间。这如果系统显示大量连接处于 TIME_WAIT 状态,会导致并发量与吞吐量的严重下降,通过减小该项的值,系统可以更快地释放已关闭的连接,从而为新连接提供更多的资源
在 Parameters 子键下创建或修改名为 TcpTimedWaitDelay 的 REG_DWORD 值,该值的范围是从 0 到 300,建议将该值设置为 30
MaxUserPort
该项的缺省值是十进制的 5000,这也是系统允许的最小值。Windows 默认为端口保留的端口号范围是从 1024 到 5000。为了获得更高的并发量,建议将该值至少设为 32768 以上,甚至设为理论最大值 65534
在 Parameters 子键下创建或修改名为 MaxUserPort 的 REG_DWORD 值,该值的范围是从 5000 到 65534,缺省值为 5000,建议将该值设置为 65534