Crazy lens

Nginx CPU亲和性配置 worker_cpu_affinity
这周项目服务器水平扩容加了几台服务器, 看了下nginx配置 开头一行就没看懂worker_processes ...
扫描右侧二维码阅读全文
09
2017/04

Nginx CPU亲和性配置 worker_cpu_affinity

这周项目服务器水平扩容
加了几台服务器, 看了下nginx配置 开头一行就没看懂

worker_processes  8;

worker_cpu_affinity auto 1111111111111111111111111111111100000000;

这项配置看到就有点懵 后面一堆数字没搞懂

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

通过网上百度了下 找到一些具体写的解释

通过 cat /proc/cpuinfo来看cpu核心数

规则设定
(1)cpu有多少个核,就有几位数,1代表内核开启,0代表内核关闭
(2)worker_processes最多开启8个,8个以上性能就不会再提升了,而且稳定性会变的更低,因此8个进程够用了
....

上面从网上找来的介绍细节可以访问 http://www.libenfu.com/index.php/archives/157/

网上的文章介绍都是 01 10 这类常规参数 而上面的配置后面加了个auto

简单了解就是 worker_processes auto 可以根据自身机器内核 自动选择需要配置的内核
worker_cpu_affinity auto 也同理 auto是将进程绑定到所有的cpu核心上

找到一篇相关文章 关于CPU亲和性的测试 直接上源码分析 worker_cpu_affinity 最后给出 :

备注: linux的SMP负载均衡是基于进程数的,每个cpu都有一个可执行进程队列,只有当其中一个cpu的可执行队列里进程数比其他cpu队列进程数多25%时,才会将进程移动到另外空闲cpu上,也就是说cpu0上的进程数应该是比其他cpu上多,但是会在25%以内。它也自带负载均衡策略,可以在运行时将某些进程从某一个cpu核心的进程队列移到另外一个cpu核心的进程队列。

发现自己nginx 这块真的需要好好学习下, 还有同事告诉我入职时CTO面试就问过他nginx如何提升CPU亲和性 ^v^

最后修改:2017 年 04 月 09 日 02 : 40 AM
如果觉得我的文章对你有用,请随意赞赏

发表评论