Nginx性能优化与监控笔记

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(后端响应时间)
四、优化实战技巧
  1. 静态资源分离:将静态资源部署至 CDN,减轻 Nginx 压力
  2. GZIP 压缩 :启用gzip on;压缩文本资源,减少传输体积
  3. SSL 优化 :配置ssl_protocols TLSv1.2 TLSv1.3;,启用 SSL 缓存
  4. 负载均衡 :配置upstream backend { server 192.168.1.1; server 192.168.1.2; },实现流量分发
  5. 日志优化:关闭不必要的访问日志,仅记录错误日志,减少 IO 开销
五、常见问题排查
  1. 高并发连接溢出 :调整worker_connectionsworker_rlimit_nofile
  2. 后端响应慢 :优化proxy_read_timeout,检查后端服务性能
  3. 缓存命中率低 :调整proxy_cache_min_uses,扩大缓存空间
  4. 内存占用过高 :检查proxy_buffers配置,避免缓冲区过大
相关推荐
成为你的宁宁2 分钟前
【Prometheus监控Nginx/Mysql/Redis/Docker/Rabbitmq】
mysql·nginx·prometheus
清平乐的技术专栏5 分钟前
【Kafka笔记】(三)常用命令整理
笔记·分布式·kafka
Hua-Jay8 分钟前
OpenCV联合C++/Qt 学习笔记(二十四)----差值法检测移动物体、稠密光流法跟踪移动物体及稀疏光流法跟踪移动物体
c++·笔记·qt·opencv·学习·计算机视觉
Patrick_Wilson8 分钟前
CLI 工具突然变慢了?别急着怀疑网络,按这四步排查
网络协议·性能优化·命令行
阿里-于怀10 分钟前
告别 Ingress Nginx:云原生 API 网关 Gateway API 使用指引
nginx·云原生·gateway
清平乐的技术专栏15 分钟前
【FlinkSQL笔记】(一)什么是Flink SQL
笔记·sql·flink
難釋懷19 分钟前
Nginx应用场景
运维·nginx
半夜修仙20 分钟前
Redis中Set数据类型的常见命令
java·数据库·redis·笔记·学习
持梦远方27 分钟前
Nginx 静态资源挂载与前端部署实战笔记
linux·前端·笔记·nginx
艾莉丝努力练剑1 小时前
【Linux网络】Linux 网络编程:HTTP(四)从手写服务器到生产级 Nginx 与 cpp-httplib 实战
linux·运维·服务器·网络·c++·nginx·http