Nginx是一款高性能的Web服務器和反向代理服務器,優化Nginx在Linux服務器上的性能可以顯著提升服務器的處理能力和響應速度。以下是一些常見的Nginx優化技巧:
設置worker_processes:根據服務器的實際CPU核心數來設置工作進程的數量。通常設置為等于可用的物理CPU核心數可以充分利用多核優勢。
worker_processes auto; # 或者明確指定核心數,如 worker_processes 4;
配置worker_connections:設置每個工作進程能夠同時處理的最大連接數。
events { worker_connections 1024; # 根據服務器資源適當調整 }
啟用高效的事件模型:確保選擇了正確的事件模型,如epoll(對于Linux)、kqueue(對于BSD類系統)。
events { use epoll; }
啟用sendfile:使用sendfile可以減少數據在內核空間和用戶空間之間的復制操作,提高文件傳輸效率。
http { sendfile on; }
啟用Gzip壓縮:開啟gzip壓縮以減小響應數據大小,加快網絡傳輸速度。
http { gzip on; gzip_comp_level 6; gzip_types text/plain text/css application/json application/javascript text/xml application/xml application/xml+rss text/javascript; }
緩存優化:對靜態資源啟用緩存,例如通過proxy_cache或fastcgi_cache等模塊設置緩存策略。
proxy_cache_path /var/cache/nginx levels=1:2 keys_zone=my_cache:10m inactive=60m;
TCP參數優化:調整Linux內核的相關TCP參數以優化網絡性能,比如net.ipv4.tcp_tw_reuse、net.ipv4.tcp_fin_timeout等。
sysctl -w net.ipv4.tcp_tw_reuse=1
sysctl -w net.ipv4.tcp_fin_timeout=30
CPU親和性:如條件允許,可以考慮設置worker進程與特定CPU核心綁定以提高緩存命中率。
worker_cpu_affinity 01 10; # 對于雙核CPU,將兩個worker分別綁定到不同的核心
負載均衡:如果有多臺服務器,利用Nginx作為反向代理實現負載均衡,分攤請求壓力。
upstream backend { server backend1.example.com; server backend2.example.com; }
在進行任何優化前,務必備份原有配置,并根據實際負載情況進行性能測試,以確保改動達到預期效果且不引入新的問題。