最稳妥、最常用的方式是直接改 /etc/sysctl.conf 并执行 sysctl -p 永久生效;临时用 sysctl -w 仅用于验证。高并发服务需重点调优 net.core.somaxconn=65535、net.ipv4.tcp_max_syn_backlog=65536、net.ipv4.ip_local_port_range="1024 65535"、net.ipv4.tcp_fin_timeout=30、net.ipv4.tcp_tw_reuse=1(依赖 tcp_timestamps=1)、net.ipv4.tcp_max_tw_buckets=2000000、net.core.rmem_max/net.core.wmem_max=16777216、net.ipv4.tcp_rmem/tcp_wmem="4096 65536 16777216"、net.ipv4.tcp_congestion_control=bbr 和 net.core.netdev_max_backlog=65535,调完须用 ss -s 或 netstat -s 验证溢出是否消除。

直接改 /etc/sysctl.conf 是最稳妥、最常用的方式,所有关键网络参数都靠它永久生效。临时改用 sysctl -w 只适合验证效果,不能替代配置文件。
TCP连接能力调优
高并发服务(如Web、API网关)常卡在连接排队或端口耗尽上,重点调这几个参数:
- net.core.somaxconn = 65535:监听队列上限,避免新连接被丢弃;应用层 accept() 调用慢时尤其关键
- net.ipv4.tcp_max_syn_backlog = 65536:SYN半连接队列长度,防 SYN Flood 或突发建连冲击
- net.ipv4.ip_local_port_range = "1024 65535":扩大客户端可用端口范围,缓解 TIME_WAIT 占满问题
- net.ipv4.tcp_fin_timeout = 30:缩短 FIN_WAIT_2 状态超时,加快连接释放
TIME_WAIT 与端口复用控制
大量短连接会导致 TIME_WAIT 堆积,影响端口复用效率:
- net.ipv4.tcp_tw_reuse = 1:允许把处于 TIME_WAIT 的 socket 用于新连接(需配合时间戳启用)
-
net.ipv4.tcp_timestamps = 1:必须开启,否则
tcp_tw_reuse不生效;提供 PAWS 机制防序列号绕回 - net.ipv4.tcp_max_tw_buckets = 2000000:设为较大值(如两百万),避免内核强制回收引发异常
缓冲区与拥塞控制调优
千兆及以上带宽环境需匹配更大缓冲区,并选对算法:
- net.core.rmem_max 和 net.core.wmem_max = 16777216(16MB):收发缓冲区硬上限,防止丢包
- net.ipv4.tcp_rmem 和 tcp_wmem = "4096 65536 16777216":动态三元组,中间值是默认初始窗口
- net.ipv4.tcp_congestion_control = bbr:优先选 BBR(需内核 ≥4.9),低延迟高吞吐;HTCP 适合高带宽长肥管道
底层队列与背压机制加固
网卡和协议栈衔接处的队列若溢出,会无声丢包:
- net.core.netdev_max_backlog = 65535:软中断处理前的入站数据包队列上限
- net.core.somaxconn 和 net.core.netdev_max_backlog 需协同调整,避免瓶颈前移
- 修改后执行
sysctl -p加载,再用ss -s或netstat -s | grep -i "listen overflows"验证是否还有溢出











