Nginx性能优化与监控

一、核心优化方向

  1. worker 进程配置

    • worker_processes auto;:自动匹配 CPU 核心数
    • worker_connections 10240;:单进程最大连接数(需配合系统 ulimit)
    • worker_rlimit_nofile 65535;:提升最大文件句柄数
  2. 事件模型优化

    nginx

    复制代码
    events {
        use epoll;
        multi_accept on;
        accept_mutex off;
    }
  3. TCP / 网络优化

    nginx

    复制代码
    http {
        sendfile on;
        tcp_nopush on;
        tcp_nodelay on;
        keepalive_timeout 65;
        keepalive_requests 1000;
    }
  4. 压缩优化

    nginx

    复制代码
    gzip on;
    gzip_types text/plain text/css application/json application/javascript text/xml application/xml application/xml+rss text/javascript;
    gzip_min_length 1k;
  5. 静态资源缓存

    nginx

    复制代码
    location ~* \.(jpg|jpeg|png|gif|ico|css|js)$ {
        expires 30d;
        add_header Cache-Control "public, max-age=2592000";
    }
  6. 隐藏版本、提升安全

    nginx

    复制代码
    server_tokens off;

二、系统层面优化(配合 Nginx)

  1. 修改 /etc/security/limits.conf

    plaintext

    复制代码
    nginx soft nofile 65535
    nginx hard nofile 65535
  2. 内核参数 /etc/sysctl.conf

    plaintext

    复制代码
    net.core.somaxconn = 65535
    net.core.netdev_max_backlog = 65535
    net.ipv4.tcp_syncookies = 1
    net.ipv4.tcp_tw_reuse = 1
    net.ipv4.tcp_fin_timeout = 30

    执行:sysctl -p


三、监控指标与工具

1. 关键监控指标

  • 活跃连接数、等待连接数
  • 请求 QPS、响应时间
  • 状态码:2xx/3xx/4xx/5xx 占比
  • CPU、内存、句柄、磁盘 I/O
  • upstream 后端健康状态

2. 内置状态页

nginx

复制代码
location /nginx_status {
    stub_status;
    allow 127.0.0.1;
    deny all;
}

访问:http://ip/nginx_status

3. 常用监控工具

  • nginx -t:配置语法检查
  • nginx -s reload:平滑重载
  • netstat -anp | grep nginx / ss -s
  • tophtopiostatdstat
  • 日志分析:awkgoaccess
  • 接入 Prometheus + Grafana(nginx-vts-exporter)

四、日志与排错

  1. 访问日志:记录请求、状态、耗时、UA、来源
  2. 错误日志:定位 upstream、权限、配置、端口冲突
  3. 常用排查:
    • 502:后端服务挂 / 超时 / 不可达
    • 504:超时
    • 403:权限 / 目录索引 / IP 限制
    • 404:路径 / 路由 / 文件不存在
相关推荐
黄同学real1 分钟前
踩坑实录:离线内网服务器 Docker 部署 PaddleOCR-VL 1.5 完全指南
运维·服务器·docker
东北甜妹3 分钟前
K8s -Daemonset,kube-proxy,service,statefulset
linux·运维·服务器
DeepHacking5 分钟前
在电脑 B 上通过局域网 SSH 直接从电脑 A 拉取文件,用 rsync 断点续传
运维·ssh
Season4506 分钟前
论close()与signal(SIGPIPE,SIG_IGN)对服务器的重要性
运维·服务器
idolao7 分钟前
CentOS 7 安装 xampp-linux-1.8.1.tar.gz 详细步骤(解压、启动、验证)
linux·运维·centos
码点7 分钟前
Android 9休眠时任意键唤醒屏幕
android·linux·运维
杨云龙UP8 分钟前
Docker 部署 MongoDB 6.0 数据库每日自动备份实践:本地 + 异地保留 7 天_20260429
linux·运维·数据库·mongodb·docker·容器·centos
INosdfgs19 分钟前
HAProxy 入门:高性能开源负载均衡
运维·其他·开源·负载均衡
Drache_long28 分钟前
K8S(二)
运维·docker·云原生·容器·kubernetes
feng_you_ying_li2 小时前
linux之shell的进阶补充和基础IO流的介绍
linux·运维·服务器