通过配置CPU参数 worker_cpu_affinity 提升nginx性能-程序员宅基地

技术标签: 运维  

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

规则设定

(1)cpu有多少个核,就有几位数,1代表内核开启,0代表内核关闭

(2)worker_processes最多开启8个,8个以上性能就不会再提升了,而且稳定性会变的更低,因此8个进程够用了

示例:linode VPS 最低配,8核CPU,nginx配置信息:

worker_processes 8;
worker_cpu_affinity 00000001 00000010 00000100 00001000 00010000 00100000 01000000 10000000;

 配置1:4 CPU(4 Core) + 4 worker_processes(每个worker_processes 使用1个CPU)

[root@AY1301180424258d59678 ~]#  cat /proc/cpuinfo | grep processor
processor       : 0
processor       : 1
processor       : 2
processor       : 3

 Nginx可以进行下面配置,每个CPU分配一个:

worker_processes 4;
worker_cpu_affinity 0001 0010 0100 1000;

 配置2:8 CPU(8 Core) + 8 worker_processes(每个worker_processes 使用1个CPU)

worker_processes 8;
worker_cpu_affinity 00000001 00000010 00000100 00001000 00010000 00100000 01000000 10000000;

 配置3:16 CPU(16 Core) + 16 worker_processes(每个worker_processes 使用1个CPU)

worker_processes 16;
worker_cpu_affinity 0000000000000001 0000000000000010 0000000000000100 0000000000001000 0000000000010000 0000000000100000 0000000001000000 0000000010000000 0000000100000000 0000001000000000 0000010000000000 0000100000000000 0001000000000000 0010000000000000 0100000000000000 1000000000000000;

 配置4:2 CPU(2 Core) + 8 worker_processes(每个worker_processes 使用1个CPU)

worker_processes  8;  
worker_cpu_affinity 01 10 01 10 01 10 01 10;

 配置5:8 CPU(8 Core) +2 worker_processes(每个worker_processes 使用1个CPU)

worker_processes  2;  
worker_cpu_affinity 10101010 01010101;

说明:10101010表示开启了第2,4,6,8内核,01010101表示开始了1,3,5,7内核 
通过apache 的ab测试查看nginx对CPU的使用状况:

top - 11:16:01 up 188 days, 19:50,  2 users,  load average: 0.43, 0.72, 0.71
Tasks: 185 total,   1 running, 184 sleeping,   0 stopped,   0 zombie
Cpu0  : 26.0%us, 10.5%sy,  0.0%ni, 42.9%id, 19.3%wa,  0.7%hi,  0.7%si,  0.0%st
Cpu1  :  7.7%us,  5.4%sy,  0.0%ni, 87.0%id,  0.0%wa,  0.0%hi,  0.0%si,  0.0%st
Cpu2  :  9.7%us,  3.3%sy,  0.0%ni, 85.0%id,  1.7%wa,  0.0%hi,  0.3%si,  0.0%st
Cpu3  :  6.0%us,  4.0%sy,  0.0%ni, 90.0%id,  0.0%wa,  0.0%hi,  0.0%si,  0.0%st
Mem:   8058060k total,  4953400k used,  3104660k free,   104856k buffers
Swap:   490488k total,    55468k used,   435020k free,  1610876k cached

如果多个CPU内核的利用率都相差不多,证明nginx己经成功的利用了多核CPU。
测试结束后,CPU内核的负载应该都同时降低。

 

参考:

http://www.freewil.net/blog/archives/198

http://luy.li/2009/12/30/nginx-user_agent-limit_rate/

 

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/weixin_33736048/article/details/85751945

智能推荐

注解--注释注解_注解@__-程序员宅基地

文章浏览阅读669次。黑马程序员注解–注释注解测试类pro注解解析测试主方法package A_Part02.annotation02;import java.lang.annotation.ElementType;import java.lang.annotation.Retention;import java.lang.annotation.RetentionPolicy;import java.lang.annotation.Target;@Target({ElementType_注解@__

卡通人物手脚的绘画方法和技巧-程序员宅基地

文章浏览阅读150次。俗话说“画人难画手”,这说明画手是比较难的,为此我们应先了解手的结构。  手的结构可分为手掌和手腕两部分,要将手掌看成一个不规则的五边形,作画时,先要将这两部分看作一个整体,画出手的边线,再定出大拇指的位置。要明确每个手指的长度是各不相同的,手指的关节部位要适当弯曲,在特写画面中,要画出手指的两个关节,特别要强调一下拇指和小指的外轮廓线,这样会更有立体感。   [img]/uplo..._opengl绘制卡通形象

网页右边没有滚动条,内容超出也看不到怎么办?_网页没有下拉滚动条怎么办-程序员宅基地

文章浏览阅读4.4k次。遇到的问题:博主正在进行vue组件开发,将主页面添加了组件之后,发现在浏览器中打开内容超出但没有滚动条解决方法:我们可以找一下css中的设置,去掉 html和body中的overflow:hidden;即可!..._网页没有下拉滚动条怎么办

Linux中源代码安装及ps命令_linux安装ps命令-程序员宅基地

文章浏览阅读2.5k次。1.源码安装:httpd(httpd依赖于两个软件)源代码安装步骤:确认源代码编译环境需安装支持 C/C++程序语言的 编译器解包 —— tar解包、释放出源代码文件配置 —— ./configure针对当前系统、软件环境,配置好安装参数编译 —— make将源代码文件变为二进制的可执行程序安装 —— make install将编译好的程序文件复制到系统中先通过sftp命令在windows命令上将文件传到linux中将文件解压缩至指定目录先创建_linux安装ps命令

pandas入门:Series、DataFrame、Index基本操作都有了!-程序员宅基地

文章浏览阅读1.7w次,点赞13次,收藏157次。导读:pandas是一款开放源码的BSD许可的Python库。它基于NumPy创建,为Python编程语言提供了高性能的、易于使用的数据结构和数据分析工具。pandas应用领域广泛,包括..._dataframe index

前端组件化之路-程序员宅基地

文章浏览阅读74次。前言: 最近在工作中发现我们前端没有一个系统的体系去支撑,产生很多不必要的代码冗余,一些公共的视图模块重复开发,导致开发效率下降,最让我郁闷的是,前端开发好的静态页面给java开发去做业务逻辑处理,会彻底的把我们开发的页面结构改的惨目忍睹。这样的形式做项目在不去想点子优化做法,真不是个合格的程序员。组件化形态: 组件化形态很多种,我个人理解为2个分支:..._纯静态前端页面如何做组件化

随便推点

vscode中如何切换Anaconda环境_vscode 连接到conda环境-程序员宅基地

文章浏览阅读3.7k次,点赞4次,收藏3次。点击左下角,然后选择环境_vscode 连接到conda环境

[转]集中式日志系统 ELK 协议栈详解-程序员宅基地

文章浏览阅读100次。为什么80%的码农都做不了架构师?>>> ..._lumberjack协议

html5图片浮动float,css 浮动(float)页面布局(下)-程序员宅基地

文章浏览阅读521次。【第七步 内容左侧板块(ContentL)布局】我们分析一下他的结构,主要包括标题和文章内容两块,并且标题和内容之间有一条虚线,而第二篇文章的内容部分是图片和文字相结合且文字环绕图片。好~!既然搞清楚结构了,后面我们布局就容易了我打算标题用标签,为什么这么用呢,原因如下第一:标签本身字体就是加粗的这样CSS里面就不用再定义字体粗细第二:如果标题用的话,搜索引擎会首先抓取里面的内容,然后提取关键词,..._html 图片float

Newcoder 148 A.Rikka with Lowbit(水~)-程序员宅基地

文章浏览阅读254次。Description给出一个长度为nnn的序列,定义操作f(x)f(x)f(x),0.50.50.5概率把f(x)=x−lowbit(x)f(x)=x-lowbit(x)f(x)=x−lowbit(x),0.50.50.5概率f(x)=x+lowbit(x)f(x)=x+lowbit(x)f(x)=x+lowbit(x),现在对这个序列做mmm次操作,操作有两种:1 L ..._rikka with lowbit

NSOperationQueue、NSRunLoop和线程安全_nsoperationqueue 卡主线程-程序员宅基地

文章浏览阅读550次。目前在 iOS 和 OS X 中有两套先进的同步 API 可供我们使用:NSOperation 和 GCD 。其中 GCD 是基于 C 的底层的 API ,而 NSOperation 则是 GCD 实现的 Objective-C API。 虽然 NSOperation 是基于 GCD 实现的, 但是并不意味着它是一个 GCD 的 “dumbed-down” 版本, 相反,我们可以用NSOperat_nsoperationqueue 卡主线程

目标跟踪算法五:MDNet: Learning Multi-Domain Convolutional Neural Networks for Visual Tracking_multi-domain spanning neural network-程序员宅基地

文章浏览阅读1.8w次,点赞3次,收藏34次。目标跟踪算法五:MDNet: Learning Multi-Domain Convolutional Neural Networks for Visual Tracking_multi-domain spanning neural network