提高 Linux 并发连接容量
检查并调整文件描述符与 TCP 监听队列,解决高并发系统瓶颈
高并发隧道同时受进程文件描述符、监听队列、临时端口、连接跟踪和内存限制。只有监控或日志表明达到系统上限时才应调整;单纯增大参数不能弥补 CPU、内存或带宽不足。
先检查现状
常见日志包括 too many open files、监听队列溢出或大量连接停留在异常状态。先估算 NPS、NPC、目标服务以及监控进程共同需要的文件描述符数量。
文件描述符
使用 systemd 运行 NPS 时,在服务覆盖配置中设置,而不是只修改当前终端的 ulimit:
应用并重启服务:
实际服务名可能不同,请以安装时注册的 unit 为准。
监听队列
可按压测结果建立 /etc/sysctl.d/99-nps.conf:
然后执行:
somaxconn 限制已完成握手的监听队列,tcp_max_syn_backlog 影响尚未完成握手的 SYN 队列。数值应结合内存、连接速率和攻击面压测确定,不建议照搬极端配置。
排障边界
- 大量出站连接失败时检查本机临时端口范围和
TIME_WAIT,不要先启用危险的连接复用参数。 - 使用容器时还要检查容器的
nofile限制、宿主机 conntrack 和端口发布规则。 - SYN flood 应由防火墙、云安全组或专业防护处理,内核队列调大不是访问控制。
- NPS 的客户端最大连接数 是应用级保护,不能替代系统容量限制。