針對 CPU 的Nginx 配置優化

針對 CPU 的Nginx 配置優化

2018年08月02日 21:18:21 肖申克的圍牆 閱讀數:237服務器

處理器正處於多核時代。多內核是指在一枚處理器中集成兩個或多個完整的計算引擎,多核處理器是單芯片。一枚多核處理器上能夠承載多個內核,但只須要單一的處理器插槽便可以工做,同時,目前流行的操做系統已經能夠利用這樣的資源,將每一個執行內核做爲分離的邏輯處理器,經過在多個執行內核之間劃分任務,在特定的始終週期內執行更多任務,提升並行處理任務的能力。性能

    在Nginx 配置文件中,有這樣兩個指令:worker_processes 和 worker_cpu_affinity 它們能夠針對多核CPU 進行配置優化。優化

1.worker_processes 指令spa

指令詳解:worker_processes 指令用來設置Nginx 服務的進程數。官方文檔 建議此指令通常設置爲1便可,賦值過多會影響系統IO效率,下降Nginx 服務器的性能。根據前輩們的經驗,爲了讓多核CPU 可以很好的並行處理任務,咱們能夠將該指令的賦值適當的增大一些,最好賦值爲機器CPU 的倍數,固然,這個值並非越大越好,Nginx 進程太多可能增長主進程調度負擔,也可能影響系統的IP 效率。好比咱們的機器CPU 爲4核 設置爲操作系統

worker_processes 4;.net

    設置好worker_processes 指令後,就頗有必要設置worker_cpu_affinity 指令。blog

 

2.worker_cpu_affinity 指令進程

指令詳解:worker_cpu_affinity 指令用來爲每一個進程分配CPU的工做內核。這個指令的設置方法有些麻煩。咱們先來看一張圖  如圖所示,worker_cpu_affinity 指令的值是由幾組二進制表示的。其中每一組表明一個進程,每組中的每一位表示該進程使用CPU的狀況,1表明使用,0 表明不適用,注意,二進制位排列順序和CPU 的順序是相反的,建議不一樣的進程平均分配到不一樣的CPU 運行內核上。資源

以上面設置 的進程數4 爲例  CPU 是四核 所以就會有四組值,而且每組有四位,因此,此指令的設置爲文檔

worker_cpu_affinity 0001 0100 1000 0010;

四個二進制數分別對應4個進程,第一個進程對應0001,表示使用第一個CPU 內核,第二個進程對應0010,表示使用第二個CPU 內核,以此類推。

若是 咱們將 worker_processes 指令的值複製爲8, 即複製爲CPU 內核個數的兩倍 則woker_cpu_affinity 指令的設置能夠是

worker_cpu_affinity  00000001 00000010 00000100 00001000 00010000 00100000 01000000 10000000;

相關文章
相關標籤/搜索