Nginx是现代架构的流量入口、反向代理、负载均衡与静态资源网关,性能直接决定全站可用性、响应速度与成本。本文从核心调优、全维度监控、工具落地、最佳实践四方面,给出生产可直接复用的方案。
一、性能优化:从内核到业务的四层调优
- 进程与连接:榨干硬件
-
worker_processes auto;与CPU核心数对齐,避免上下文切换
-
worker_rlimit_nofile 102400;提升最大文件句柄
-
events中worker_connections 65535;单进程最大连接
-
use epoll;高效IO模型,高并发首选
- 网络与TCP:降低延迟、提升吞吐
-
keepalive_timeout 60;长连接复用,减少握手
-
keepalive_requests 1000;单连接最大请求数
-
tcp_nopush on;tcp_nodelay on;小包合并+低延迟
-
sendfile on;零拷贝,静态资源加速
- 缓存与压缩:减轻后端、提速用户
-
静态缓存:expires、add_header Cache-Control
-
gzip/brotli压缩:文本资源体积降50%+
-
proxy_cache:反向代理缓存,拦截重复请求到后端
- 安全与限流:防雪崩、保稳态
-
limit_req_zone;限流防刷
-
limit_conn_zone;限制单IP并发
-
黑名单、WAF规则、请求大小限制
-
健康检查+fail_timeout;剔除异常后端
- 内核参数兜底(Linux)
-
net.core.somaxconn、net.ipv4.tcp_tw_reuse、fs.file-max
-
适当调整tcp_fin_timeout、rwmem范围
二、监控体系:看得见才能管得好
- 核心监控指标
-
基础状态:活跃连接、等待连接、总请求、处理/丢弃率
-
流量与错误:QPS、带宽、5xx/4xx占比
-
资源:CPU、内存、句柄、磁盘IO、负载
-
业务:响应时间P95/P99、缓存命中率、后端健康度
- 三种监控落地方式
-
内置状态页:ngx_http_stub_status_module,轻量无依赖
-
日志分析:access_log+error_log,配合GoAccess实时可视化
-
云原生监控:Prometheus+Nginx Exporter+Grafana,告警+大屏
- 告警阈值(生产通用)
-
活跃连接持续超阈值5分钟
-
5xx错误率>1%
-
CPU>80%、句柄接近上限
-
后端节点不健康>1台
三、工具链与实战配置
- 状态页快速开启
plaintext
server { listen 80; server_name localhost; location /nginx-status { stub_status; allow 127.0.0.1; deny all; } }
- GoAccess实时日志面板
-
轻量、开箱即用,支持终端/HTML输出
-
看PV/UV、请求路径、状态码、来源IP、耗时分布
- Prometheus+Grafana可观测平台
-
Exporter采集指标
-
Grafana做大盘:连接数、QPS、错误率、响应时间
-
配置Alertmanager告警:企业微信/钉钉/短信
四、最佳实践:稳定优先、渐进优化
-
先监控后优化:用数据定位瓶颈,不盲目改配置
-
灰度发布:配置分批上线,回滚预案备好
-
压测验证:wrk/ab压测,确认提升与安全水位
-
日志轮转:logrotate防止磁盘打满
-
版本稳定:生产用LTS,不追新
-
文档化:配置、阈值、流程沉淀,团队复用
五、总结
Nginx性能优化与监控是高并发网关的必修课:以进程、网络、缓存、限流为核心调优,以状态、日志、云原生监控为观测手段,形成发现---定位---优化---验证---防护闭环。做好这套体系,网关更稳、更快、更省,支撑业务持续增长。