Nginx 性能优化怎么选:从参数调优到硬件匹配的实战思路
很多站长遇到并发上不去、响应变慢,第一反应是换服务器,其实 Nginx 配置和硬件选型同样关键。本文从 worker 进程、连接数、文件描述符到磁盘与带宽匹配,讲清楚优化该从哪里下手。
先别急着加配置,搞清楚瓶颈在哪
不少站长一看 Nginx 扛不住,第一反应是升级 CPU 或加内存。但实际跑起来,瓶颈往往在别的地方:可能是 worker_connections 设置太小,可能是文件描述符没放开,也可能是磁盘 IO 拖了后腿。
优化之前先做一件事:压测。用 ab 或 wrk 打一遍,看 QPS、延迟和错误率。再配合 top、iostat、ss 观察 CPU、磁盘和连接状态。数据比感觉可靠得多。
核心参数怎么调才算合理
Nginx 的性能很大程度上取决于几个关键参数。worker_processes 一般设为 CPU 核心数,或者 auto 让系统自己判断。worker_connections 决定单进程能处理多少连接,默认值往往偏低,需要根据业务并发调整。
- worker_rlimit_nofile:文件描述符上限,设得太低会在高并发时直接报错。
- keepalive_timeout:长连接保持时间,静态资源多的站点可以适当调高。
- gzip:压缩能省带宽,但会吃 CPU,动态内容要权衡。
- sendfile 与 tcp_nopush:静态文件服务开启后吞吐提升明显。
这些参数没有万能值,得结合业务类型来定。图片站和 API 服务的侧重点完全不同。
硬件选型:别让服务器拖了 Nginx 的后腿
参数调得再好,硬件跟不上也是白搭。Nginx 对 CPU 单核性能敏感,对内存需求相对温和,但磁盘和带宽往往是隐形瓶颈。
如果是静态资源分发或大文件下载,磁盘 IO 和带宽比 CPU 更重要。这时候选一台大带宽的物理服务器,比堆 CPU 核心更实在。比如面向亚太用户的站点,可以考虑香港裸机云 XII,E5-2683v4*2 配 64G 内存和 20M 带宽,跑 Nginx 反代和静态分发都够用。
如果是面向欧美用户的下载站或视频站,带宽需求更夸张,那就要看 G 口级别的机器。像美国硅谷大带宽服务器 X,E5-2680*2 加 G 口带宽,适合做 CDN 回源或大流量分发节点。
优化是个持续过程,不是一次性配置
调完参数上线只是开始。业务量涨了、访问模式变了,原来的配置可能就不合适了。建议定期看 access log 和 error log,关注 499、502 这类状态码的变化。Nginx 优化没有终点,只有不断匹配当前业务状态的过程。