nginx最大并发连接数的思考:worker_processes、worker_connections、worker_rlimit_nofile_sole_cc的博客-CSDN博客_nginx最大并发数


本站和网页 https://blog.csdn.net/sole_cc/article/details/52433353 的作者无关,不对其内容负责。快照谨为网络故障时之索引,不代表被搜索网站的即时页面。

nginx最大并发连接数的思考:worker_processes、worker_connections、worker_rlimit_nofile_sole_cc的博客-CSDN博客_nginx最大并发数
nginx最大并发连接数的思考:worker_processes、worker_connections、worker_rlimit_nofile
sole_cc
于 2016-09-04 17:36:23 发布
26903
收藏
11
文章标签:
nginx
nginx
专栏收录该内容
4 篇文章
0 订阅
订阅专栏
无论是看过的nginx有关书还是网上看到的有关nginx 配置说明的文章(http://wiki.nginx.org/EventsModule#worker_connections),无一例外,在讲到 worker_connections 和 max_clients这两个概念的关系时都一致的一笔带过,尤其是在讲到nginx作为反向代理时max_clients的计算时,都是想当然的贴出max_clients = worker_processes * worker_connections/4这个理论计算公式来。既然是理论公式,那么为什么要除以4呢?肯定是有原因的吧。我相信有些人是知道如何计算的,但是很多人都如我一样一眼扫过,真正等到别人或者自己问自己的时候就真的感觉是云里雾里,不知所以然了
nginx作为http服务器的时候:
    max_clients = worker_processes * worker_connections nginx作为反向代理服务器的时候:     max_clients = worker_processes * worker_connections/4 原因(为什么要除以4)
要弄明白这个问题,先搞清楚worker_processes和worker_connections的官方详细含义
worker_processes:官方英文版wiki配置说明中的描述如下,个人理解为worker角色的进程个数(nginx启动后有多少个worker处理http请求。master不处理请求,而是根据相应配置文件信息管理worker进程.   master进程主要负责对外揽活(即接收客户端的请求),并将活儿合理的分配给多个worker,每个worker进程主要负责干活(处理请求))。 syntax:worker_processes number | auto; default: worker_processes 1; context:main Defines the number of worker processes. The optimal value depends on many factors including (but not limited to) the number of CPU cores, the number of hard disk drives that store data, and load pattern. When one is in doubt, setting it to the number of available CPU cores would be a good start (the value “auto” will try to autodetect it). The auto parameter is supported starting from versions 1.3.8 and 1.2.5. 最理想的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的核数。
worker_connections:官方解释如下,个人认为是每一个worker进程能并发处理(发起)的最大连接数(包含所有连接数)。 syntax:worker_connections number; default: worker_connections 512; context:events Sets the maximum number of simultaneous(并发) connections that can be opened by a worker process. It should be kept in mind(谨记) that this number includes all connections (e.g. connections with proxied servers(与被代理服务之间的连接数), among others(与其他角色之间的)), not only connections with clients(不仅仅是与客户端之间的连接数). Another consideration is that the actual(实际的) number of simultaneous connections cannot exceed(超过) the current limit(当前限制) on the maximum number of open files(最大文件打开数), which can be changed by worker_rlimit_nofile (可以在worker_rlimit_nofile中改变的参数). worker_rlimit_nofile   xxxxx;            context:events ####Specifies(指定) the value for maximum file  descriptors(可被一个工作进程打开的最大文件描述符数量) that can be opened by this process. 注意:设置了这个后,修改worker_connections值时,是不能超过worker_rlimit_nofile的这个值。 max_clients:
这个参数没有出现在nginx的配置文件中,我也没在官方的文档中找到这个参数,但是很多的文章和书籍都提到了这个参数。有很多人将这个翻译为最大访问客户数,个人认为没有什么不妥的,因此我们就当这个是nginx在理论情况下能处理的最大访问客户数,当然这个客户数不是具体的用户。
当nginx作为http 静态内容的web服务器时,只需要处理来自客户端的连接请求即可(请求是双向的,连接是没有方向的,所以我上面说的反向代理是连接双向,除以4的说法是不正确的)。
由HTTP客户端发起一个请求,创建一个到服务器指定端口(默认是80端口)的TCP连接。HTTP服务器则在那个端口监听客户端的请求。一旦收到请求,服务器会向客户端返回一个状态,比如"HTTP/1.1 200 OK",以及返回的内容,如请求的文件、错误消息、或者其它信息。同一时刻nginx在处理客户端发送的http请求应该只是一个connection,由此可知理论上作为http web服务器角色的nginx能够处理的最大连接数就是最大客户端连接数。
因此理论上的最大客户端连接数计算公式为: max_clients = worker_processes * worker_connections;
那一直让我犯迷糊的问题,nginx作为反向代理时可以处理的最大客户连接数是如何计算的呢?   如果只是简单的按照http server服务器的计算模式,加上nginx将用户请求转向被代理服务器时建立的连接,最大的客户连接数也应该还是我之前理解的,在nginx作为http服务器的最大客户端连接数的基础上除以2了。当然,事实上极可能和我想象的不一样了。
官方wiki(页面标记已经过时,但是网上很多文章都在引用)看到一个关于为什么除以4的解释:
如果作为反向代理,因为浏览器默认会开启2个连接到server,而且Nginx还会使用fds(file descriptor)从同一个连接池建立连接到upstream后端。则最大连接数的计算公式如下: max_clients = worker_processes * worker_connections / 4; Since(因为) a browser opens 2 connections by default to a server and nginx uses the fds (file descriptors) from the same pool to connect to the upstream backend。 我有两个疑问: 浏览器怎么知道nginx是作为反向代理的?nginx 响应中会有说明? 如果浏览器知道nginx是作为反向代理的,那为什么需要开启2个连接到server,而且这跟使用文件描述符从同一个连接池(这又是什么东东),与后端upstream建立连接有什么关系?
nginx使用的epoll模型 作为web server时,在处理http请求时,如果作为web服务器,一个worker进程就可以用来响应一个用户请求。 作为反向代理时,用户发送请求到nginx,nginx发送请求到后端被代理服务器,后端服务器响应给nginx,nginx将内容返回给用户。 由于epoll模型是不等待的,每一步都有可能是由新建连接处理的,但是这也不能说明nginx作为反向代理最大客户连接数是需要除以4的。
2014.06.01 01:10更新: http://wiki.nginx.org/EventsModule#worker_connections 2011年大家对此问题的讨论: http://mailman.nginx.org/pipermail/nginx/2011-February/024979.html Antoine BONAVITA antoine_bonavita at yahoo.com  Thu Feb 3 11:43:22 MSK 2011 Previous message: Calculating the max. clients by worker_connections Next message: Calculating the max. clients by worker_connections Messages sorted by: [ date ] [ thread ] [ subject ] [ author ] I would say "and nginx uses the fds (file descriptors) from the same pool to  connect to the upstream backen" (wiki quote). But that should be 2, not 4: I  agree with you on this. If any of the gurus out there could shed light on this, I'm sure a lot of us  would appreciate. Antoine. Ryan Chan ryanchan404 at gmail.com  Thu Feb 3 19:38:49 MSK 2011 Previous message: Calculating the max. clients by worker_connections Next message: Calculating the max. clients by worker_connections Messages sorted by: [ date ] [ thread ] [ subject ] [ author ] In fact, As normal web server, the maths would also be max_clients = worker_processes * worker_connections / 2 since every browser opens 2 connections by default, since browser uses 2 connections in HTTP 1.1. 好吧,如上讨论内容,总有一个计算方式是有问题的,或者说大家对max_clients的理解不太一样。 如果说max_clients指的是最大客户端连接数,那nginx作为一般web server的计算公式是正确的。如果max_clients指的是建立连接最大客户数,由于每一个浏览器看了两个并发连接,那么nginx作为反向代理的计算公式就是正确的。 个人认为,max_clients 指nginx可以处理的客户端数(默认一个客户端发送一个请求,如果客户端并发两个请求,那就只能再除以2了)。 最终的结论: 从用户的角度,http 1.1协议下,由于浏览器默认使用两个并发连接,因此计算方法:    nginx作为http服务器的时候:     max_clients = worker_processes * worker_connections/2    nginx作为反向代理服务器的时候:     max_clients = worker_processes * worker_connections/4 或者从一般建立连接的角度:客户并发连接为1.    nginx作为http服务器的时候:     max_clients = worker_processes * worker_connections    nginx作为反向代理服务器的时候:     max_clients = worker_processes * worker_connections/2 nginx做反向代理时,和客户端之间保持一个连接,和后端服务器保持一个连接。
clients与用户数: 同一时间的clients(客户端数)和用户数还是有区别的,当一个用户请求发送一个连接时这两个是相等的,但是当一个用户默认发送多个连接请求的时候,clients数就是用户数*默认发送的连接并发数了。 Calculating the max client in Nginx Answer: If you use Nginx as a web server, the max. number of client can be served at the same time by Nginx should be calculated by the following formula: max_clients = worker_processes * worker_connections But this does not equal to the number of users can be served at the same time by Nginx, since a lot of browsers open 2 connections to the web server at the same time. 有关高流量负载情况下,nginx并发问题优化的一个文章: http://blog.martinfjordvald.com/2011/04/optimizing-nginx-for-high-traffic-loads/ 感谢: 互联网运维圈子群中的“Elean follow me”小伙伴. 互联网上各种抄袭和被抄袭的文章,虽然你们一再地误导我,各种坑我,但是我还是最终跳过各种坑,一步一步把问题搞明白了。 本文出自 “运维者说:从菜鸟到老鸟” 博客,请务必保留此出处http://liuqunying.blog.51cto.com/3984207/1420556
sole_cc
关注
关注
点赞
11
收藏
评论
nginx最大并发连接数的思考:worker_processes、worker_connections、worker_rlimit_nofile
无论是看过的nginx有关书还是网上看到的有关nginx 配置说明的文章(http://wiki.nginx.org/EventsModule#worker_connections),无一例外,在讲到 worker_connections 和 max_clients这两个概念的关系时都一致的一笔带过,尤其是在讲到nginx作为反向代理时max_clients的计算时,都是想当然的贴出max_cli
复制链接
扫一扫
专栏目录
nginx 限制ip、并发量、连接数等配置
01-30
nginx 限制ip、并发量、连接数等配置
Nginx优化之高并发配置,支持2万到3万并发量
LeeGene的博客
05-05
9245
Nginx安装
安装过程在下面的文章当中,里面详细的介绍了Nginx服务的安装过程。
Nginx编译安装详细过程
Nginx服务的启停控制
Nginx启停控制的办法中一共有两种方法可以用来对Nginx服务的进行启停操作。
Nginx服务的启停控制
压力测试
使用压力测试来对网页进行高并发测试,就能看出WEB服务器的并发量,这里使用Apache自带的ab压力测试工具进行测试。
ab压力测试的安装、使...
评论 5
您还未登录,请先
登录
后发表或查看评论
Nginx限制访问速率和最大并发连接数模块--limit (防止DDOS攻击)
weixin_30718391的博客
12-03
1515
Tengine版本采用http_limit_req_module进行限制
具体连接请参考http://tengine.taobao.org/document_cn/http_limit_req_cn.html
和官方nginx类似,不过支持多个变量,并且支持多个limit_req_zone的设置。比如:
limit_req_zone $binary_remote_addr zone=o...
nginx支持的最大长连接数,试验告诉你
最新发布
weixin_47402482的博客
10-30
1047
jmeter 压测 nginx 可以支持多少长连接数
nginx: [warn] the number of “worker_processes“ is not equal to the number of “worker_cpu_affinity“ m
王某人的博客
06-15
996
报错nginx: [warn] the number of “worker_processes” is not equal to the number of “worker_cpu_affinity” masks, using last mask for remaining worker processes
解决:
优化cpu核数
ls cpu 查看cpu核数
按图片的配置文件修改
nginx看最大并发量_Nginx的最大并发数怎么到5W?
weixin_39607240的博客
12-24
8213
达到5W需要做一系列的调优,不是仅仅修改一下配置文件,重启一下 nginx 就能达到的。我已经多年不负责具体的一线运维工作,但是我可以告诉你怎么做。给你一个思路首先找一个服务器例如 8核心 16线程,32G内存进入 RAID 卡,将6块 15000转 SAS硬盘,设置成 RAID 0或者 SSD ,最好是 PCI-E的。安装一个光纤网卡4口的,在Linux 设置 4个10G网口聚合,然后进入接入层...
nginx看最大并发量_nginx支持百万并发-如何测试nginx支持的最大并发数
weixin_36124631的博客
12-24
1万+
本文解决的是很多用户的问题,是如何通过最大用户数确定最大用户数并发,由于这个问题没有解决,用户很难为自己的系统选择最合适的服务器,下面我们来看这篇文章。 以下是作者的原文。nginx支持多少并发。这篇文章主要是关于表演的。一个系统的并发用户数最大为1100,如何计算系统支持的最大用户数。nginx并发可支持多大。用户性能要求如下:支持100万注册用户nginx集群百万并发量。性能要求分析:ngin...
解读:nginx的一个神秘配置worker_cpu_affinity
咖啡色的羊驼
03-23
3万+
解读:nginx的一个神秘配置worker_cpu_affinity
Nginx为什么快到根本停不下来?
qq_20282955的博客
02-19
227
Nginx 以其高性能,稳定性,丰富的功能,简单的配置和低资源消耗而闻名。本文从底层原理分析 Nginx 为什么这么快!
Nginx 的进程模型
Nginx 服务器,正常运行过程中:
多进程:一个 Master 进程、多个 Worker 进程。
Master 进程:管理 Worker 进程。对外接口:接收外部的操作(信号);对内转发:根据外部的操作的不同,通过信号管理 Worker;监控...
Redis 最大客户端连接数,你了解吗?
wejack的专栏
11-04
2723
文章系转载,方便整理和归纳,源文地址:https://cloud.tencent.com/developer/article/1803944
1. 前言
上一篇文章《你的Redis集群撑得住吗?》讲了应用增加pod时,有一个应用最大连接数计算公式为:maxTotal * pod数 < Redis cluster的最大连接数(单个分片的max_clients * 分片数) * 80% (预留百分比),大家有没有考虑过以下两个问题:1.Redis max_clients 是怎么设置的?2.为什么Red.
nginx配置:woker_processes number与worker_cpu_affinity
Kevin的博客
10-02
426
nginx一般只做高并发代理,属于cpu密集型处理。过多的进程数在多核处理器中需要排队,没有意义
一般woker_processes设置为逻辑核心数,查看逻辑核心数
[root@VM_0_17_centos worker01]# cat /proc/cpuinfo | grep "processor"
processor: 4
修改配置文件
user root;
worke...
nginx看最大并发量_Nginx高并发配置思路(轻松应对1万并发量)
weixin_35906775的博客
12-24
2278
测试机器为腾讯云服务器1核1G内存,swap分区2G,停用除SSH外的所有服务,仅保留nginx,优化思路主要包括两个层面:系统层面+nginx层面。一、系统层面1、调整同时打开文件数量ulimit -n 204802、TCP最大连接数(somaxconn)echo 10000 > /proc/sys/net/core/somaxconn3、TCP连接立即回收、回用(recycle、reus...
面试-PHP篇-Nginx实现高并发和常见的优化手段
张罗丰的博客
05-13
485
面试题:
Nginx 是如何实现并发的?为什么 Nginx 不使用多线程?Nginx常见的优化手段有哪些?502错误可能原因有哪些?
面试官心理分析
主要是看应聘人员的对NGINX的基本原理是否熟悉,因为大多数运维人员多多少少都懂点NGINX,但是真正其明白原理的可能少之又少。明白其原理,才能做优化,否则只能照样搬样,出了问题也无从下手。
懂皮毛的人,一般会做个 Web Server,搭建一个 Web 站点;初级运维可能搞个 HTTPS 、配置一个反向代理; 中级运维定义个 upstream、写个正
nginx看最大并发量_修改系统及nginx程序最大访问数,解决高并发问题
weixin_42323034的博客
12-24
548
修改最大访问数。先更改内核参数查看:ulimit -a查看此行open files (-n) 140000进入系统配置文件进行修改:[root@bogon ~]#vi /etc/systemd/system.conf#DefaultLimitNOFILE=DefaultLimitNOFILE=140000#DefaultLimitAS=#DefaultLi...
Nginx中worker connections问题的解决方法 enough大量用户502 500 499
HD243608836的博客
04-07
1799
这篇文章主要介绍了Nginx中worker connections问题的解决方法,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
查看日志,有一个[warn]: 3660#0: 20000 worker_connections are more than open file resource limit: 1024 !!
原来安装好nginx之后,默认最大的并发数为1024,如果你的网站访问量过大,已经远远超过1024这个并发数,那你就要修改worker_connecions这个值 ,这个值越大,并发
Nginx核心要领五:worker_processes、worker_connections设置
热门推荐
zhuyu19911016520
05-31
8万+
worker_processes与worker_connections 设置好合适大小,可以提示nginx处理性能,非常重要。
原作者的话:
As a general rule you need the only worker with large number of worker_connections, say 10,000 or 20,000.
However, if nginx does ...
图文结合告诉你,Nginx 为什么快到停不下来?
shadiao_wangyou的博客
01-14
909
Nginx 的进程模型
Nginx 服务器,正常运行过程中:
多进程:一个 Master 进程、多个 Worker 进程
Master 进程:管理 Worker 进程
对外接口:接收外部的操作(信号)
对内转发:根据外部的操作的不同,通过信号管理 Worker
监控:监控 worker 进程的运行状态,worker 进程异常终止后,自动重启 worker 进程
Worker...
nginx 优化系列之worker_connections
钱可通神
07-09
1万+
nginx.conf
(原文链接 http://ddbiz.com/?p=153)
events {
use epoll;
worker_connections 8192;
增加 worker_connections,测试配置报告:
[warn]: 8192 worker_connections are more than
nginx的worker_processes和worker_connections
奔跑的菜鸡
11-04
5353
worker_processes:操作系统启动多少个工作进程运行Nginx
注意是工作进程,不是有多少个nginx工程。在Nginx运行的时候,会启动两种进程,一种是主进程master process;一种是工作进程worker process。
例如我在配置文件中将worker_processes设置为4.
图中可以看到1个nginx主进程,master process;还有四个工作进程,worker process。主进程负责监控端口,协调工作进程的工作状态,分配工作任务,工作进程负责进行任务处理。一
“相关推荐”对你有帮助么?
非常没帮助
没帮助
一般
有帮助
非常有帮助
提交
©️2022 CSDN
皮肤主题:大白
设计师:CSDN官方博客
返回首页
sole_cc
CSDN认证博客专家
CSDN认证企业博客
码龄10年
暂无认证
108
原创
10万+
周排名
169万+
总排名
58万+
访问
等级
6479
积分
55
粉丝
103
获赞
22
评论
350
收藏
私信
关注
热门文章
linux lightdm gdm gnome kde等的区别于联系(桌面环境 窗口管理器 显示管理器)
35526
nginx最大并发连接数的思考:worker_processes、worker_connections、worker_rlimit_nofile
26902
ubuntu如何关闭图形界面,启动文本模式
20792
Hadoop,Hbase启动及用web查看hadoop运行状态
18867
X86_64上没有写C函数声明导致的BUG(warning: initialization makes pointer from integer without a cast)
18786
分类专栏
算法new
架构设计
面试
性能优化
编解码
基金
linux
34篇
git
CMake
1篇
c++new
5篇
python
protobuf
epoll
2篇
tcp
1篇
vim
1篇
gdb
clion
1篇
搜索
电脑硬件
2篇
网络
最新评论
HTTP协议(rfc2626)中文翻译(修订版)
Ts势:
http 1.1 是 rfc 2616 名字都搞错了 RFC 2626 The Internet and the Millennium Problem (Year 2000)
linux 软件管理方式
我爱人工智能:
写的好,很nice,期待大佬回访!
linux 软件管理方式
洛阳泰山:
666,反手就是一个赞,欢迎回赞哦~
nginx最大并发连接数的思考:worker_processes、worker_connections、worker_rlimit_nofile
Tisfy:
十分完美,正如:长风破浪会有时,直挂云帆济沧海。
二叉树遍历之非递归算法
硬着头皮写代码的菜鸡:
tql
您愿意向朋友推荐“博客详情页”吗?
强烈不推荐
不推荐
一般般
推荐
强烈推荐
提交
最新文章
浅谈多态基类析构函数声明为虚函数
C++ 对象的内存布局(下)
C++ 对象的内存布局(上)
2019年7篇
2018年10篇
2016年44篇
2015年207篇
2014年158篇
目录
目录
分类专栏
算法new
架构设计
面试
性能优化
编解码
基金
linux
34篇
git
CMake
1篇
c++new
5篇
python
protobuf
epoll
2篇
tcp
1篇
vim
1篇
gdb
clion
1篇
搜索
电脑硬件
2篇
网络
目录
评论 5
被折叠的 条评论
为什么被折叠?
到【灌水乐园】发言
查看更多评论
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额
抵扣说明:
1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。 2.余额无法直接购买下载,可以购买VIP、C币套餐、付费专栏及课程。
余额充值