优化虚拟实例的 TCP 窗口大小
在 IBM Cloud® 虚拟机管理程序上,使用以下指南调整虚拟服务器实例的 TCP 窗口大小,以获得最佳性能。IBM Cloud 虚拟主机的默认 TCP 缓冲区大小范围为 3 - 6 MB。
要想获得虚拟服务器实例的最佳性能,需要将 TCP 窗口大小设置在 3 - 6 MB 范围内。 内核将实际内存限制设置为所请求值的两倍,从而有效地使最大设置翻倍。 请使最大 TCP 窗口大小保持在小于或等于 2 MB。 启用自动调整后,接收方缓冲区大小(和 TCP 窗口大小)会针对每个连接进行动态更新。 每个连接的内存空间默认值由以下元素数组设置。
net.ipv4.tcp_rmem
是为 TCP 接收缓冲区预留的内存net.ipv4.tcp_wmem
是为 TCP 发送缓冲区预留的内存
这些数组中的值是最小缓冲区大小、初始缓冲区大小和最大缓冲区大小,用于设置自动调整的限制以及均衡内存使用情况。 要查看当前内存窗口设置,请执行命令 sysctl -a | grep mem
# sysctl -a | grep mem
vm.overcommit_memory = 0
vm.nr_hugepages_mempolicy = 0
vm.lowmem_reserve_ratio = 256 256 32
vm.meminfo_legacy_layout = 1
vm.memory_failure_early_kill = 0
vm.memory_failure_recovery = 1
net.core.wmem_max = 124928
net.core.rmem_max = 124928
net.core.wmem_default = 124928
net.core.rmem_default = 124928
net.core.optmem_max = 20480
net.ipv4.igmp_max_memberships = 20
net.ipv4.tcp_mem = 365184 486912 730368
net.ipv4.tcp_wmem = 4096 16384 1048576
net.ipv4.tcp_rmem = 4096 87830 1048576
net.ipv4.udp_mem = 365184 486912 730368
net.ipv4.udp_rmem_min = 4096
net.ipv4.udp_wmem_min = 4096
要查看所有 TCP 设置,请运行以下命令:sysctl -a | grep tcp
验证标准高级 TCP 功能是否已启用:
net.ipv4.tcp_timestamps = 1
net.ipv4.tcp_window_scaling = 1
net.ipv4.tcp_sack = 1
net.ipv4.tcp_window_scaling = 1
要验证是否启用了自动调整功能,请检查以下设置的值是否为 "1"。
net.ipv4.tcp_moderate_rcvbuf = 1
要更改 TCP 窗口设置,请将设置添加到 /etc/sysctl.conf
文件中。
要在重新启动之间保留更改,请确保在 rc.local
文件中添加调整命令。