温馨提示×

Debian系统中Nginx性能调优参数

小樊
48
2025-11-30 04:27:42
栏目: 智能运维

Debian 下 Nginx 性能调优参数清单

一 全局与事件模块

  • 进程与文件句柄
    • 设置工作进程数:worker_processes auto;(或设为 CPU 核心数)。
    • 提升单进程文件描述符上限:worker_rlimit_nofile 65535;(需与系统限制一致)。
  • 事件模型与连接
    • Linux 推荐使用 use epoll;
    • 提升每进程并发连接:worker_connections 16384;(依据内存与负载调优)。
    • 加速新连接接纳:multi_accept on;

二 HTTP 与静态资源传输

  • 高效传输
    • 启用零拷贝:sendfile on;
    • 配合 tcp_nopush on;tcp_nodelay on; 降低小包延迟、提升吞吐。
  • 长连接复用
    • keepalive_timeout 65;(秒)
    • keepalive_requests 100;(单连接最大请求数)
  • 压缩
    • 启用压缩:gzip on;
    • 常用类型:gzip_types text/plain text/css application/json application/javascript text/xml;
    • 建议参数:gzip_vary on; gzip_comp_level 6; gzip_min_length 1024;
  • 静态资源缓存
    • 示例:对静态资源设置长期缓存并减少日志开销
      location ~* \.(js|css|png|jpg|jpeg|gif|ico)$ {
          expires 1y;
          add_header Cache-Control "public, no-transform";
          access_log off;
      }
      
  • 文件元数据缓存
    • 减少 open/stat 开销:open_file_cache max=1000 inactive=20s; open_file_cache_valid 30s; open_file_cache_min_uses 2; open_file_cache_errors on;

三 反向代理与缓存

  • 代理缓存示例
    proxy_cache_path /var/cache/nginx levels=1:2 keys_zone=my_cache:10m
                     max_size=1g inactive=60m use_temp_path=off;
    
    server {
        location / {
            proxy_cache my_cache;
            proxy_pass http://backend;
            proxy_cache_valid 200 302 10m;
            proxy_cache_valid 404 1m;
        }
    }
    
  • 上游与负载均衡
    • 算法选择:least_conn;(最少连接)、ip_hash;(会话保持)等。
    • 被动健康检查:max_fails=3 fail_timeout=30s;

四 系统内核与文件描述符限制

  • 系统级 TCP 参数(/etc/sysctl.conf)
    net.core.somaxconn = 65535
    net.ipv4.tcp_max_syn_backlog = 65535
    net.ipv4.ip_local_port_range = 1024 65535
    net.ipv4.tcp_tw_reuse = 1
    net.ipv4.tcp_fin_timeout = 30
    net.ipv4.tcp_keepalive_time = 60
    net.ipv4.tcp_keepalive_intvl = 10
    net.ipv4.tcp_keepalive_probes = 6
    fs.file-max = 65536
    
    应用:sudo sysctl -p
  • 用户级文件描述符限制(/etc/security/limits.conf)
    * soft nofile 65535
    * hard nofile 65535
    
  • 生效方式
    • 重新登录会话或重启;Nginx 配置变更后执行:sudo nginx -s reload

五 验证与注意事项

  • 基线测试与压测
    • 使用 abwrk、或 nginx 自带的 ngx_http_stub_status 模块获取并发、RPS、延迟与错误率基线,逐步调参并回归测试。
  • 监控与日志
    • 关注 CPU、内存、连接队列、磁盘 I/O;实时查看 access.log / error.log 定位瓶颈与异常。
  • 逐步调整与回滚
    • 一次只调整少量参数,变更前备份配置,变更后灰度/回滚预案就绪。
  • 压缩权衡
    • gzip 会增加 CPU 使用,压缩级别与类型按内容类型与 CPU 能力权衡。
  • 连接上限估算
    • 理论最大并发连接数 ≈ worker_processes × worker_connections;需同时校验系统 somaxconn、文件句柄、端口范围 等上限。

0