針對CPU的nginx配置優化
處理器已經進入了多核時代,多核的意思是一個處理器集成兩個或者多個計算引擎。一枚多核處理器可以承載多枚內核。將每個內核作為分立的邏輯處理器,通過多喝個內核之間的划分,在特定的周期執行更多的任務,提高並行處理能力。
在Nginx配置中,有兩個關於進程的指令,worker_processes 和worker_cpu_affinity,想必大家對worker_processes 都熟悉。 worker_processes 1 開啟一個進程來處理。
下面 ,我來講解一下兩個指令
一、worker_processes
worker_processes指令是用來設計Nginx進程數,官方默認設為1,賦值太多了,將會對系統IO影響效率,降低Nginx服務器性能。但是為了讓多核CPU能夠更好的處理並行任務,我們可以講該值設置大一些,最好這個值是機器CPU的倍數,並不是越大越好。
如針對雙核CPU 將他設置為2或者4 , 我這里的機器是4核CPU,所以我講這個值設置為4
worker_processes 4;
二、worker_cpu_affinity
worker_cpu_affinity指令用來分配每個進程的CPU的工作內核
這個指定設置有點麻煩。首先,我們來看一下,在我機器4核,我是怎么設置的。
如果在筆者電腦上設置worker_processes 4 ;
筆者的電腦設置
worker_processes 4 ; 我四核開啟了四個進程
worker_cpu_affinity 0001 0010 0100 1000;
//我們CPU 就是四核 就是四組值,0是不使用,1是使用。 這樣每一個進程都有一個 cpu內核了。
{解析 四組二進制值分別對應着四個進程,第一個進程對應的是0001 第二個進程對應的是0010,表示第二個進程計算器內核,第三個進程對應的是0100,表示第三個計算機內核,第四個進程對應1000}
如果在筆者電腦上設置worker_processes 8 ;
筆者的電腦設置
worker_processes 8 ;
worker_cpu_affinity 0001 0010 0100 1000 0001 0010 0100 1000;
如果你的電腦CPU 是雙核,但是你設置為 worker_processes 設置為4
下面是配置
worker_processes 4 ;
worker_cpu_affinity 01 10 01 10 ;
設置完畢 重啟一下nginx,就能測試出效果