nginx优化:worker_processes/worker_connections/worker_rlimit_nofile
一,优化nginx的worker进程数
1,worker_processes应设置为多少?
worker_processes 4;
如何设置这个值:
worker_processes默认值是1,一般要设置为cpu的核心数量或核心数量x2
注意:是核心的数量,不是cpu的数量,一颗cpu可能有多个核心
2,如何查看核心的数量:用lscpu命令
[root@blog conf]$ lscpu
Architecture: x86_64
CPU op-mode(s): 32-bit, 64-bit
Byte Order: Little Endian
CPU(s): 4
On-line CPU(s) list: 0-3
Thread(s) per core: 2
Core(s) per socket: 2
...
CPU(s): 一栏标明是4个core
3,如何查看核心的数量:执行top命令查看
执行top命令后,按1打开cpu的核心列表
[root@blog conf]$ top
top - 18:45:32 up 105 days, 8:41, 3 users, load average: 0.00, 0.00, 0.00
Tasks: 153 total, 1 running, 145 sleeping, 7 stopped, 0 zombie
%Cpu0 : 0.0 us, 0.0 sy, 0.0 ni,100.0 id, 0.0 wa, 0.0 hi, 0.0 si, 0.0 st
%Cpu1 : 0.0 us, 0.0 sy, 0.0 ni,100.0 id, 0.0 wa, 0.0 hi, 0.0 si, 0.0 st
%Cpu2 : 0.0 us, 0.0 sy, 0.0 ni,100.0 id, 0.0 wa, 0.0 hi, 0.0 si, 0.0 st
%Cpu3 : 0.0 us, 0.0 sy, 0.0 ni,100.0 id, 0.0 wa, 0.0 hi, 0.0 si, 0.0 st
MiB Mem : 15355.3 total, 838.1 free, 1154.0 used, 13363.1 buff/cache
MiB Swap: 0.0 total, 0.0 free, 0.0 used. 13873.0 avail Mem
...
4,配置worker_processes后的效果
应该有四个worker进程:
我们用ps命令查看:
[root@blog ~]# ps auxfww | grep nginx
root 29616 0.0 0.0 50412 3292 ? Ss Apr24 0:00 nginx: master process /usr/local/openresty/nginx/sbin/nginx
nginx 29617 0.0 0.0 81896 5968 ? S Apr24 0:00 \_ nginx: worker process
nginx 29618 0.0 0.0 81896 5996 ? S Apr24 0:00 \_ nginx: worker process
nginx 29619 0.0 0.0 81896 5968 ? S Apr24 0:00 \_ nginx: worker process
nginx 29620 0.0 0.0 81896 7164 ? S Apr24 0:00 \_ nginx: worker process
说明:可以看到有4个worker process
5, master process与worker process不同,
master process负责绑定端口、调度进程等,不负责业务的处理
而worker process是业务进程,负责业务的处理
说明:刘宏缔的架构森林是一个专注架构的博客,地址:https://www.cnblogs.com/architectforest
对应的源码可以访问这里获取: https://github.com/liuhongdi/
说明:作者:刘宏缔 邮箱: 371125307@qq.com
二,优化每个worker进程的连接数
1, worker_connections的作用?
worker_connections 20480
worker_connections是每个worker进程允许的最多连接数,
每台nginx 服务器的最大连接数为:worker_processes*worker_connections
例子:
events {
worker_connections 16383;
}
2,如何设置worker_connections的值?
系统的最大打开文件数>= worker_connections*worker_process
3,如何查看系统的最大打开文件数:
[root@blog ~]# ulimit -n
65535
如果worker_process = 4,
则 worker_connections应该小于等于16383
考虑到进程间分配不平衡,可以设置到 20480
说明:ulimit -n给出的系统的用户最大打开文件数可以调整,
参见这一篇:
https://www.cnblogs.com/architectforest/p/12794818.html
三,配置Nginx worker进程最大打开文件数
worker_rlimit_nofile 65535;
这个指令是指一个nginx worker进程打开的最多文件描述符数目,
理论值应该是最多打开文件数(ulimit -n)与nginx进程数相除,
因为nginx分配请求未必很均匀,所以最好与ulimit -n的值保持一致
说明:
如果worker_rlimit_nofile的值小于worker_connections的值,会报如下错误:
worker_connections exceed open file resource limit: xxx
例子:
2020/04/26 14:04:40 [warn] 1402#1402: 2048 worker_connections exceed open file resource limit: 1024
四,查看nginx的版本
[root@blog ~]# /usr/local/openresty/nginx/sbin/nginx -v
nginx version: openresty/1.15.8.2
nginx优化:worker_processes/worker_connections/worker_rlimit_nofile的更多相关文章
- Nginx优化指南
大多数的Nginx安装指南告诉你如下基础知识——通过apt-get安装,修改这里或那里的几行配置,好了,你已经有了一个Web服务器了!而且,在大多数情况下,一个常规安装的nginx对你的网站来说已经能 ...
- Nginx优化防爬虫 限制http请求方法 CDN网页加速 架构优化 监牢模式 控制并发量以及客户端请求速率
Nginx防爬虫优化 Robots协议(也称为爬虫协议,机器人协议等)的全称是“网络爬虫排除标准”(Robots Exclusion Protocol),网站通过Robots协议告诉搜索引擎哪些页面可 ...
- nginx的worker_processes优化
nginx的worker_processes参数来源: http://bbs.linuxtone.org/thread-1062-1-1.html分享一:搜索到原作者的话:As a general r ...
- nginx的worker_processes,worker_cpu_affinity及worker_connections
worker_processes:nginx要开启的进程数,一般为cpu的核数 worker_cpu_affinity:为每个进程绑定一个cpu,减少cpu切换的开销 配置示例: worker_pro ...
- 如果nginx 中worker_connections 值设置是1024,worker_processes 值设置是4,按反向代理模式下最大连接数的理论计算公式: 最大连接数 = worker_processes * worker_connections/4
如果nginx 中worker_connections 值设置是1024,worker_processes 值设置是4,按反向代理模式下最大连接数的理论计算公式: 最大连接数 = worker_pro ...
- nginx优化
此文章非原创,出自鸟哥之手~ http://blog.chinaunix.net/uid-25266990-id-2985541.html 改排版改得多,当然红色部分要注意下,用得较多 ------- ...
- (转)nginx优化 实现10万并发访问量
转自http://www.cnblogs.com/pricks/p/3837149.html 一般来说nginx配置文件中对优化比较有作用的为以下几项:worker_processes 8;1 ngi ...
- 2.Nginx优化
[教程主题]:Nginx优化 [课程录制]: 创E [主要内容] Nginx 优化 nginx介绍 Nginx是俄罗斯人编写的十分轻量级的HTTP服务器,Nginx,它的发音为"engine ...
- 【转】nginx优化 突破十万并发
一.一般来说nginx 配置文件中对优化比较有作用的为以下几项: 1. worker_processes 8; nginx 进程数,建议按照cpu 数目来指定,一般为它的倍数 (如,2个四核的cpu计 ...
随机推荐
- [LeetCode]1083. 销售分析 II(Mysql,having+if)
题目 编写一个 SQL 查询,查询购买了 S8 手机却没有购买 iPhone 的买家. 题解 使用having + sum+if,而不是自查询. 代码 # Write your MySQL query ...
- [LeetCode]72. 编辑距离(DP)
题目 给定两个单词 word1 和 word2,计算出将 word1 转换成 word2 所使用的最少操作数 . 你可以对一个单词进行如下三种操作: 插入一个字符 删除一个字符 替换一个字符 示例 1 ...
- 大揭秘| 我司项目组Gitlab Flow && DevOps流程
长话短说,本文全景呈现我司项目组gitlab flow && devops Git Flow定义了一个项目发布的分支模型,为管理具有预定发布周期的大型项目提供了一个健壮的框架. Dev ...
- mysql主从模式部署
1.下载tar.gz格式的安装包 下载地址https://dev.mysql.com/downloads/mysql/ 2.解压 tar -zvxf mysql-5.7.19-linux-glibc2 ...
- JDK15正式发布,划时代的ZGC同时宣布转正
你发任你发,我用Java8.本文已被 https://www.yourbatman.cn 收录,里面一并有Spring技术栈.MyBatis.JVM.中间件等小而美的专栏供以免费学习.关注公众号[BA ...
- 高可用负载均衡集群——keepalive(1)
Keepalived介绍 keepalived 是一个类似于 layer3, 4 & 5 交换机制的软件,也就是我们平时说的第 3 层.第 4 层和第 5层交换. Keepalived 的作用 ...
- 数据库:drop、truncate、delete的区别
近日在删除数据时,发现除了常用的Delete & Drop语句之外,还有Truncate也是与删除数据相关的,针对上述三种有进行简单的比较与整理 用法 drop 用法:drop table 表 ...
- hystrix文档翻译之插件
插件 可以通过实现插件来改变Hystrix的行为.可以通过HystrixPlugins来注册自定义插件,这些插件会被应用到HystrixCommand,HystrixObservableCommand ...
- RDS、DDS 和 GaussDB 理不清?看这一篇足够了!
当前,华为云提供的数据库服务主要包括三大类:关系型数据库服务,非关系型数据库服务以及数据库工具服务.如下图所示: 关系型数据库和非关系型数据库均可分为开源和自研两大类.其中,自研数据库统一为Gauss ...
- JVM学习(六)JVM常见知识问答
文章更新时间:2020/04/21 1.什么是Java虚拟机?为什么Java被称作是"平台无关的编程语言"? Java虚拟机是一个可以执行Java字节码的虚拟机进程. Java源文 ...