新上8卡RTX 5090 限时特惠 Read more

Linux 内核参数调优:面向高并发 TCP 连接(C10K/C100K)的 sysctl 配置 - 云数方舟

Linux 内核参数调优:面向高并发 TCP 连接(C10K/C100K)的 sysctl 配置

运行高并发服务(WebSocket、实时消息推送、API 网关)时,默认的 Linux 内核参数撑不住 C10K(1 万并发连接)甚至 C100K(10 万并发)。云数方舟 全节点服务器到手后,建议按以下配置调优内核参数。

完整 sysctl.conf 配置。编辑 /etc/sysctl.conf,追加:

# 最大文件描述符(需配合 /etc/security/limits.conf)
fs.file-max = 2097152

# TCP 连接队列
net.core.somaxconn = 65535
net.core.netdev_max_backlog = 65535
net.ipv4.tcp_max_syn_backlog = 65535

# TIME_WAIT 优化
net.ipv4.tcp_max_tw_buckets = 1440000
net.ipv4.tcp_tw_reuse = 1
# net.ipv4.tcp_tw_recycle = 0  # Linux 4.12+ 已移除,勿设

# 端口范围
net.ipv4.ip_local_port_range = 1024 65535

# TCP 缓冲区
net.core.rmem_max = 16777216
net.core.wmem_max = 16777216
net.ipv4.tcp_rmem = 4096 87380 16777216
net.ipv4.tcp_wmem = 4096 65536 16777216

# 防 SYN Flood(已在 Day9 晚篇提及,此处完整列出)
net.ipv4.tcp_syncookies = 1

# 连接追踪(如用 iptables/nftables)
net.netfilter.nf_conntrack_max = 1048576

关键参数解释。
tcp_max_tw_buckets:系统允许的最大 TIME_WAIT 连接数。高并发短连接服务会快速产生大量 TIME_WAIT,默认值 32768 不够,调大到 1440000。
tcp_tw_reuse:允许将 TIME_WAIT 连接重新用于新连接(仅客户端模式)。对 API 服务(对外发起大量短连接)特别有用。
somaxconn:listen 队列的最大长度。Nginx/Redis 的 backlog 不能超过此值。
ip_local_port_range:本地端口范围。默认 32768-60999 只有约 28000 个端口,高并发时端口耗尽,调大到全范围。

生效与验证。
sysctl -p 使配置生效。
验证:sysctl net.ipv4.tcp_max_tw_buckets 应返回 1440000。
同时编辑 /etc/security/limits.conf

* soft nofile 1048576
* hard nofile 1048576

重新登录后 ulimit -n 应显示 1048576。

场景并发连接数关键参数默认够用?
普通网站< 1000默认
C10K1 万somaxconn, tw_reuse不够,需调优
C100K10 万file-max, port_range, tw_buckets远远不够

行动建议。圣何塞独立服务器香港云主机 上部署 WebSocket/实时推送服务前,务必应用上述 sysctl 配置。调优后可用 wrkab 做压力测试验证。记住:内核参数是高并发的”地基”,地基不打牢,应用层怎么优化都白搭。


📌 查看云数方舟全节点方案:
云数方舟官网圣何塞独立服务器香港云主机

本文由 云数方舟 技术团队原创发布,转载请注明出处。

云数方舟
  • 3216651636
  • support@yunark.cn