高并發(fā)場景下,如何提升Nginx并發(fā)性能?
Nginx是大型架構的必備中間件,也是高并發(fā)的核心組件,下面我就重點詳解“5大提升Nginx并發(fā)性能方案”@mikechen
Nginx高并發(fā)
Nginx 是目前全球最流行的 Web 服務器之一,其廣泛使用得益于其卓越的性能。
Nginx 采用一個主進程(Master),管理多個工作進程(Worker)的架構。
每個工作進程通過一個事件循環(huán)處理所有活躍連接,僅在有事件觸發(fā)時執(zhí)行回調(diào),避免阻塞。

與其他傳統(tǒng)的 Web 服務器相比,Nginx 在處理大量并發(fā)請求時,能夠在有限的硬件資源下提供更穩(wěn)定的服務。
即使在處理大量并發(fā)連接時,Nginx 對系統(tǒng)資源(CPU 和內(nèi)存)的占用也更低。
Nginx高并發(fā)優(yōu)化
即便Nginx可以更好的支撐并發(fā),但在 Nginx 高并發(fā)性能中,以下 5 大核心參數(shù)依然是最關鍵的優(yōu)化項。
worker_processes
worker_processes 是 Nginx 中一個非常重要的配置參數(shù),它用于設置 Nginx 工作進程的數(shù)量。
最新文章
可以使用 auto 關鍵字,讓 Nginx 自動檢測 CPU 核心數(shù)并進行配置:
worker_processes auto;
events {
worker_connections 1024;
}如果你對服務器的負載情況有更精確的了解,也可以手動指定 worker_processes 的值。
最新文章
例如:如果服務器有 4 個 CPU 核心,可以將 worker_processes 設置為 4:
worker_processes 4;
events {
worker_connections 1024;
}比如:中型服務器配置:
- CPU核心數(shù):8;
- 內(nèi)存:16GB;
- Nginx配置;
worker_processes 8;
events {
worker_connections 16384;
multi_accept on;
use epoll;
}worker_connections
worker_connections 指令,用于設置每個工作進程可以處理的“最大連接數(shù)”。
最新文章
默認值為 1024,通常需要根據(jù)系統(tǒng)資源增加此值。
worker_processes 4;
events {
worker_connections 1024;
}
http {
# 其他 HTTP 相關配置
server {
listen 80;
server_name mikechen.cc;
location / {
root /var/www/html;
index index.html;
}
}
}理論上最大連接數(shù) = worker_processes * worker_connections。
可以根據(jù)服務器的硬件資源,比如:(CPU、內(nèi)存、網(wǎng)絡帶寬…),調(diào)整 worker_connections。
推薦值:通常設置為 幾千到幾萬,具體取決于服務器能力。
比如:
- 小型服務器:4096 ~ 8192;
- 中型服務器:16384 ~ 32768;
- 大型服務器:65536 或更高。
events {
worker_connections 65535;
}備注:這里同時需要,調(diào)整系統(tǒng)的文件描述符限制(通過修改 /etc/security/limits.conf 和 ulimit 命令)。
ulimit -nNginx 提供了一個指令 worker_rlimit_nofile,用于設置每個 worker 進程的最大文件描述符限制:
worker_rlimit_nofile 65535; # 設置每個 worker 的文件描述符限制
worker_processes auto;
events {
worker_connections 16384;
}keepalive_timeout
HTTP 長連接的超時時間,主要是:控制客戶端、與服務器之間保持連接的時間,減少重復建立連接的開銷。
最新文章
一般,設置合理的超時時間(如 60 秒),避免過長導致無效連接占用資源。
keepalive_timeout 60;在高并發(fā)場景下,建議將 keepalive_timeout 設置為較短的時間(如 30 秒),以避免空閑連接占用過多資源:
keepalive_timeout 30;gzip
啟用 Gzip 壓縮,可以減少傳輸數(shù)據(jù)量,提高并發(fā)處理能力
比如:通過壓縮響應數(shù)據(jù)(如 HTML、CSS、JavaScript),減少傳輸?shù)臄?shù)據(jù)量,提高帶寬利用率。
gzip on;
gzip_min_length 1k;
gzip_comp_level 2;
gzip_types text/plain application/javascript text/css application/xml;緩存配置
緩存打開的文件句柄,可以減少頻繁打開文件的操作,提高靜態(tài)資源的訪問速度。
最新文章
open_file_cache max=10000 inactive=20s;
open_file_cache_valid 30s;
open_file_cache_min_uses 1;
open_file_cache_errors on;以及,通過緩存靜態(tài)文件,減少對后端服務器的請求:
location ~* \.(jpg|jpeg|png|gif|ico|css|js)$ {
expires 365d;
add_header Cache-Control public;
}通過以上配置,可以有效提升 Nginx 在高并發(fā)場景下的性能表現(xiàn)。



































