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 分钟前
信奥C++一维数组笔记
开发语言·c++·笔记
昕光xg19 分钟前
Istio笔记04-基于Jaeger的分布式链路追踪
笔记·分布式·istio
学计算机的计算基1 小时前
操作系统内存管理全解:虚拟内存、页表、COW、malloc、OOM一篇搞定
java·笔记·算法
chexus1 小时前
21. 深入 Nginx HTTP 缓存源码:CDN功能
nginx·http·缓存
AOwhisky1 小时前
Python 学习笔记(第五期)——组合数据类型:列表、元组、集合与字典精讲——核心知识点自测与详解
开发语言·笔记·python·学习·云计算
砚凝霜1 小时前
软考网络工程师|第 2 章 信道延迟、传输介质、数据编码、数字调制、PCM 完整备考笔记
网络·笔记·pcm
遇乐的果园14 小时前
前端学习笔记-vue加载渲染优化
前端·笔记·学习
遇乐的果园15 小时前
前端学习笔记-vue状态管理优化
前端·笔记·学习
摇滚侠16 小时前
Java 全栈开发实战教程 课程笔记 29-33
笔记
茯苓gao17 小时前
嵌入式开发笔记:EtherCAT协议从硬件到软件完整配置指南——从零搭建一套EtherCAT通信系统
笔记·嵌入式硬件·学习