worker_processes(工作进程数)

该参数决定了 Nginx 启动多少个工作进程来处理请求。Nginx 采用事件驱动模型,单个worker进程效率高。将进程数匹配核心数,可以避免进程间的CPU竞争和频繁的上下文切换。

worker_processes auto;

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

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

每个 worker 进程可以同时打开的最大连接数。

提高服务器的总并发能力。

建议设置为一个较大的值,例如 10240 或更高。

events {       
      worker_connections 10240;
   }

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

此外,此值不能超过操作系统对单个进程最大文件描述符的限制。如果需要更高的值,您可能需要先调整系统的 ulimit -n

Keepalive 连接配置(长连接)

Keepalive(或长连接),允许客户端在一个 TCP 连接上发送多个 HTTP 请求。从而减少了大量的连接建立和关闭的开销,比如:TCP 三次握手、和四次挥手。

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

keepalive_requests:在一个连接上允许处理的最大请求数。调高此值可以减少重新连接的频率,推荐 1000 或更高。

http {       
      keepalive_timeout 20s;       
      keepalive_requests 1000;
   }

Gzip压缩

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

gzip on 启用压缩。

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

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

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

同时开启这两个指令:

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

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

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

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