CPU
1.worker進程數量應當等於cpu核心數
配置語法:worker_processes number | auto;
比如:worker_processes auto;
配置位置:main
2.worker進程綁定cpu
配置語法:worker_cpu_affinity cpumask 1000 0100 0010 0001; # 4核為例
默認配置:worker_cpu_affinity auto;
配置位置:mian
2.停止系統上其他耗資源的非Nginx進程
3.減少主動切換,提升優先級占用cpu更長的時間
Nice靜態優先級:-20 -- 19,盡量小,比如-20 ;
Priority動態優先級:0-139;
配置語法:worker_priority number;
默認配置:worker_priority -20;
配置位置:main
4.減少被動切換,worker進程盡量使用非阻塞調用,別使用阻塞調用主動讓出cpu
nginx lua的使用時,應該注意嚴禁使用lua自帶的一些庫,嚴禁使用會造成阻塞的庫,盡量使用 lua-resty-* 的庫,這些是openresty的相關庫,是經過驗證的。
5.延遲處理連接:當與客戶端建立連接后,不會立即激活worker進程去處理連接
server { listen 80 deferred; return 200 "OK\n"; }
6.為了防止驚群問題,新版本的Nginx內核(3.9)會使用reuseport。在內核中實現了負載均衡,使用后,如果你再次使用top命令查看,你會發現worker進程之間占用cpu的time會均衡。
http { server { listen 80 reuseport; ... } }