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
- 英文原文:
|
中文翻译:
|
例如:
|
理论上这个值是最多打开文件数(ulimit -n)与nginx工作进程相关
参考:
http://www.jb51.net/LINUXjishu/164573.html 最大文件打开数相关描述
https://blog.csdn.net/sole_cc/article/details/52433353
来源:https://www.cnblogs.com/nulige/p/9369837.html
nginx最大并发连接数的思考:worker_processes、worker_connections、worker_rlimit_nofile相关推荐
- nginx的事件处理worker_processes/worker_connections/worker_rlimit_nofile解释,查看cpu数量
Nginx事件处理模型 demo events {use epoll;worker_connections 65535;multi_accept on;} worker_connections 下面有 ...
- Nginx核心要领五:worker_processes、worker_connections设置
worker_processes与worker_connections 设置好合适大小,可以提示nginx处理性能,非常重要. 原作者的话: As a general rule you need th ...
- Nginx限制并发连接数和带宽
并发连接数-SBC(Simultaneous Browser Connections) 并发连接数指的是客户端向服务器发起请求,并建立了TCP连接.每秒钟服务器链接的总TCP数量,就是并发连接数. 请 ...
- Nginx 限制并发连接数。
在http 段增加如下内容,用于定义一个记录区. limit_zone test $binary_remote_addr 10m; 在server 段增加如下内容,将并发限制为200. limit_c ...
- Nginx配置:worker_processes、worker_connections设置
Nginx优化:配置worker_rlimit_nofile.worker_processes.worker_connections 2022-10-26 - 简书 (jianshu.com)htt ...
- nginx配置文件结构1
nginx配置文件结构 main: user nginx; 进程发起的用户名 worker_processes auto; 进程数量auto为物理核心数量 error_log /var/log/ngi ...
- Apache、nginx 、lighttpd
转自:http://blog.csdn.net/hguisu/article/details/7395181 http://blog.csdn.net/hguisu/article/details/7 ...
- Nginx的简单使用
Nginx 百度百科: # 简介: Nginx (engine x) 是一个高性能的HTTP和反向代理web服务器,同时也提供了IMAP/POP3/SMTP服务. ...
- nginx php测试php_php + nginx 网站并发压力测试及优化
属性的字符串. -C对请求附加一个Cookie:行.其典型形式是name=value的一个参数对,此参数可以重复. -H对请求附加额外的头信息.此参数的典型形式是一个有效的头信息行,其中包含了以冒号分 ...
最新文章
- 【Android】OpenGL ES for Android 教程1 - HelloWorld
- [转载] 七龙珠第一部——第121话 悟空最大的危机
- jconsole命令(Java Monitoring and Management Console)
- uni-app使用前的调研和开发心得
- 设计模式系列漫谈之一 - 观察者模式
- C++结构体传参问题
- c莫比乌斯函数_莫比乌斯函数
- 知人者智,自知者明——战胜自己才最强大(拥有一颗强大的内心,能量爆棚的内在灵魂)...
- 数据存储(1):从数据存储看人类文明-数据存储器发展历程
- Jvm-Sandbox-Repeater的部署
- vue项目webpack打包优化体积优化,打包体积减少200kb到4Mb
- griffin measure metrics无法自动汇总报告结果的问题
- 零基础新手自学Python编程教程入门精通学习资料网站大全
- 服务器删除临时目录问题
- 【web-渗透测试方法】(15.6)测试基于输入的漏洞
- 制造企业在发展过程中的取胜之道有哪些?精益管理
- Zabbix分布式监控平台
- Android(安卓)简单拨号器案例
- 开启一名非典型传桶工科生的博客之路
- 2015定额企业取费证规费费率核定标准摘录绵建价【2016】3 号
热门文章
- C++ Opengl 线,网格游戏源码
- android4 设置栈大小,【技术分享】Android内核漏洞利用技术实战:环境搭建栈溢出实战...
- python类_Python中的类
- c语言小程序hello,【北北的小程序】北のC语言第一课:helloworld
- java 3d游戏_不放一行代码分享一下java实现3D游戏逻辑
- meta name=viewport content=width=device-width,minimum-scale=1.0,maximum-scale=1.0/
- linux内存free低,Linux上的内存使用情况与`free`不匹配
- 如何使用VS2015开发Qt5程序
- UART_RECV详细设计方案
- 定义一个数组返回最大子数组的值(2)