nginx 绑定worker进程和cpu

worker_processes 可以设置nginx 使用的核心数,worker_cpu_affinity 选项可以绑定worker进程和CPU,这个配置项仅适用于linux。我vps上有4个逻辑核心,我开了一个worker进程,将CPU3绑定给worker进程。

worker_proceses     1;
worker_cpu_affinity 1000;

登陆另外一台服务器进行压力测试

siege -c 100 -t 10 http://blog.phpdr.net/images/date-button.gif

在nginx服务器上top -u nginx 然后按 1 查看各cpu使用率确实起作用了

然后分配两个到CPU2和CPU3

worker_proceses 2;
worker_cpu_affinity 1000 0100;

和预期结果一样,但是如果给一个worker进程绑定两个cpu不知道怎么运行,官网的例子有绑定两个的,我开启一个worker测试发现每个worker进程在两个核心之间是可以切换的具体切换规则应该是操作系统默认的,我这测试cpu只能到60%,期间核心切换了两次。

这样绑定应该还是有意义的,因为大多数程序都会优先使用第一个核心(我个人认为),所以把nginx给绑定到后面的核心还是有好处的。

另外还有一个worker_priority配置不知道具体怎么用,也懒得测试了,知道的最好说一下,还有那个单进程双核心的切换规则知道的也说一下。worker_processes 和 worker_cpu_affinity 详细解释请点击链接到官网查看。