Nginx性能优化实战(手把手教你提升10倍性能)

Nginx是大型架构而核心,下面我重点详解 Nginx性能@mikechen

1. worker_processes(工作进程数)

这是 Nginx 配置中最基础也最重要的参数,它决定了 Nginx 启动多少个工作进程来处理请求。

Nginx 采用事件驱动模型,单个 worker 进程效率极高。

将进程数匹配核心数,可以避免进程间的 CPU 竞争和频繁的上下文切换。

Nginx性能优化实战(手把手教你提升10倍性能)-mikechen

Nginx 会自动检测服务器的 CPU 核心数,并为每个核心启动一个工作进程。

worker_processes auto;

 

2. worker_connections(单个进程最大连接数)

该参数定义了,每个 worker 进程可以同时打开的最大连接数。

配置目标: 提高服务器的总并发能力。

推荐实战: 建议设置为一个较大的值,例如 10240 或更高。

events { worker_connections 10240; }

注意: 理论上的最大并发连接数是 worker_processes * worker_connections

此外,此值不能超过操作系统对单个进程最大文件描述符的限制。

如果需要更高的值,可能需要先调整系统的 ulimit -n

 

3. Keepalive 连接配置(长连接)

Keepalive(或长连接),允许客户端在一个 TCP 连接上发送多个 HTTP 请求。

从而减少了大量的连接建立和关闭的开销,比如:TCP 三次握手、和四次挥手。

关键参数: keepalive_timeoutkeepalive_requests

推荐实战:=

keepalive_timeout:设置一个合理的超时时间,如 15s – 30s;

keepalive_requests:在一个连接上允许处理的最大请求数。

调高此值可以减少重新连接的频率,推荐 1000 或更高。

http { keepalive_timeout 20s; keepalive_requests 1000; }

 

4. Gzip 压缩

启用 Gzip 压缩可以显著减小 HTML、CSS、JavaScript 等文本类文件的传输体积,从而加速页面加载时间并节省带宽。

关键参数: gzip on;gzip_comp_level

推荐实战:Nginx

gzip on 启用压缩。

gzip_comp_level:压缩级别(1-9)。推荐使用中间值 5 或 6,以在 CPU 消耗和压缩率之间取得平衡。

只对文本类型文件进行压缩,并设置一个最小压缩文件大小(如 gzip_min_length 1k)。

比如:

http { gzip on; gzip_comp_level 6; gzip_min_length 1k; gzip_types text/plain text/css application/json application/javascript; }

 

5. 静态文件传输优化(sendfile 与 tcp_nopush)

这两个参数协同工作,可以优化 Nginx 从磁盘读取和传输静态文件的过程,有效减少 CPU 开销和网络延迟。

推荐实战: 同时开启这两个指令:

sendfile on: 启用操作系统的 sendfile() 系统调用。

在内核态完成文件传输,实现零拷贝,这对传输大文件非常高效。

tcp_nopush on: 必须在 sendfile on 的情况下开启。

它会指示 Nginx 将响应头和文件数据合并成一个或多个满载的数据包后再发送,提高网络效率。

评论交流
    说说你的看法