Nginx 性能与生产清单——worker、epoll 与上线检查表
2026/8/16大约 4 分钟
Nginx 系列 · 第 12/12 篇(收官)
上一篇:《日志与排障》
参考:Connection processing methods、ngx_core_module、AOSA nginx 章节
开头:调参前先分清瓶颈
入口慢,不一定是 worker_connections 太小——更常见是 TLS CPU、上游慢、磁盘日志、缓存未命中、fd 耗尽、限流误伤。本篇给出调优优先级与一份可勾选的生产清单。
一、原理:事件模型(Linux / epoll)
每个 worker 是单线程事件循环(模块回调),用 epoll(Linux 默认可用方法之一)同时盯大量连接:可读再读、可写再写,不在阻塞 I/O 上睡死。
因此:
- worker 数 ≈ CPU 核数(
worker_processes auto;)通常是好起点。 - 盲目加 worker 会增加上下文切换与缓存污染。
- 阻塞在 worker 里的操作(慢磁盘、傻等)会拖住该 worker 上所有连接——所以反代、缓存路径要避免阻塞逻辑。
worker_processes auto;
worker_rlimit_nofile 65535;
events {
worker_connections 4096;
multi_accept on; # 一次 accept 多个,视场景
# use epoll; # Linux 上通常自动选择
}粗算并发能力直觉:
约
worker_processes × worker_connections(还受系统nofile、内存、上游能力限制)。
ulimit -n
# systemd 服务可在 override 里设 LimitNOFILE=
sudo systemctl edit nginx二、调优优先级(务实顺序)
- 上游与超时:502/504、
$upstream_response_time——先修应用。 - TLS:会话复用、HTTP/2、证书链、CPU。
- 连接复用:客户端 keepalive、上游
keepalive。 - 缓存与压缩:可缓存 GET、合理 gzip。
- 限流与隔离:保护登录/搜索等热点。
- worker / connections / nofile:确认 fd 与连接打满后再调。
- sendfile / tcp_nopush / tcp_nodelay:静态站微优化。
http {
sendfile on;
tcp_nopush on;
tcp_nodelay on;
keepalive_timeout 65;
keepalive_requests 1000;
}三、生产检查清单
安装与进程
配置与站点
TLS
性能与容量
安全与稳定
可观测
发布
四、系列回顾与延伸
| 篇 | 关键词 |
|---|---|
| 01–02 | 事件驱动、安装、reload |
| 03–04 | 上下文、静态站、server_name |
| 05–06 | 反代、upstream、被动摘除 |
| 07–08 | TLS、location/rewrite |
| 09–10 | 缓存压缩、鉴权限流 |
| 11–12 | 日志排障、性能清单 |
延伸阅读:
- 容器 HTTPS:HTTPS Nginx——从浏览器红页滚到本机全绿
- K8s 前端代理:集群中部署微服务前端代理 Nginx
- TCP/UDP:
stream{}、njs、Gateway Fabric / Ingress ——可作为二期专题
五、收官小结
- Linux 上 Nginx 的底气是 少量 worker + epoll 事件驱动。
- 调参服从瓶颈:上游与 TLS 优先于盲目加大
worker_connections。 - 用本篇清单做上线门禁;配置变更永远
-t→ reload。
至此,Ubuntu 上从安装到反代、安全与性能的 Nginx 入门主线已闭合。后续若加 stream/njs 篇,仍挂在本 Linux · Nginx 板块下即可。