zi663227 发表于 2016-12-28 06:49:29

通过配置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;
CPU工作状况:(输入 top 后,按1 查看)
 

top - 11:16:56 up 39 days,1:16,2 users,load average: 0.09, 0.07, 0.10
Tasks: 134 total,   1 running, 133 sleeping,   0 stopped,   0 zombie
Cpu0:0.0%us,0.0%sy,0.0%ni, 95.1%id,0.0%wa,0.0%hi,0.0%si,4.9%st
Cpu1:0.0%us,0.0%sy,0.0%ni, 98.8%id,0.0%wa,0.0%hi,0.0%si,1.2%st
Cpu2:2.3%us,0.0%sy,0.0%ni, 92.8%id,0.0%wa,0.0%hi,0.0%si,4.9%st
Cpu3:4.6%us,9.2%sy,0.0%ni, 81.2%id,0.0%wa,0.0%hi,0.0%si,5.0%st
Cpu4:1.9%us,0.0%sy,0.0%ni, 96.1%id,0.0%wa,0.0%hi,0.0%si,1.9%st
Cpu5:0.0%us,0.0%sy,0.0%ni, 98.1%id,0.0%wa,0.0%hi,0.0%si,1.9%st
Cpu6:0.0%us,0.0%sy,0.0%ni,100.0%id,0.0%wa,0.0%hi,0.0%si,0.0%st
Cpu7:0.0%us,0.0%sy,0.0%ni, 96.9%id,0.0%wa,0.0%hi,0.0%si,3.1%st
Mem:   1024884k total,   891244k used,   133640k free,   144852k buffers
Swap:   262140k total,   4172k used,   257968k free,   434072k cached
 
上面的配置表示:8核CPU,开启8个进程。00000001表示开启第一个cpu内核,00000010表示开启第二个cpu内核,依次类推;有多少个核,就有几位数,1表示该内核开启,0表示该内核关闭。
配置实例:
1、2核CPU,开启2个进程
 

worker_processes2;
worker_cpu_affinity 01 10;
  2、2核CPU,开启4进程

worker_processes 4;
worker_cpu_affinity 01 10 01 10;
  3、2核CPU,开启8进程
 
 

worker_processes8;
worker_cpu_affinity 01 10 01 10 01 10 01 10;
 
4、8核CPU,开启2进程
 

worker_processes2;
worker_cpu_affinity 10101010 01010101;
  说明:10101010表示开启了第2,4,6,8内核,01010101表示开始了1,3,5,7内核 
通过apache 的ab测试查看nginx对CPU的使用状况:
 
 

top - 11:25:53 up 39 days,1:25,2 users,load average: 0.33, 0.11, 0.09
Tasks: 133 total,   3 running, 130 sleeping,   0 stopped,   0 zombie
Cpu0:2.3%us,0.9%sy,0.0%ni, 82.7%id,0.0%wa,0.0%hi,0.0%si, 14.1%st
Cpu1:1.7%us,0.6%sy,0.0%ni, 81.8%id,0.0%wa,0.0%hi,0.0%si, 16.0%st
Cpu2:2.8%us,1.9%sy,0.0%ni, 74.4%id,0.0%wa,0.0%hi,0.0%si, 20.9%st
Cpu3:2.0%us,0.9%sy,0.0%ni, 83.0%id,0.0%wa,0.0%hi,0.0%si, 14.0%st
Cpu4:2.2%us,0.8%sy,0.0%ni, 79.3%id,0.0%wa,0.0%hi,0.0%si, 17.6%st
Cpu5:3.6%us,1.1%sy,0.0%ni, 75.9%id,0.0%wa,0.0%hi,0.0%si, 19.5%st
Cpu6:2.1%us,0.9%sy,0.0%ni, 87.2%id,0.0%wa,0.0%hi,0.0%si,9.8%st
Cpu7:1.7%us,0.6%sy,0.0%ni, 80.6%id,0.0%wa,0.0%hi,0.0%si, 17.1%st
Mem:   1024884k total,   891020k used,   133864k free,   144912k buffers
Swap:   262140k total,   4172k used,   257968k free,   434244k cached
 
如果多个CPU内核的利用率都相差不多,证明nginx己经成功的利用了多核CPU。
测试结束后,CPU内核的负载应该都同时降低。

通过配置CPU参数 worker_cpu_affinity 提升nginx性能
页: [1]
查看完整版本: 通过配置CPU参数 worker_cpu_affinity 提升nginx性能