溫馨提示×

如何優化Ubuntu下的Nginx性能

小樊
36
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
亚洲午夜精品一区二区_中文无码日韩欧免_久久香蕉精品视频_欧美主播一区二区三区美女