Nginx是大型架构的核心,下面我重点详解Nginx性能优化@mikechen
一、worker_processes
—— 决定并发能力的核心参数
每个worker
进程是单线程异步事件驱动模型,能充分利用CPU核心。
因此建议设置为:
worker_processes auto;
实战建议:
在多核服务器(如8核)上使用auto
,让Nginx自动识别核心数;
若为容器环境,需限制CPU核心并手动配置。
二、worker_connections
—— 决定单进程可承载连接数
每个worker进程可同时处理的最大连接数,默认值:1024
优化示例:
events {
worker_connections 65535;
}
原理说明:
总并发连接数 = worker_processes × worker_connections
例如:
8个进程 × 65535 ≈ 50万连接(理论上限)
实战优化:
根据系统ulimit -n
最大文件描述符进行调整;
注意与epoll
事件驱动结合使用;
若配合keep-alive连接,应留足余量。
三、keepalive_timeout
—— 平衡连接复用与资源占用
长连接的保持时间,默认值:75s
优化建议:
keepalive_timeout 15s;
💡 优化思路:
连接保持太久 → 占用资源;
太短 → 增加TCP三次握手次数;
需根据业务类型权衡。
🚀 实战经验:
静态资源服务可适当缩短;
动态接口或API请求可维持15–30s;
若有反向代理层,需保持一致。
四、client_max_body_size
—— 控制单次请求体积
限制客户端请求体大小,默认值:1M
优化示例:
client_max_body_size 20M;
优化场景:
上传文件(图片、视频);
POST请求体较大。
实战建议:
过小会导致413 Request Entity Too Large
;
可按接口特性在location
级别单独配置;
上传流式数据可搭配proxy_request_buffering off;
使用。
五、组合优化磁盘IO与网络性能
这三个参数常被忽略,但却是性能提升的关键细节。
推荐配置:
sendfile on;
tcp_nopush on;
tcp_nodelay on;
参数说明:
sendfile:启用零拷贝机制,减少内核与用户空间的数据拷贝;
tcp_nopush:将响应头和数据包合并后一次性发送;
tcp_nodelay:禁用Nagle算法,减少小包延迟(主要对动态接口有效)。
实战组合:
静态资源服务器:sendfile on; tcp_nopush on;
动态接口服务:tcp_nodelay on;