nginx 要真正跑满并发能力,必须调优内核网络参数和系统资源限制。需配置 net.core.somaxconn、tcp_tw_reuse、tcp_fastopen 等内核参数,并设置 nofile 限制及 worker_rlimit_nofile,否则高并发连接会在进入 nginx 前被丢弃或阻塞。

Nginx 要真正跑满并发能力,光改 worker_connections 和 worker_processes 不够——内核网络参数没调好,连接在进 Nginx 之前就被系统丢弃或卡住。这不是“配合”,而是底层支撑。
直接写法:把以下内容追加到 /etc/sysctl.conf 文件末尾,然后执行 sysctl -p 生效
# 提升连接队列容量,防 accept 队列溢出(必须 ≥ Nginx listen backlog) net.core.somaxconn = 65535 # 允许复用 TIME_WAIT 状态的端口,缓解短连接场景端口耗尽 net.ipv4.tcp_tw_reuse = 1 # 启用 TCP Fast Open(客户端和服务端均支持时可跳过一次 SYN) net.ipv4.tcp_fastopen = 3 # 扩大本地端口范围,避免反向代理大量 outbound 连接失败 net.ipv4.ip_local_port_range = 1024 65535 # (可选)高实时性场景(如 gRPC、WebSocket)启用低延迟模式(ARM/国产平台推荐) net.ipv4.tcp_low_latency = 1 # (可选)降低 swap 使用倾向,保障内存响应稳定性 vm.swappiness = 10
配套系统级资源限制(写入 /etc/security/limits.conf)
nginx soft nofile 1000000 nginx hard nofile 1000000
并在 Nginx 主配置 nginx.conf 的 main 块中同步设置:
worker_rlimit_nofile 1000000;
验证是否生效
- 检查内核参数:
sysctl net.core.somaxconn - 查看当前 nginx 进程打开文件上限:
cat /proc/$(pidof nginx)/limits | grep "Max open files" - 观察连接状态变化:
ss -s(重点关注total、tw:、estab:数值)
这些参数不是“锦上添花”,而是让 Nginx 的 worker 进程能实际拿到连接的前提。没它们,再高的 worker_connections 也只是纸面数字。











