温馨提示×

Ubuntu上Nginx性能优化有哪些技巧

小樊
46
2025-11-17 10:20:29
栏目: 智能运维

Ubuntu上Nginx性能优化实用技巧

一 基础配置优化

  • 调整并发模型:将worker_processes设为与CPU核心数一致(如4核设为4),充分利用多核;在events中提升worker_connections(如4096)以扩大并发连接容量。示例:
    worker_processes auto;  # 或设为 CPU 核心数
    events {
        worker_connections 4096;
        multi_accept on;
    }
    
  • 开启高效传输:启用**sendfile on;减少用户态与内核态拷贝;与tcp_nopush on;**配合,在开启sendfile时尽量合并包发送,提高带宽利用率。
  • 长连接复用:在http/server/location中配置keepalive_timeout 65; keepalive_requests 100;,复用后端或客户端连接,降低握手开销。

二 内容传输与压缩

  • 启用Gzip压缩:对文本类资源进行压缩以减少传输体积,建议适度提高压缩级别并限制最小压缩长度。示例:
    gzip on;
    gzip_comp_level 5;
    gzip_min_length 256;
    gzip_types text/plain text/css application/json application/javascript text/xml application/xml application/xml+rss text/javascript;
    gzip_vary on;
    gzip_proxied any;
    
  • 开启静态资源缓存与协商:启用ETag以加速缓存验证;对静态文件设置合适的Cache-Control/Expires头,减少重复传输。

三 反向代理与缓存

  • 反向代理缓存:为后端动态内容设置缓存区,降低后端压力、提升响应。示例:
    http {
        proxy_cache_path /var/cache/nginx levels=1:2 keys_zone=my_cache:10m max_size=10g inactive=60m use_temp_path=off;
        server {
            location / {
                proxy_cache my_cache;
                proxy_pass http://backend;
            }
        }
    }
    
  • 连接复用与头部优化:为代理连接启用keepalive(如upstream中配置keepalive 32;),减少频繁建连;按需设置**proxy_buffering on;**与合适的缓冲参数,平滑突发流量。

四 启用HTTP/2与TLS

  • 开启HTTP/2:在listen 443 ssl http2;中启用HTTP/2以多路复用提升并发与首包速度;同时确保正确配置SSL/TLS证书(如Let’s Encrypt)。示例:
    server {
        listen 443 ssl http2;
        ssl_certificate /etc/letsencrypt/live/example.com/fullchain.pem;
        ssl_certificate_key /etc/letsencrypt/live/example.com/privkey.pem;
        # 其他SSL安全参数...
    }
    
  • 说明:HTTP/2通常运行在TLS之上,启用后可在同一连接并行传输多个请求,减少队头阻塞。

五 系统与运维实践

  • 文件描述符限制:提升进程可打开的文件描述符上限,编辑**/etc/security/limits.conf**:
    * soft nofile 65535
    * hard nofile 65535
    root soft nofile 65535
    root hard nofile 65535
    
  • TCP/IP栈优化:按需调整内核网络参数(示例为通用高并发思路,生产环境请结合压测微调):
    net.ipv4.tcp_tw_reuse = 1
    net.ipv4.tcp_fin_timeout = 30
    net.ipv4.tcp_max_syn_backlog = 4096
    net.core.somaxconn = 4096
    
  • 日志与观测:实时查看error.log定位瓶颈与异常(如sudo tail -f /var/log/nginx/error.log);使用GoAccess分析访问日志,示例:
    sudo apt install goaccess
    goaccess /var/log/nginx/access.log -f COMMON -o html > /var/www/html/goaccess.html
    
  • 平滑生效与压测:修改配置后使用sudo systemctl reload nginx平滑重载;用httperf等工具进行压测与回归验证,逐步调优参数。

0