温馨提示×

如何优化Ubuntu下的Nginx性能

小樊
44
2025-08-18 05:46:34
栏目: 智能运维

以下是优化Ubuntu下Nginx性能的关键措施:

一、基础配置优化

  • 调整进程与连接数
    worker_processes auto; // 自动匹配CPU核心数
    worker_connections 4096; // 单进程最大连接数,需结合系统限制调整
    worker_cpu_affinity auto; // 绑定进程到CPU核心(NUMA架构优化)
  • 启用长连接
    keepalive_timeout 65s; // 长连接超时时间
    keepalive_requests 1000; // 单连接最大请求数

二、缓存优化

  • 静态资源缓存
    location ~* \.(jpg|css|js)$ { expires 365d; add_header Cache-Control "public, immutable"; } ``` // 缓存1年,减少重复请求 
  • 代理缓存
    proxy_cache_path /var/cache/nginx levels=1:2 keys_zone=my_cache:100m max_size=10g inactive=24h; proxy_cache my_cache; proxy_cache_valid 200 10m; // 缓存200状态码10分钟 ``` // 缓存后端响应,降低服务器负载 

三、压缩与协议优化

  • 启用Gzip/Brotli压缩
    gzip on; gzip_types text/css application/json; gzip_comp_level 6; brotli on; // 需安装模块,压缩率更高 ``` // 减少传输数据量 
  • HTTP/2与TLS优化
    listen 443 ssl http2; // 启用HTTP/2提升并发能力
    ssl_protocols TLSv1.3 TLSv1.2; // 仅使用安全协议
    ssl_session_cache shared:SSL:10m; // 会话复用减少握手延迟

四、系统级调优

  • 调整内核参数
    sudo sysctl -w net.core.somaxconn=65535 # 增大TCP连接队列 sudo sysctl -w net.ipv4.tcp_tw_reuse=1 # 快速回收TIME_WAIT连接 ``` // 优化TCP协议栈性能 
  • 文件描述符限制
    编辑/etc/security/limits.conf,添加:
    * soft nofile 65535 // 提升单个进程最大文件句柄数

五、高级优化技巧

  • 负载均衡
    upstream backend { least_conn; // 动态分配请求到连接数最少的后端 server 10.0.0.1 weight=3; // 权重负载均衡 } ``` // 提升高并发场景下的请求分发效率 
  • 限流与防护
    limit_req_zone $binary_remote_addr zone=api_limit:10m rate=100r/s; location /api { limit_req zone=api_limit burst=20 nodelay; // 限制API接口请求频率 } ``` // 防止CC攻击 

六、验证与监控

  • 测试配置
    sudo nginx -t // 检查配置语法
    sudo systemctl reload nginx // 重新加载配置
  • 性能监控
    使用nginx -s status或集成Prometheus+Grafana监控QPS、缓存命中率等指标

注意事项:修改配置后需逐步测试,避免一次性调整过多参数导致服务异常。根据服务器硬件(CPU/内存)和业务场景(静态/动态内容比例)灵活调整参数。

0