nginx 高性能调优需从进程模型、tcp 优化、压缩缓存、日志精简四方面入手:启用多 worker 进程与 epoll、调优 tcp 参数、开启 gzip 与 sendfile、关闭 access_log 并调整内核参数。

要让 Nginx 在高带宽、低延迟网络(比如 5G 或千兆内网)中发挥最大效能,关键不是堆带宽,而是减少每一环节的等待和冗余——连接建立快、数据发得准、文件读得省、CPU 不白忙。
匹配硬件的进程与连接模型
Nginx 默认只开 1 个 worker 进程,等于把多核 CPU 当单核用。必须让它“并行起来”:
- worker_processes auto; —— 自动识别 CPU 核心数,每个核心一个独立工作进程
-
worker_connections 65535; —— 每个进程支持超大并发连接,配合系统级 ulimit 调整(
ulimit -n 100000) - use epoll; —— Linux 下最高效的事件驱动模型,比 select/poll 更适合万级连接
- multi_accept on; —— 允许单次 accept 多个新连接,降低惊群效应
加速 TCP 传输链路
高带宽下,瓶颈常不在吞吐量,而在小包堆积、延迟抖动或握手往返。TCP 层需精细调控:
- tcp_nodelay on; —— 关闭 Nagle 算法,小响应(如 API、WebSocket)立刻发出,不攒包
-
tcp_nopush on; —— 配合
sendfile on,让内核合并 HTTP 头 + 文件数据一次性发出去 -
keepalive_timeout 75; —— 保持长连接,避免高频建连开销;搭配
keepalive_requests 1000提升复用率 - sendfile on; —— 启用零拷贝,静态文件(图片、JS、CSS)直接从磁盘送入网卡缓冲区,跳过用户态内存拷贝
压减传输体积与重复加载
带宽再高,也不该传冗余字节。压缩和缓存是降载核心手段:
- gzip on; gzip_types text/css application/javascript application/json text/xml; —— 对文本类资源强制压缩,节省 60%+ 体积
- gzip_vary on; —— 告诉 CDN 或浏览器:压缩结果取决于 Accept-Encoding,避免缓存错乱
-
expires 1y; —— 对带哈希名的静态资源(如
main.a1b2c3.js)设一年缓存,彻底免去重复请求 - open_file_cache max=10000 inactive=60s; open_file_cache_valid 60s; —— 缓存文件句柄和元信息,避免反复 stat() 和 open() 系统调用
减轻日志与系统级拖累
高频访问下,每条 access_log 写磁盘都可能成为延迟尖刺:
- access_log off; —— 生产环境若无需逐条分析,直接关闭访问日志
- error_log /var/log/nginx/error.log warn; —— 错误日志仅记录 warn 及以上,减少 I/O 压力
- 同步调整内核参数:
net.core.somaxconn = 65535、net.ipv4.tcp_max_syn_backlog = 65535,防止连接队列溢出丢包











