优化绑定不同的Nginx进程到不同CPU上
参考资料
[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
优化绑定不同的Nginx进程到不同CPU上相关推荐
- Linux 查看进程在哪个CPU上运行
ps命令的输出格式可以通过-o参数定制,可以使用如下命令显示进程所对应的执行CPU: # ps -eo pid,args,psr 参数的含义: pid - 进程ID args - 该进程执行时传入的命 ...
- 缉拿隐藏进程以及隐藏CPU利用率的进程
前面我介绍过很多隐藏进程的把戏,随后我对每一种把戏有针对性的给出了反制措施,可以翻看我2020/03-2020/08的文章,太多了,不再一一列举. 如今,我要介绍一种超级简单的手段,手艺人必备. 无论 ...
- nginx进程模型,事件模型
众所周知,nginx性能高,而nginx的高性能与其架构是分不开的.那么nginx究竟是怎么样的呢?这一节我们先来初识一下nginx框架吧. nginx在启动后,在unix系统中会以daemon的方式 ...
- Linux技巧:多核下绑定硬件/进程到不同CPU
http://www.51testing.com/html/07/n-222407.html 硬件中断发生频繁,是件很消耗 CPU 资源的事情,在多核 CPU 条件下如果有办法把大量硬件中断分配给不同 ...
- 运行中的Nginx进程间的关系
第2章 Nginx的配置 Nginx拥有大量官方发布的模块和第三方模块,这些已有的模块可以帮助我们实现Web服务器上很多的功能.使用这些模块时,仅仅需要增加.修改一些配置项即可.因此,本章的目的是熟悉 ...
- 写了个Python脚本监控nginx进程
写了个Python脚本监控nginx进程 « Xiaoxia[PG] 写了个Python脚本监控nginx进程 接上一文用iptables让SSH服务对陌生人说不.还是有点担心这个学期内,nginx可 ...
- linux 关闭nginx进程,Linux环境下启动、停止、重启nginx
启动 启动代码格式:nginx安装目录地址 -c nginx配置文件地址 例如: [root@LinuxServer sbin]# /usr/local/nginx/sbin/nginx -c /us ...
- 【学习笔记】启动Nginx、查看nginx进程、查看nginx服务主进程的方式、Nginx服务可接受的信号、nginx帮助命令、Nginx平滑重启、Nginx服务器的升级
1.启动nginx的方式: cd /usr/local/nginx ls ./nginx -c nginx.conf 2.查看nginx的进程方式: [root@localhost nginx] ...
- linux内核线程绑定到单个核,linux 将进程或者线程绑定到指定的cpu上
基本概念 cpu亲和性(affinity) CPU的亲和性, 就是进程要在指定的 CPU 上尽量长时间地运行而不被迁移到其他处理器,也称为CPU关联性:再简单的点的描述就将指定的进程或线程绑定到相应的 ...
最新文章
- 安卓socks5代理客户端_内网Mysql代理浅析
- Spring Boot----基础
- 数字变化滚动到指定数字的文字特效
- 一次ctf中代码审计分析
- c++ primer 第14章 习题解答
- Eight HDU - 1043(八数码+搜索)
- eureka 集群失败的原因_eureka集群中的疑问?
- python中自定义模块导入飘红_hadoop streaming 中跑python程序,自定义模块的导入
- java 一些容易忽视的小点-类和对象
- (25)FPGA面试题5分频器
- 鸟哥的Linux私房菜-服务器架设篇
- 常用函数的傅里叶变换汇总
- 【MindSpore易点通机器人-01】你也许见过很多知识问答机器人,但这个有点不一样
- Android系统权限和root权限
- 云迁移实践:VMware虚拟机迁移到腾讯云
- 第四单元:丰富的网页媒体
- R语言的graphics功能(画图)
- 那天我和小姐姐扯了半小时的JVM~
- http请求走私漏洞原理,利用,检测,防护
- Mybatis相关:pagehelper--超爽的分页插件
热门文章
- 《聪明的投资者》思维导图
- 投资信托学习笔记(二)
- 交行网银:解析证书DN异常
- Vue中使用Ueditor
- 由于 Exception.ToString() 失败,因此无法打印异常字符串。
- 优思学院|8D和DMAIC两种方法应如何选择?
- FWTools 2.4.7建金字塔及其常见BUG解决方法
- Windows可以变小 - 精简你windows的80%想象会怎样?LitePC来帮你
- java poi word 图表_Java操作Poi--word图表中颜色的设置
- Linux-更改终端字体大小