Nginx 几个调优配置
几个用得上的 Nginx 调优项:worker、文件描述符上限、TCP 选项。
~/posts/nginx-tuning $ cat post.md
范围
Nginx 是模块化的,可以靠分别配置几个模块来”调优”它的表现。这与其说是优化,不如说是把项目的取向告诉 Nginx。
这篇基于上一篇 用 Nginx 反向代理 Node 服务 里的配置作为起点。
全局
有几个全局选项值得注意:
worker_processes auto;worker_rlimit_nofile 4864;
worker_processes 是启用的进程数,最简单的做法是保持 auto,让 Nginx 根据 CPU 核心数自动决定。
worker_rlimit_nofile 是单个 worker 可以打开的文件数上限,可以拉到系统的上限。4864 是我 mac 上的数值。如果项目里要打开大量文件(比如反代非常多的小文件资源),这个值就值得调。
HTTP 模块
HTTP 模块里可配的项不少,但大多对”性能”帮助有限,更多是让 Nginx 适配项目的需求。两个常用的:
tcp_nopush on;tcp_nodelay on;
tcp_nopush 让 Nginx 把所有 header 打到一个包里再发出去——大部分时段开着合适。
tcp_nodelay 让 Nginx 不缓存包,立刻发出——项目对实时性要求高时再开。