在高并发场景下,Nginx 的性能优化往往决定了系统的上限@mikechen
worker_connections优化(最重要)
这是:单Worker最大连接数。
默认:worker_connections 1024;

worker_connections 1024;
意味着:单Worker:最多1024连接。
如果:worker_processes 8,理论最大连接:8 × 1024 = 8192,这在高并发下根本不够。
你还需要提升连接数量,比如:
events {
worker_connections 65535;
}
打开文件数优化(重要)
很多人:把 worker_connections 调到65535。

结果:Nginx启动报错。
原因:
ulimit -n
默认可能:1024,无法支撑高并发。
你还需要修改=:
ulimit -n 65535
这是因为:Nginx本质上依赖文件描述符来维护连接。
若系统允许的打开文件数过低,即便worker_connections配置再高也无济于事。
内核的优化(重要)
Nginx 的上限最终取决于 Linux 内核,需要修改 /etc/sysctl.conf:

net.core.somaxconn: 调大挂起连接队列的最大长度。
net.ipv4.tcp_max_syn_backlog: 调大 SYN 队列。
net.ipv4.ip_local_port_range: 扩大本地端口范围(反向代理至关重要)。
# 临时生效示例 sysctl -w net.core.somaxconn=65535 sysctl -w net.ipv4.ip_local_port_range="1024 65535" sysctl -w net.ipv4.tcp_tw_reuse=1 # 开启连接复用
减少握手开销(重要)
长连接,可以显著降低高并发下的 TCP 握手(三路握手)、和挥手带来的延迟和 CPU 损耗。

keepalive_timeout: 保持连接的时长。
keepalive_requests: 一个长连接上最多处理的请求数,高并发下需调大。
http {
keepalive_timeout 65;
# 增加单连接请求数,避免频繁重连
keepalive_requests 1000;
# 对后端 upstream 也要开启长连接
upstream backend_server {
server 127.0.0.1:8080;
keepalive 32; # 保持与后端的长连接池
}
}
总之,Nginx并发连接优化,本质上是一项“系统工程”,并非单纯修改一个参数就能解决。
真正高效的做法,是从Nginx配置、操作系统限制、网络参数、业务连接模型四个层面协同优化。