解讀:nginx的一個神祕配置worker_cpu_affinity

咖啡色的羊駝發表於2016-03-23

今天在檢視nginx的相關知識的時候發現了一個nginx之前不認識的配置:worker_cpu_affinity。

nginx預設是沒有開啟利用多核cpu的配置的。需要通過增加worker_cpu_affinity配置引數來充分利用多核cpu,cpu是任務處理,當計算最費時的資源的時候,cpu核使用上的越多,效能就越好。

查了下,配置nginx多核cpu,worker_cpu_affinity使用方法和範例

2核cpu,開啟2個程式

worker_processes     2;
worker_cpu_affinity 01 10;

解釋:01表示啟用第一個CPU核心,10表示啟用第二個CPU核心
worker_cpu_affinity 01 10;表示開啟兩個程式,第一個程式對應著第一個CPU核心,第二個程式對應著第二個CPU核心。

2核cpu,開啟4個程式

worker_processes     4;
worker_cpu_affinity 01 10 01 10;

解釋:開啟了四個程式,它們分別對應著開啟2個CPU核心

4個cpu,開啟4個程式

worker_processes     4;
worker_cpu_affinity 0001 0010 0100 1000;

解釋:0001表示啟用第一個CPU核心,0010表示啟用第二個CPU核心,依此類推

4核cpu,開啟2個程式

worker_processes     2;
worker_cpu_affinity 0101 1010;

解釋:0101表示開啟第一個和第三個核心,1010表示開啟第二個和第四個核心;2個程式對應著四個核心;worker_cpu_affinity配置是寫在/etc/nginx/nginx.conf裡面的;2核是 01,四核是0001,8核是00000001,有多少個核,就有幾位數,1表示該核心開啟,0表示該核心關閉。

8核cpu,開啟8個程式

worker_processes     8;
worker_cpu_affinity 00000001 00000010 00000100 00001000 00010000 00100000 01000000 10000000;

解釋:0001表示啟用第一個CPU核心,0010表示啟用第二個CPU核心,依此類推;worker_processes最多開啟8個,8個以上效能提升不會再提升了,而且穩定性變得更低,所以8個程式夠用了。


配置完之後可以重啟nginx,用ab工具或者wrk工具,可以進行效能測試,在伺服器上執行top,然後按1,就可以看到cpu工作情況,如果多個cpu核心的利用率差不多,就證明nginx已經成功利用了多核cpu,測試結束後,cpu核心的負載都同時降低。

相關文章