文档章节

Nginx服务器进程数设置和利用多核CPU的方法

庆沉
 庆沉
发布于 2015/11/27 17:01
字数 694
阅读 33
收藏 0

Nginx worker_processes进程数设置

我们的目的是要把不同的 worker_processes 进程分配至不同核上的 CPU 上运行,一般来说,拥有几个逻辑CPU,就设置为几个worker_processes 为宜,但是 worker_processes 超过8个就没有多大意义了,原因再上面那段英文里已经提到了。

你可以使用这条命令来查看当前的CPU情况:

1

cat /proc/cpuinfo

或者直接显示逻辑CPU的个数:

1

cat /proc/cpuinfo | grep "processor" | wc -l

Nginx worker_cpu_affinity 设置

worker_cpu_affinity 默认是没有开启的,0001 0010 0100 1000 分别代表第1、2、3、4个逻辑CPU,所以我们设置0010 0100 1000将3个进程分别绑定到第2、3、4个逻辑CPU上:

1

2

worker_processes 3;

worker_cpu_affinity 0010 0100 1000;

同时worker_cpu_affinity 可以将同1个进程绑定在2个逻辑CPU上:

1

2

worker_processes 2;

worker_cpu_affinity 0101 1010;

0101也就是第1、3个逻辑CPU上,1010就是第2、4个逻辑CPU上。

重新加载 Nginx 配置文件:

1

/usr/local/nginx/sbin/nginx -s reload

在另一台安装了 Apache 的主机下运行 ab 来测试:
ab -n 20000 -k http://www.1990y.com/p.php
你可以测试一个需要MySQL查询的PHP页面,也可以测试一个静态图片或者页面。

在被测试服务器上可以使用 top 查看当前服务器情况,然后按 1 来显示各个逻辑CPU的使用情况。

另外一种写法:

worker_processes auto

The special value auto (1.9.10) allows binding worker processes automatically to available CPUs:

worker_processes auto;
worker_cpu_affinity auto;

开启CPU多核利用

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

演示实例
两核cpu,开启两个进程

1

2

worker_processes 2;

worker_cpu_affinity 01 10;

01表示启用了第一个cpu内核,10表示启用了第二个cpu内核
worker_cpu_affinity 01 10;表示开启了两个进程,第一个进程对应着第一个cpu内核,第二个进程对应着第二个cpu内核

两核cpu,开启八个进程

1

2

worker_processes 8;

worker_cpu_affinity 01 10 01 10 01 10 01 10;

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

8核cpu,开启8个进程

1

2

worker_processes 8;

worker_cpu_affinity 10000000 01000000 00100000 00010000 00001000 00000100 00000010 00000001;

00000001表示开启第一个cpu内核,00000010表示开启第二个cpu内核,依次类推

8核cpu,开启2个进程

1

2

worker_processes 2;

worker_cpu_affinity 10101010 01010101;

10101010表示开启了第2,4,6,8内核,01010101表示开始了1,3,5,7内核,2个进程对应着8个内核

© 著作权归作者所有

共有 人打赏支持
庆沉
粉丝 36
博文 405
码字总数 140470
作品 0
深圳
运维
私信 提问
UPUPW Nginx版PHP高配引擎发布

UPUPW PHP环境集成包Nginx版默认只开启2个php-cgi进程,如果是高性能的主机那么开启更多的php-cgi进程就能够让PHP疯狂的悦动一把了。 原理阐述: UPUPW PHP套件采用FastCGI使你的所有php应用...

UPUPW
2013/04/18
4.3K
17
Nginx 进程模型及事件处理机制

1)如果采用阻塞调用的方式,当读写事件没有准备好时,必然不能够进行读写事件,那么久只好等待,等事件准备好了,才能进行读写事件。那么请求就会被耽搁。阻塞调用会进入内核等待,cpu就会让...

旋转木马-千里马
2016/01/08
150
0
Nginx 配置全解析(一)

前言 Nginx是一款高性能的HTTP和反向代理服务器。在互联网早期,很多公司使用的都是Apache的HTTPD服务器,可是随着互联网业务的逐渐发展,Apache服务器在很多情况下满足不了业务的需求。这时...

Eumenides_s
2017/10/26
0
0
《九阳神功》之Nginx最全优化

Nginx的优化 1. gzip压缩优化2. expires缓存有还3. 网络IO事件模型优化4. 隐藏软件名称和版本号5. 防盗链优化6. 禁止恶意域名解析7. 禁止通过IP地址访问网站8. HTTP请求方法优化9. 防DOS××...

我不是九爷
07/17
0
0
企业级Nginx服务基础到架构优化详解--25条

1、隐藏nginx header版本号 2、更改源码隐藏软件名称 3、更改nginx默认用户及用户组 4、配置nginx worker进程个数 5、根据CPU核数进行nginx进程优化 6、nginx事件处理模型优化 7、调整Nginx...

MQ_douer
2017/05/22
0
0

没有更多内容

加载失败,请刷新页面

加载更多

小白带你认识netty(二)之netty服务端启动(上)

上一章 中的标准netty启动代码中,ServerBootstrap到底是如何启动的呢?这一章我们来瞅下。 server.group(bossGroup, workGroup);server.channel(NioServerSocketChannel.class).optio...

天空小小
59分钟前
2
0
聊聊storm trident batch的分流与聚合

序 本文主要研究一下storm trident batch的分流与聚合 实例 TridentTopology topology = new TridentTopology(); topology.newStream("spout1", spout) .p......

go4it
昨天
3
0
3分钟总结Mybatis别名

1.系统内置别名: 把类型全小写(resultType/paramType) 2.给某个类起别名 2.1 alias=”自定义” <typeAliases> <typeAlias type="com.bjsxt.pojo.People" alias="peo"/> </typeAli......

KingFightingAn
昨天
2
0
JAVA设计模式之模板方法模式和建造者模式

一、前期回顾 上一篇《Java 设计模式之工厂方法模式与抽象工厂模式》介绍了三种工厂模式,分别是工厂方法模式,简单工厂方法模式,抽象工厂模式,文中详细根据实际场景介绍了三种模式的定义,...

木木匠
昨天
8
0
C中的宏的使用(宏嵌套/宏展开/可变参数宏)

基本原则: 在展开当前宏函数时,如果形参有#或##则不进行宏参数的展开,否则先展开宏参数,再展开当前宏。 #是在定义两边加上双引号 #define _TOSTR(s) #sprintf(_TOSTR(test ABC))pr...

SamXIAO
昨天
5
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部