配置Nginx多核CPU,worker_cpu_affinity使用方法和范例
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了配置Nginx多核CPU,worker_cpu_affinity使用方法和范例相关的知识,希望对你有一定的参考价值。
参考技术A worker_processes 2;worker_cpu_affinity 01 10;
01表示启用第一个CPU内核,10表示启用第二个CPU内核
worker_cpu_affinity 01 10;表示开启两个进程,第一个进程对应着第一个CPU内核,第二个进程对应着第二个CPU内核。
worker_processes 4;
worker_cpu_affinity 01 10 01 10;
开启了四个进程,它们分别对应着开启2个CPU内核
worker_processes 4;
worker_cpu_affinity 0001 0010 0100 1000;
0001表示启用第一个CPU内核,0010表示启用第二个CPU内核,依此类推
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;
worker_cpu_affinity 00000001 00000010 00000100 00001000 00010000 00100000 01000000 10000000;
0001表示启用第一个CPU内核,0010表示启用第二个CPU内核,依此类推
worker_processes最多开启8个,8个以上性能提升不会再提升了,而且稳定性变得更低,所以8个进程够用了。
配置完毕后,重启nginx
测试nginx是否有用到多个CPU内核 ,在另一台机器上执行ab -c 1000 -n 1000 http://www.domain.com/index.php
ab是装apache后带的一个性能测试工具,它可以模拟多客户端的并发请求。
在服务器上执行top,然后按1,就可以看到CPU内核的工作情况。如果多个CPU内核的利用率都相差不多,证明nginx己经成功的利用了多核CPU。
nginx优化CPU配置worker_cpu_affinity
nginx默认是没有开启利用多核cpu的配置的。需要通过增加worker_cpu_affinity配置参数来充分利用多核cpu,cpu是任务处理,当计算最费时的资源的时候,cpu核使用上的越多,性能就越好。
查了下官网,配置nginx多核cpu,worker_cpu_affinity使用方法和范例:
句法: worker_cpu_affinity cpumask ...;
worker_cpu_affinity auto [cpumask];
默认: -
语境: main
将工作进程绑定到一组CPU。每个CPU集合由允许的CPU的位掩码表示。应该为每个工作进程定义一个单独的集合。默认情况下,工作进程不绑定到任何特定的CPU。
例如,
worker_processes 4;
worker_cpu_affinity 0001 0010 0100 1000;
绑定每个工作进程到一个单独的CPU,而
worker_processes 2;
worker_cpu_affinity 0101 1010;
将第一个工作进程绑定到CPU0 / CPU2,将第二个工作进程绑定到CPU1 / CPU3。
第二个例子适用于超线程。
特殊值auto(1.9.10)允许将工作进程自动绑定到可用的CPU:
worker_processes auto;
worker_cpu_affinity auto;
可选的掩码参数可用于限制可用于自动绑定的CPU:
worker_cpu_affinity auto 01010101;
该指令仅在FreeBSD和Linux上可用。
配置完之后可以重启nginx,用ab工具或者wrk工具,可以进行性能测试,在服务器上执行top,然后按1,就可以看到cpu工作情况,如果多个cpu内核的利用率差不多,就证明nginx已经成功利用了多核cpu,测试结束后,cpu内核的负载都同时降低
以上是关于配置Nginx多核CPU,worker_cpu_affinity使用方法和范例的主要内容,如果未能解决你的问题,请参考以下文章
nginx优化CPU配置worker_cpu_affinity