Nginx優化:CPU篇
阿新 • • 發佈:2020-09-14
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;
配置位置: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; ... } }