Nginx 性能优化核心笔记
一、核心优化维度
表格
| 优化维度 | 关键参数 / 操作 | 配置示例 | 优化说明 |
|---|---|---|---|
| 连接处理优化 | worker_processes |
worker_processes auto; |
等于 CPU 核心数,充分利用硬件资源 |
worker_connections |
worker_connections 65535; |
单个 worker 最大连接数,影响并发能力 | |
use epoll |
events { use epoll; } |
高效事件驱动模型,适配高并发场景 | |
| 缓存优化 | proxy_cache_path |
proxy_cache_path /var/nginx/cache levels=1:2 keys_zone=my_cache:10m max_size=10g inactive=60m; |
定义缓存目录、层级和空间限制 |
proxy_cache |
location ~ \.js$ { proxy_cache my_cache; } |
针对特定资源启用缓存 | |
| 缓冲区优化 | client_body_buffer_size |
client_body_buffer_size 128k; |
客户端请求体缓冲区大小 |
proxy_buffer_size |
proxy_buffer_size 4k; |
代理响应缓冲区大小 | |
| 超时控制 | keepalive_timeout |
keepalive_timeout 65 60; |
长连接超时时间,减少握手开销 |
proxy_read_timeout |
proxy_read_timeout 30s; |
代理后端响应超时,避免阻塞 |
二、实战配置模板
nginx
# 全局配置
worker_processes auto;
worker_rlimit_nofile 65535; # 最大打开文件数
events {
use epoll;
worker_connections 65535;
multi_accept on; # 尽可能多地接收连接
}
http {
# 缓存配置
proxy_cache_path /var/nginx/cache levels=1:2 keys_zone=STATIC_CACHE:100m inactive=7d max_size=50g;
server {
listen 80 backlog=1024; # 监听队列长度
server_name example.com;
# 静态资源缓存
location ~* \.(jpg|png|js|css)$ {
proxy_cache STATIC_CACHE;
proxy_cache_valid 200 304 12h;
proxy_cache_min_uses 3;
expires 7d;
}
# 反向代理配置
location /api/ {
proxy_pass http://backend_server;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
# 代理缓冲区优化
proxy_buffering on;
proxy_buffer_size 8k;
proxy_buffers 4 32k;
}
}
}
三、监控体系搭建
1. 内置状态监控
启用stub_status模块获取基础监控数据:
nginx
server {
location /nginx_status {
stub_status;
allow 127.0.0.1;
deny all;
}
}
核心指标说明:
Active connections:当前活跃连接数accepts:总接受连接数handled:总处理连接数requests:总请求数
2. 第三方监控集成
表格
| 监控工具 | 配置方式 | 适用场景 |
|---|---|---|
| Prometheus + Grafana | 编译安装nginx-vts-module,配置 HTTP 接口 |
大规模集群,可视化告警 |
| Zabbix | 导入官方模板,监控进程、端口、响应时间 | 企业级监控,告警联动 |
| Prometheus Node Exporter | 采集系统级指标(CPU、内存、磁盘 IO) | 结合 Nginx 指标做系统关联分析 |
3. 关键监控指标
- 连接指标 :
accepts/handled比率、worker_connections使用率 - 请求指标 :
requests秒均请求数、5xx错误率 - 缓存指标 :
cache_hit_ratio(缓存命中率)、cache_miss次数 - 性能指标 :
request_time(请求响应时间)、upstream_response_time(后端响应时间)
四、优化实战技巧
- 静态资源分离:将静态资源部署至 CDN,减轻 Nginx 压力
- GZIP 压缩 :启用
gzip on;压缩文本资源,减少传输体积 - SSL 优化 :配置
ssl_protocols TLSv1.2 TLSv1.3;,启用 SSL 缓存 - 负载均衡 :配置
upstream backend { server 192.168.1.1; server 192.168.1.2; },实现流量分发 - 日志优化:关闭不必要的访问日志,仅记录错误日志,减少 IO 开销
五、常见问题排查
- 高并发连接溢出 :调整
worker_connections和worker_rlimit_nofile - 后端响应慢 :优化
proxy_read_timeout,检查后端服务性能 - 缓存命中率低 :调整
proxy_cache_min_uses,扩大缓存空间 - 内存占用过高 :检查
proxy_buffers配置,避免缓冲区过大