Nginx 中 main
段引數為全域性引數, http
和 server
段的皆在 main
段引數的作用之下。
timer_resolution time
timer_resolution 80ms;
worker
子程式內部計時器精度,調整時間間隔越大, worker
子程式和外部應用程式之間的切換時間越長,也就避免了過度切換,保證了高效能。
worker_rlimit_nofile number
worker_rlimit_nofile 50000;
設定 worker
子程式可以開啟的最大檔案控制程式碼數。如果想要 Nginx 承載更多的併發可以設定更大的數字。埠最大數為 65335,但理論上 tcp 連線數會遠超過 65535,這是因為理論上的 ip 地址數為 2 的 ip位數的次方,相應的理論 tcp 連線數與之一樣的多。由於 Nginx 分配請求並非均衡,最好將此數字設定為儘可能的高以避免超過 worker
子程式的最大限制而返回伺服器 502 錯誤。
worker_rlimit_core size
worker_rlimit_core 80M;
設定 worker
子程式異常終止後記錄分析問的 core
檔案。
worker_processes number | auto
worker_processes number 4;
worker_processes number auto;
設定 Nginx 啟動的 woker
子程式數量,auto 表示根據 cpu 個數自動設定。可以由 lscpu
命令檢視 cpu 個數。
worker_cpu_affinity cpu1 cpu2 ...
worker_cpu_affinity 0001 0010 0100 1000;
過多上下文切換造成不必要的效能開銷,繫結 cpu 可以利用 cpu 快取保持高效能。
worker_priority number
worker_priority number -5;
設定 worker
子程式的 nice 值以調整 Nginx 執行的優先值。程式啟動時,nice 值預設為 0,換算到優先順序為 120。nice 值對應 -20~19,可透過 nice 值調整的優先順序範圍是 100~139,值越低優先順序別越高。
worker_shutdown_timeout time
worker_shutdown_timeout 5;
設定 worker
子程式優雅退出時的超時時間,防止 worker
子程式被惡意干擾,再等待一段時間後若無回應則會斷開連線。
除上述主要引數之外,main
段引數還包括 user 與 pid。
user USERNAME [GROUP]
user nginx nginx;
設定執行 Nginx 的 worker
子程式屬主和屬組,透過語法可知,屬組可以不指定。
pid DIR
/usr/local/nginx/logs/nginx.pid;
設定執行 Nginx 的 master
主程式的 pid 檔案存放路徑。
配置完成後 main
段引數如下
user nginx nginx;
worker_processes auto;
timer_resolution 80ms;
worker_rlimit_nofile 50000;
worker_rlimit_core 80M;
working_directory /opt/nginx/core;
worker_cpu_affinity 0001 0010 0100 1000;
worker_priority -5;
worker_shutdown_timeout 3;
pid /opt/nginx/logs/nginx.pid;
本作品採用《CC 協議》,轉載必須註明作者和本文連結