1. 程式人生 > 實用技巧 >Nginx優化:CPU篇

Nginx優化:CPU篇

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;
        ...
    }
}