优化绑定不同的Nginx进程到不同CPU上
2018-02-10 09:56
567 查看
参考资料
[1]. 跟老男孩学Linux运维:Web集群实战,老男孩安装过程
默认情况Nginx的多个进程有可能跑在某一个或某一核的CPU上,导致Nginx进程使用硬件的资源不均。可以分配不同的Nginx进程给不同的CPU处理,达到充分有效利用硬件的多CPU多核资源的目的。在优化不同的Nginx进程对应不同的CPU配置时,四核CPU服务器的参数配置参考如下:
## 编辑文件 [root@www ~]# vim /application/nginx/conf/nginx.conf ## 并修改如下 worker_processes 4; worker_cpu_affinity 0001 0010 0100 1000; #worker_cpu_affinity就是配置nginx进程CPU亲和力的参数,即把不同的进程分给不同的CPU处理。这里0001 0010 0100 1000是掩码,分别代表1、2、3、4核CPU,由于worker_processes进程数为4,因此上述配置会把每个进程分配一核CPU处理,默认情况下进程不会绑定任何CPU,参数位置为main段 ## 重启 [root@www ~]# /application/nginx/sbin/nginx -t [root@www ~]# /application/nginx/sbin/nginx -s reload ## 安装测试软件 webbench yum install -y gcc ctags #先安装编译需要的组件 wget http://home.tiscali.cz/~cz210552/distfiles/webbench-1.5.tar.gz tar zxvf webbench-1.5.tar.gz #解压Webbench cd webbench-1.5 #进入webbench目录 mkdir /usr/local/man ←建立相应目录(否则导致无法正常安装) make make install #编译安装 ## 实际测试 c:客户端个数 t:持续时间,如果不设置t参数,默认是执行30秒 webbench --help 获取帮助文档 注:网址的最后面必需添加 /,例如 https://www.baidu.com/ [root@www ~]# webbench -c 10000 -t 18 http://127.0.0.1/ 每秒钟响应请求数:24525 pages/min,每秒钟传输数据量20794612 bytes/sec. 注意:webbench 做压力测试时,该软件自身也会消耗CPU和内存资源,为了测试准确,请将 webbench 安装在别的服务器上。(另外开一台机器进行测试) 1. 压力测试工作应该放到产品上线之前,而不是上线以后 2. 测试时尽量跨公网进行,而不是内网 3. 测试时并发应当由小逐渐加大,比如并发100时观察一下网站负载是多少、打开是否流程,并发200时又是多少、网站打开缓慢时并发是多少、网站打不开时并发又是多少 4. 应尽量进行单元测试,如B2C网站可以着重测试购物车、推广页面等,因为这些页面占整个网站访问量比重较大 八核CPU服务器的参数配置参考如下: worker_cpu_affinity 00000001 00000010 00000100 00001000 00010000 00100000 01000000 10000000; worker_cpu_affinity 0001 0010 0100 1000 0001 0010 0100 1000; worker_cpu_affinity参数的官方说明如下: syntax: worker_cpu_affinity cpumask..... #此行为cpu亲和力参数语法,cpumask为cpu掩码 default: --- #默认不配置 context: main #此行为worker_cpu_affinty参数可以放置的位置 worker_cpu_affinity的作用是绑定不同的worker进程到一组CPU上。通过设置bitmask控制允许使用的CPUS,默认worker进程不会绑定到任何CPUS。 worker_processes 4; worker_cpu_affinity 0001 0010 0100 1000; binds each worker process to a separate CPU, while worker_processes 2; worker_cpu_affinity 0101 1010; binds the first worker process to CPU0/CPU2, and the second worker process to CPU1/CPU3. The second example is suitable for hyper-threading.The directive is only available on FreeBSD and Linux. 绑定第一个Ningx工作进程到CPU0/CPU2,第二个绑定到 CPU1/CPU3,第三个例子是适合超级线程的。这个例子仅仅适合在 FreeBSD 和 Linux 系统 From : http://nginx.org/en/docs/ngx_core_module.html[/code]
相关文章推荐
- 优化绑定Nginx进程到不同的CPU上
- Linux技巧:多核下绑定硬件进程到不同CPU
- Nginx 关于进程数 与CPU核心数相等时,进程间切换的代价是最小的-- 绑定CPU核心
- Linux技巧:多核下绑定硬件进程到不同CPU
- Linux技巧:多核下绑定硬件/进程到不同CPU
- Nginx的CPU绑定优化
- redis的优化 cpu与redis进程的绑定
- 多核下绑定硬件进程到不同CPU
- 进程启动后使用taskset进行cpu绑定
- 绑定进程到某个cpu核上
- Linux 多核下绑定硬件中断到不同 CPU(IRQ Affinity)
- (总结)Nginx使用的php-fpm的两种进程管理方式及优化
- Linux进程或线程绑定到CPU
- php进程占用大量cpu优化
- Visual C++学习总结——进程或线程与指定CPU绑定
- Nginx使用的php-fpm的两种进程管理方式及优化
- 多核环境下绑定进程运行在指定的CPU核上
- Nginx 多核cpu 优化:(Core) + worker_processes (worker_cpu_affinity)
- 进程的处理器亲和性和 vCPU 的绑定(查看cpu信息,超线程等)
- Linux技巧:多核下绑定网卡中断到不同CPU(core)总结