Nginx高并发性能优化:提升10倍性能实战!

Nginx是大型架构核心,下面我详解Nginx高并发性能优化@mikechen

worker_processes(Nginx配置 – 进程数)

Nginx:采用多进程模型(master + 多个worker)。

Nginx高并发性能优化:提升10倍性能实战!-mikechen

每个worker是单线程,充分利用多核CPU。

默认1个进程无法发挥多核优势,导致CPU利用率低。

设置为CPU核数(或auto)可并行处理更多请求,减少上下文切换开销。

worker_processes auto;   # 或具体数字,如 8;

# 可选:CPU亲和性绑定,减少切换
worker_cpu_affinity auto;

Nginx 自动检测CPU核数)或等于CPU物理核数(超线程慎用)。

 

文件句柄优化

在 Linux 中,网络连接本质上也是文件描述符。

Nginx 每处理一个连接、每打开一个日志文件、每访问一个后端 socket,都会消耗文件句柄。

Nginx高并发性能优化:提升10倍性能实战!-mikechen

如果文件句柄不足,Nginx 可能出现 too many open files 错误,直接影响服务可用性。

因此,必须同时提升:

系统级文件描述符上限:fs.file-max;

进程级文件描述符上限:ulimit -n;

worker_rlimit_nofile 100000;
events {
    worker_connections 65535;
}

适合:

高并发长连接,以及,大量静态文件访问的场景。

TCP连接队列优化

这是:秒杀系统核心参数。

Nginx高并发性能优化:提升10倍性能实战!-mikechen

Nginx 在高并发场景下,如果请求到达速度超过 worker 进程处理速度,那么新连接就会先进入这个队列排队。

如果队列太小,就会出现连接被丢弃或客户端超时。

Linux 默认值通常较小,面对突发流量时容易成为瓶颈。

合理提高 somaxconn,可以让 Nginx 在瞬时流量峰值下容纳更多等待连接,减少拒绝和丢包。

net.core.somaxconn = 65535

 

生产环境推荐配置

在实际的生产环境中,我们通常不会用 sysctl -w 临时修改。

而是将这些参数统一写入系统配置文件中,使其永久生效。

Nginx高并发性能优化:提升10倍性能实战!-mikechen

# 文件句柄
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

 

评论交流
    说说你的看法