## 连接队列类
somaxconn 是监听队列的上限,应用层 accept 跟不上时,新握手先排在队列里,队列满了后续连接被丢弃,高并发服务的标配是把它提到较大值,同时确认应用自身的 backlog 参数同步调大,二者取小生效。tcp_max_syn_backlog 管的是半连接队列,遭受或遭遇突发连接风暴时它是第一道缓冲。
## TCP 缓冲类
rmem_max 与 wmem_max 决定套接字缓冲区能自动增长到的上限,长肥管道场景即高带宽高延迟链路上,窗口不足会明显限速,适当调大有收益。tcp_rmem 与 tcp_wmem 三个数值分别是初始值、默认值、上限值,调参时保持默认自适应,只抬高上限即可,不建议直接写死。
net.core.somaxconn = 4096 net.ipv4.tcp_max_syn_backlog = 8192 net.core.rmem_max = 16777216 net.core.wmem_max = 16777216
配置写入 /etc/sysctl.d/ 下的文件,执行 sysctl --system 加载。
## 端口与复用类
ip_local_port_range 是主动连接的源端口范围,服务器作为客户端大量外连时适当放宽,避免端口耗尽。tcp_tw_reuse 允许复用等待中的套接字发起新连接,对客户端角色的服务有用,它与传统认知里的回收参数不同,属于相对安全的现代用法。
## 验证与克制
改完用 sysctl -n 参数名 确认运行值生效,ss -lnt 的 Recv-Q 与 Send-Q 能反映监听队列水位。调参要一条一条来,改完压测对比,盲目整包复制网传配置是常见事故来源。顺云云服务器默认参数已适配多数场景,先定位再动参数。
这些参数的生效范围也要分清:net.core 一类作用于协议栈全局,net.ipv4.tcp 一类只作用于 IPv4 的 TCP。容器化部署的服务,参数在宿主内核上全局生效,改一处影响所有容器,协调变更要走宿主级别的评审。虚拟机里的参数只影响自己,与物理机同参数的表现差异还受宿主调度影响,压测对比时要固定对照条件。
调参的常见误区再总结一遍:把别人的完整配置整包复制,不看自身负载特征;改了参数不做前后压测,效果全凭感觉;出了问题不回退,在错误基线上继续叠加调整。正确姿势是一次改一类、记录一次、验证一次,形成参数与效果的对应表,这张表才是团队真正的资产。