首页主机资讯如何优化Ubuntu Nginx的性能

如何优化Ubuntu Nginx的性能

时间2025-12-19 13:46:03发布访客分类主机资讯浏览655
导读:Ubuntu 上优化 Nginx 性能的系统化清单 从系统资源、Nginx 核心参数、静态资源与压缩、反向代理缓存、连接与速率控制、监控验证六个方面入手,可显著提升吞吐与稳定性。 一 系统层面优化 文件描述符与进程限制 提升进程可打开文...

Ubuntu 上优化 Nginx 性能的系统化清单

从系统资源、Nginx 核心参数、静态资源与压缩、反向代理缓存、连接与速率控制、监控验证六个方面入手,可显著提升吞吐与稳定性。

一 系统层面优化

  • 文件描述符与进程限制
    • 提升进程可打开文件数,编辑 /etc/security/limits.conf
      • 添加:* soft nofile 65535;* hard nofile 65535;root 同值
    • 在 Nginx 主配置中设置:worker_rlimit_nofile 65535;确认 worker_processes 与 CPU 核心匹配(如 auto 或设为核心数)。这能避免 “too many open files”。
  • TCP/IP 与内核网络参数
    • 编辑 /etc/sysctl.conf 或 /etc/sysctl.d/99-nginx.conf,示例:
      • fs.file-max = 999999
      • net.ipv4.tcp_tw_reuse = 1
      • net.ipv4.tcp_keepalive_time = 15
      • net.ipv4.tcp_fin_timeout = 15
      • net.ipv4.tcp_max_tw_buckets = 5000
      • net.core.netdev_max_backlog = 262144
      • net.ipv4.tcp_max_orphans = 262144
    • 应用:sysctl -p。上述设置有助于在高并发下更快回收连接、提升队列与稳定性。
  • I/O 模型
    • events { use epoll; multi_accept on; } (Linux 推荐),减少上下文切换与提高事件分发效率。

二 Nginx 核心参数优化

  • 进程与连接
    • worker_processes auto; (或设为 CPU 核心数)
    • events { worker_connections 16384; use epoll; multi_accept on; }
    • 理论最大并发连接数 ≈ worker_processes × worker_connections(再受限于系统句柄与端口资源)。
  • 传输与缓冲
    • sendfile on; (零拷贝,提高静态文件效率)
    • tcp_nopush on; 与 tcp_nodelay on; (配合长连接与静态资源传输优化)
  • 长连接复用
    • keepalive_timeout 65; keepalive_requests 100; (减少握手开销,提升复用率)

三 静态资源与压缩

  • 静态资源缓存
    • 对图片、字体、JS/CSS 等设置强缓存头,示例:
      • location ~* .(jpg|jpeg|png|gif|ico|css|js|svg|woff2)$ {
        • expires 365d;
        • add_header Cache-Control “public, immutable”;
        • access_log off; # 可选:降低日志压力
        • }
  • 压缩传输
    • 启用 Gzip,示例:
      • gzip on;
      • gzip_vary on;
      • gzip_min_length 1024;
      • gzip_comp_level 5;
      • gzip_types text/plain text/css application/json application/javascript text/xml application/xml application/xml+rss text/javascript;
    • 若上游已压缩,可启用 gzip_static on; 减少重复压缩开销。

四 反向代理与缓存

  • 代理缓冲与超时
    • 合理设置缓冲与超时,减少上游阻塞对 Nginx 的影响:
      • proxy_buffering on;
      • proxy_buffer_size 64k;
      • proxy_buffers 4 64k;
      • proxy_busy_buffers_size 128k;
      • proxy_connect_timeout 30s;
      • proxy_send_timeout 60s;
      • proxy_read_timeout 60s;
  • 代理缓存
    • 定义共享内存与磁盘缓存,示例:
      • proxy_cache_path /var/cache/nginx levels=1:2 keys_zone=my_cache:10m max_size=10g inactive=60m use_temp_path=off;
    • 在 location 中使用:proxy_cache my_cache; proxy_cache_valid 200 1h; proxy_cache_use_stale error timeout updating http_500 http_502 http_503 http_504;
    • 结合 Cache-Control、ETag 与 Vary,提升命中率并降低源站压力。

五 连接与速率控制

  • 限流与防滥用
    • 定义共享内存区与速率:limit_req_zone $binary_remote_addr zone=mylimit:10m rate=1r/s;
    • 在需要保护的 location 应用:limit_req zone=mylimit burst=5 nodelay;
    • 可叠加连接数限制:limit_conn_zone $binary_remote_addr zone=addr:10m; limit_conn addr 10; (按业务评估阈值)
  • 超时与头部
    • client_header_timeout 15s; client_body_timeout 15s; (避免长时间挂起)
    • 按需调整 client_max_body_size(如上传场景),避免过大请求占用资源。

六 监控验证与上线步骤

  • 配置生效与平滑重载
    • 检查语法:nginx -t
    • 平滑重载:systemctl reload nginx(不中断现有连接)
  • 日志与监控
    • 结构化日志便于分析:log_format main ‘$remote_addr - $remote_user [$time_local] “$request” $status $body_bytes_sent “$http_referer” “$http_user_agent” “$http_x_forwarded_for”’;
    • 使用 journalctl、syslog-ng 或接入 Prometheus + Grafana 观测连接、请求耗时、5xx 比例、缓存命中率等关键指标,结合压测持续迭代参数。

声明:本文内容由网友自发贡献,本站不承担相应法律责任。对本内容有异议或投诉,请联系2913721942#qq.com核实处理,我们将尽快回复您,谢谢合作!


若转载请注明出处: 如何优化Ubuntu Nginx的性能
本文地址: https://pptw.com/jishu/776210.html
Debian From Scratch定制化 Debian From Scratch最新版

游客 回复需填写必要信息