Nginx是大型架构核心,下面我详解Nginx高并发性能优化@mikechen
worker_processes(Nginx配置 – 进程数)
Nginx:采用多进程模型(master + 多个worker)。

每个worker是单线程,充分利用多核CPU。
默认1个进程无法发挥多核优势,导致CPU利用率低。
设置为CPU核数(或auto)可并行处理更多请求,减少上下文切换开销。
worker_processes auto; # 或具体数字,如 8; # 可选:CPU亲和性绑定,减少切换 worker_cpu_affinity auto;
Nginx 自动检测CPU核数)或等于CPU物理核数(超线程慎用)。
文件句柄优化
在 Linux 中,网络连接本质上也是文件描述符。
Nginx 每处理一个连接、每打开一个日志文件、每访问一个后端 socket,都会消耗文件句柄。

如果文件句柄不足,Nginx 可能出现 too many open files 错误,直接影响服务可用性。
因此,必须同时提升:
系统级文件描述符上限:fs.file-max;
进程级文件描述符上限:ulimit -n;
worker_rlimit_nofile 100000;
events {
worker_connections 65535;
}
适合:
高并发长连接,以及,大量静态文件访问的场景。
TCP连接队列优化
这是:秒杀系统核心参数。

Nginx 在高并发场景下,如果请求到达速度超过 worker 进程处理速度,那么新连接就会先进入这个队列排队。
如果队列太小,就会出现连接被丢弃或客户端超时。
Linux 默认值通常较小,面对突发流量时容易成为瓶颈。
合理提高 somaxconn,可以让 Nginx 在瞬时流量峰值下容纳更多等待连接,减少拒绝和丢包。
net.core.somaxconn = 65535
生产环境推荐配置
在实际的生产环境中,我们通常不会用 sysctl -w 临时修改。
而是将这些参数统一写入系统配置文件中,使其永久生效。

# 文件句柄 fs.file-max = 1000000 # TCP队列 net.core.somaxconn = 65535 net.ipv4.tcp_max_syn_backlog = 65535 # TIME_WAIT优化 net.ipv4.tcp_tw_reuse = 1 net.ipv4.tcp_fin_timeout = 15 # 网络缓冲区 net.core.rmem_max = 16777216 net.core.wmem_max = 16777216