nginx最大并发连接数的思考:worker_processes、worker_connections、worker_rlimit_nofile
参考nginx官网:http://nginx.org/en/docs/ngx_core_module.html#worker_connections
从用户的角度,http 1.1协议下,由于浏览器默认使用两个并发连接,因此计算方法:
nginx作为http服务器的时候:
max_clients = worker_processes * worker_connections/2
nginx作为反向代理服务器的时候:
max_clients = worker_processes * worker_connections/4 (
官方wiki(页面标记已经过时,但是网上很多文章都在引用)看到一个关于为什么除以4的解释:
如果作为反向代理,因为浏览器默认会开启2个连接到server,而且Nginx还会使用fds(file descriptor)从同一个连接池建立连接到upstream后端。则最大连接数的计算公式如下:
)
或者从一般建立连接的角度:客户并发连接为1.
nginx作为http服务器的时候:
max_clients = worker_processes * worker_connections
nginx作为反向代理服务器的时候:
max_clients = worker_processes * worker_connections/2
nginx做反向代理时,和客户端之间保持一个连接,和后端服务器保持一个连接。
但是怎样合理的设置worker_processes与worker_connections这两个参数?
worker_processes :
worker角色的进程个数(nginx启动后有多少个worker处理http请求。master不处理请求,而是根据相应配置文件信息管理worker进程. master进程主要负责对外揽活(即接收客户端的请求),并将活儿合理的分配给多个worker,每个worker进程主要负责干活(处理请求))。
最理想的worker_processes值取决于很多因素,包含但不限于CPU的核数,存储数据的硬盘驱动器个数(跟这个有什么关系?难道和cpu一样,存在跨区域读取数据问题),以及负载模式(?这个是什么?)当其中任何一个因素不确定的时候,将其设置为cpu核数或许是一个比较好的初始值,“自动”也基本是如此确认一个参数值的。
“自动”这个参数值是从nginx 1.3.8和nginx 1.2.5 开始进行支持的,自动参数可以自动检测 cpu cores 并设置 worker_processes 参数 。
在网上也看到以下建议:
nginx doesn't benefit from more than one worker per CPU.
一个cpu配置多于一个worker数,对nginx而言没有任何益处。
If Nginx is doing CPU-intensive work such as SSL or gzipping and you have 2 or more CPUs/cores, then you may set worker_processes to be equal to the number of CPUs or cores.
如果nginx处理的是cpu密集型(比较耗费cpu的)的操作,建议将此值设置为cpu个数或cpu的核数。
cpu相关信息查看:
逻辑CPU个数:
# cat /proc/cpuinfo | grep "processor" | wc -l
物理CPU个数:
# cat /proc/cpuinfo | grep "physical id" | sort | uniq | wc -l
每个物理CPU中Core的个数:
# cat /proc/cpuinfo | grep "cpu cores" | wc -l
worker_connections:
官方解释如下,个人认为是每一个worker进程能并发处理(发起)的最大连接数(包含所有连接数)。
不能超过最大文件打开数:在linux终端中输入ulimit -a进行查看
worker_rlimit_nofile
- 英文原文:
Syntax: worker_rlimit_nofile number;
Default: —
Context: main
Changes the limit on the maximum number of open files (RLIMIT_NOFILE) for worker processes. Used to increase the limit without restarting the main process.
中文翻译:
为nginx工作进程改变打开最多文件描述符数目的限制。用来在不重启主进程的情况下增加限制。
例如:
worker_rlimit_nofile 204800;
理论上这个值是最多打开文件数(ulimit -n)与nginx工作进程相关
参考:
http://www.jb51.net/LINUXjishu/164573.html 最大文件打开数相关描述
https://blog.csdn.net/sole_cc/article/details/52433353
nginx最大并发连接数的思考:worker_processes、worker_connections、worker_rlimit_nofile的更多相关文章
- 【转载】nginx 并发数问题思考:worker_connections,worker_processes与 max clients
注:这个文章主要是作者一直在研究nginx作为http server和反向代理服务器时候所谓最大的max_clients和 worker_connections的计算公式, 其实最后的结论也没有卡上公 ...
- nginx 并发数问题思考:worker_connections,worker_processes与 max clients
我相信,很多人都跟我一样,看书都不会太细致也不太认真思考,感觉书中讲的东西都应该是对的,最近读书时我发现以前认为理所当然的东西事实上压根都没有弄明白,最终的结果是,书是别人的,书中的知识也是别人的. ...
- nginx优化:worker_processes/worker_connections/worker_rlimit_nofile
一,优化nginx的worker进程数 1,worker_processes应设置为多少? worker_processes 4; 如何设置这个值: worker_processes默认值是1,一般要 ...
- 如果nginx 中worker_connections 值设置是1024,worker_processes 值设置是4,按反向代理模式下最大连接数的理论计算公式: 最大连接数 = worker_processes * worker_connections/4
如果nginx 中worker_connections 值设置是1024,worker_processes 值设置是4,按反向代理模式下最大连接数的理论计算公式: 最大连接数 = worker_pro ...
- 基于nginx的频率控制方案思考和实践
基于nginx的频率控制方案思考 标签: 频率控制 nginx 背景 nginx其实有自带的limit_req和limit_conn模块,不过它们需要在配置文件中进行配置才能发挥作用,每次有频控策略的 ...
- Nginx控制并发连接数
ngx_http_limit_conn_module这个模块用于限制每个定义的key值的连接数,特别是单IP的连接数. 不是所有的连接数都会被计数.一个符合计数要求的连接是整个请求头已经被读取的连接. ...
- nginx的 CPU參数worker_processes和worker_cpu_affinity使用说明
Nginx默认没有开启利用多核CPU,我们能够通过添加worker_cpu_affinity配置參数来充分利用多核CPU.CPU是任务处理,计算最关键的资源,CPU核越多.性能就越好. worker_ ...
- Linux下查看Nginx的并发连接数和连接状态-乾颐堂
Linux下查看Nginx等的并发连接数和连接状态. 1.查看Web服务器(Nginx Apache)的并发请求数及其TCP连接状态: netstat -n | awk '/^tcp/ {++S[$N ...
- 查看 nginx 的并发连接数
通过查看Nginx的并发连接,我们可以更清除的知道网站的负载情况.Nginx并发查看有两种方法(之所以这么说,是因为笔者只知道两种),一种是通过web界面,一种是通过命令,web查看要比命令查看显示的 ...
随机推荐
- Xshell 找到上次执行的命令
ctrl + p 返回上一次输入命令字符 ctrl + r 输入单词搜索历史命令
- Valid Number——分情况讨论最经典的题(没细看)——这题必须静下心来好好看看
Validate if a given string is numeric. Some examples: "0" => true " 0.1 " =&g ...
- C#发送Post请求,带参数,不带参数,指定参数
1.不带参数发送Post请求 /// <summary> /// 指定Post地址使用Get 方式获取全部字符串 /// </summary> /// <param na ...
- macos不能打开windows samba共享问题(转载)
转自:https://www.macx.cn/thread-2095377-1-1.html?mod=viewthread&tid=2095377&extra=page%253D1&a ...
- mysql中MAX()函数和count()函数的技巧使用
1.max()函数 在考虑提高数据库io的情况下,可以创建索引 ===>create index 索引名称 on 表名(列名); 2.count()函数 问题:count(*)与count(某列 ...
- NYOJ 228 士兵杀敌(五)【差分标记裸题】
题目链接 所有元素初始值为0才能这么做: ①l--r全加1 a[l]++; a[r+1]--; 求一遍前缀和为元素本身. 求两遍前缀和为元素前缀和. #include<cstdio> #i ...
- B. Black Square(字符串)
B. Black Square time limit per test 1 second memory limit per test 256 megabytes input standard inpu ...
- HRBUST 1213 单词接龙
暴力搜索. 按照能配对的关系建立有向边,然后暴力搜索. #include<cstdio> #include<cstring> #include<cmath> #in ...
- Codeforces GYM 101968 A. Tree Game
差点自闭,感谢大佬帮忙找bug 题目:https://codeforces.com/gym/101968/problem/A 找树的重心+思维 找到树的重心,如果重心只有一个,以重心为根节点dfs,求 ...
- win10安装mysql8.0.15
1:下载mysql8.0.15 https://www.mysql.com/downloads/ 2:下载完解压,增加my.ini配置文件 [mysqld] # 设置3306端口 port= # 设置 ...