⚡ 性能优化
worker_processes 与 worker_connections
Nginx 的性能很大程度上取决于这两个参数。worker_processes 是工作进程数,worker_connections 是每个进程能处理的最大连接数。
nginx
# 自动匹配 CPU 核心数(推荐)
worker_processes auto;
# 每个 worker 的最大连接数
events {
worker_connections 4096;
# Linux 2.6+ 用 epoll(性能最好)
use epoll;
# 一个 worker 能同时处理多个连接(必须开)
multi_accept on;
}
http {
# 每个 worker 的最大打开文件数(要大于 worker_connections)
worker_rlimit_nofile 65535;
# ... 其他配置
}💡 提示: 💡 最大并发数 = worker_processes × worker_connections。比如 4 核 CPU + 4096 连接 = 理论最大 16384 个并发连接。实际能达到 80% 左右就很不错了。
keepalive 连接复用
nginx
http {
# 与客户端的 keepalive
keepalive_timeout 65;
keepalive_requests 1000; # 一个连接最多处理多少请求
# 与上游服务器的 keepalive(反向代理场景)
upstream backend {
server 10.0.0.1:8080;
server 10.0.0.2:8080;
# 与上游保持 32 个空闲连接
keepalive 32;
keepalive_requests 100;
keepalive_timeout 60s;
}
server {
location /api/ {
proxy_pass http://backend;
# 必须加上这些 header 才能让 keepalive 生效
proxy_http_version 1.1;
proxy_set_header Connection "";
}
}
}💡 提示: 💡 效果:开启 keepalive 后,Nginx 和后端之间不需要每次都重新建立 TCP 连接。对于高频 API 调用,延迟能降低 30-50%。
缓冲区调优
nginx
http {
# 客户端请求缓冲(大文件上传场景)
client_body_buffer_size 16k;
client_header_buffer_size 1k;
client_max_body_size 100m; # 最大上传大小
large_client_header_buffers 4 8k;
# 代理缓冲(反向代理场景)
proxy_buffer_size 4k;
proxy_buffers 8 16k;
proxy_busy_buffers_size 32k;
# 后端响应缓冲
proxy_buffering on;
proxy_buffer_size 4k;
proxy_buffers 8 32k;
proxy_max_temp_file_size 1024m;
# 文件发送优化(sendfile + tcp_nopush)
sendfile on;
tcp_nopush on;
tcp_nodelay on;
}💡 提示: 💡 sendfile + tcp_nopush:让内核直接在磁盘和网卡之间传输数据,不需要经过用户空间。大文件传输性能提升 2-3 倍。