Nginx充分利用多核CPU提升性能_配置参数worker_cpu_affinity

来源:百度文库 编辑:神马文学网 时间:2024/04/27 20:48:32

Nginx默认没有开启利用多核CPU,我们可以通过增加worker_cpu_affinity配置参数来充分利用多核CPU。CPU是任务处理,计算最关键的资源,CPU核越多,性能就越好。

下面直接上示例

1. 2核CPU,开启2个进程

/*** GeSHi (C) 2004 - 2007 Nigel McNie, 2007 - 2008 Benny Baumann* (http://qbnz.com/highlighter/ and http://geshi.org/)*/.text  {font:normal 12px "Droid Sans Mono";word-break:normal;white-space: pre-wrap;word-wrap: break-word;padding:5px;border:#CCC 1px solid;background:#f7f7f7;}.text .head {color:#999;background:#f0f0ff;border-bottom:1px solid #d0d0d0;margin-left:-5px;}.text .imp {font-weight: bold; color: red;}.text span.xtra { display:block; }
worker_processes     2;worker_cpu_affinity 01 10;

01表示启用第一个CPU内核,10表示启用第二个CPU内核
worker_cpu_affinity 01 10;表示开启两个进程,第一个进程对应着第一个CPU内核,第二个进程对应着第二个CPU内核。
2. 2核CPU,开启4个进程

/*** GeSHi (C) 2004 - 2007 Nigel McNie, 2007 - 2008 Benny Baumann* (http://qbnz.com/highlighter/ and http://geshi.org/)*/.text  {font:normal 12px "Droid Sans Mono";word-break:normal;white-space: pre-wrap;word-wrap: break-word;padding:5px;border:#CCC 1px solid;background:#f7f7f7;}.text .head {color:#999;background:#f0f0ff;border-bottom:1px solid #d0d0d0;margin-left:-5px;}.text .imp {font-weight: bold; color: red;}.text span.xtra { display:block; }
worker_processes     4;worker_cpu_affinity 01 10 01 10;

开启了四个进程,它们分别对应着开启2个CPU内核

3. 4核CPU,开户4个进程

/*** GeSHi (C) 2004 - 2007 Nigel McNie, 2007 - 2008 Benny Baumann* (http://qbnz.com/highlighter/ and http://geshi.org/)*/.text  {font:normal 12px "Droid Sans Mono";word-break:normal;white-space: pre-wrap;word-wrap: break-word;padding:5px;border:#CCC 1px solid;background:#f7f7f7;}.text .head {color:#999;background:#f0f0ff;border-bottom:1px solid #d0d0d0;margin-left:-5px;}.text .imp {font-weight: bold; color: red;}.text span.xtra { display:block; }
worker_processes     4;worker_cpu_affinity 0001 0010 0100 1000;

0001表示启用第一个CPU内核,0010表示启用第二个CPU内核,依此类推

4. 4核CPU,开启2个进程

/*** GeSHi (C) 2004 - 2007 Nigel McNie, 2007 - 2008 Benny Baumann* (http://qbnz.com/highlighter/ and http://geshi.org/)*/.text  {font:normal 12px "Droid Sans Mono";word-break:normal;white-space: pre-wrap;word-wrap: break-word;padding:5px;border:#CCC 1px solid;background:#f7f7f7;}.text .head {color:#999;background:#f0f0ff;border-bottom:1px solid #d0d0d0;margin-left:-5px;}.text .imp {font-weight: bold; color: red;}.text span.xtra { display:block; }
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表示该内核关闭。

worker_processes最多开启8个,8个以上性能提升不会再提升了,而且稳定性变得更低,所以8个进程够用了。

配置完毕后,重启nginx ,执行/etc/init.d/nginx restart

测试nginx是否有用到多个CPU内核 ,在另一台机器上执行ab.exe -c 1000 -n 1000 http://www.domain.com/index.php

ab.exe是装apache后带的一个性能测试工具,它可以模拟多客户端的并发请求。

在服务器上执行top,然后按1,就可以看到CPU内核的工作情况。如果多个CPU内核的利用率都相差不多,证明nginx己经成功的利用了多核CPU。

测试结束后,CPU内核的负载应该都同时降低。