通過配置CPU參數 worker_cpu_affinity 提升nginx性能


簡介
Nginx默認沒有開啟利用多核cpu,我們可以通過增加worker_cpu_affinity配置參數來充分利用多核cpu的性能。cpu是任務處理,計算最關鍵的資源,cpu核越多,性能就越好。

規則設定

(1)cpu有多少個核,就有幾位數,1代表內核開啟,0代表內核關閉

(2)worker_processes最多開啟8個,8個以上性能就不會再提升了,而且穩定性會變的更低,因此8個進程夠用了

示例:linode VPS 最低配,8核CPU,nginx配置信息:

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

 配置1:4 CPU(4 Core) + 4 worker_processes(每個worker_processes 使用1個CPU)

[root@AY1301180424258d59678 ~]#  cat /proc/cpuinfo | grep processor
processor       : 0
processor       : 1
processor       : 2
processor       : 3

 Nginx可以進行下面配置,每個CPU分配一個:

worker_processes 4;
worker_cpu_affinity 0001 0010 0100 1000;

 配置2:8 CPU(8 Core) + 8 worker_processes(每個worker_processes 使用1個CPU)

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

 配置3:16 CPU(16 Core) + 16 worker_processes(每個worker_processes 使用1個CPU)

worker_processes 16;
worker_cpu_affinity 0000000000000001 0000000000000010 0000000000000100 0000000000001000 0000000000010000 0000000000100000 0000000001000000 0000000010000000 0000000100000000 0000001000000000 0000010000000000 0000100000000000 0001000000000000 0010000000000000 0100000000000000 1000000000000000;

 配置4:2 CPU(2 Core) + 8 worker_processes(每個worker_processes 使用1個CPU)

worker_processes  8;  
worker_cpu_affinity 01 10 01 10 01 10 01 10;

 配置5:8 CPU(8 Core) +2 worker_processes(每個worker_processes 使用1個CPU)

worker_processes  2;  
worker_cpu_affinity 10101010 01010101;

說明:10101010表示開啟了第2,4,6,8內核,01010101表示開始了1,3,5,7內核 
通過apache 的ab測試查看nginx對CPU的使用狀況:

top - 11:16:01 up 188 days, 19:50,  2 users,  load average: 0.43, 0.72, 0.71
Tasks: 185 total,   1 running, 184 sleeping,   0 stopped,   0 zombie
Cpu0  : 26.0%us, 10.5%sy,  0.0%ni, 42.9%id, 19.3%wa,  0.7%hi,  0.7%si,  0.0%st
Cpu1  :  7.7%us,  5.4%sy,  0.0%ni, 87.0%id,  0.0%wa,  0.0%hi,  0.0%si,  0.0%st
Cpu2  :  9.7%us,  3.3%sy,  0.0%ni, 85.0%id,  1.7%wa,  0.0%hi,  0.3%si,  0.0%st
Cpu3  :  6.0%us,  4.0%sy,  0.0%ni, 90.0%id,  0.0%wa,  0.0%hi,  0.0%si,  0.0%st
Mem:   8058060k total,  4953400k used,  3104660k free,   104856k buffers
Swap:   490488k total,    55468k used,   435020k free,  1610876k cached

如果多個CPU內核的利用率都相差不多,證明nginx己經成功的利用了多核CPU。
測試結束后,CPU內核的負載應該都同時降低。

 

參考:

http://www.freewil.net/blog/archives/198

http://luy.li/2009/12/30/nginx-user_agent-limit_rate/

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM