参考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

来源:https://www.cnblogs.com/nulige/p/9369837.html

nginx最大并发连接数的思考:worker_processes、worker_connections、worker_rlimit_nofile相关推荐

  1. nginx的事件处理worker_processes/worker_connections/worker_rlimit_nofile解释,查看cpu数量

    Nginx事件处理模型 demo events {use epoll;worker_connections 65535;multi_accept on;} worker_connections 下面有 ...

  2. Nginx核心要领五:worker_processes、worker_connections设置

    worker_processes与worker_connections 设置好合适大小,可以提示nginx处理性能,非常重要. 原作者的话: As a general rule you need th ...

  3. Nginx限制并发连接数和带宽

    并发连接数-SBC(Simultaneous Browser Connections) 并发连接数指的是客户端向服务器发起请求,并建立了TCP连接.每秒钟服务器链接的总TCP数量,就是并发连接数. 请 ...

  4. Nginx 限制并发连接数。

    在http 段增加如下内容,用于定义一个记录区. limit_zone test $binary_remote_addr 10m; 在server 段增加如下内容,将并发限制为200. limit_c ...

  5. Nginx配置:worker_processes、worker_connections设置

    Nginx优化:配置worker_rlimit_nofile.worker_processes.worker_connections  2022-10-26 - 简书 (jianshu.com)htt ...

  6. nginx配置文件结构1

    nginx配置文件结构 main: user nginx; 进程发起的用户名 worker_processes auto; 进程数量auto为物理核心数量 error_log /var/log/ngi ...

  7. Apache、nginx 、lighttpd

    转自:http://blog.csdn.net/hguisu/article/details/7395181 http://blog.csdn.net/hguisu/article/details/7 ...

  8. Nginx的简单使用

    Nginx 百度百科:     # 简介:         Nginx (engine x) 是一个高性能的HTTP和反向代理web服务器,同时也提供了IMAP/POP3/SMTP服务.        ...

  9. nginx php测试php_php + nginx 网站并发压力测试及优化

    属性的字符串. -C对请求附加一个Cookie:行.其典型形式是name=value的一个参数对,此参数可以重复. -H对请求附加额外的头信息.此参数的典型形式是一个有效的头信息行,其中包含了以冒号分 ...

最新文章

  1. 【Android】OpenGL ES for Android 教程1 - HelloWorld
  2. [转载] 七龙珠第一部——第121话 悟空最大的危机
  3. jconsole命令(Java Monitoring and Management Console)
  4. uni-app使用前的调研和开发心得
  5. 设计模式系列漫谈之一 - 观察者模式
  6. C++结构体传参问题
  7. c莫比乌斯函数_莫比乌斯函数
  8. 知人者智,自知者明——战胜自己才最强大(拥有一颗强大的内心,能量爆棚的内在灵魂)...
  9. 数据存储(1):从数据存储看人类文明-数据存储器发展历程
  10. Jvm-Sandbox-Repeater的部署
  11. vue项目webpack打包优化体积优化,打包体积减少200kb到4Mb
  12. griffin measure metrics无法自动汇总报告结果的问题
  13. 零基础新手自学Python编程教程入门精通学习资料网站大全
  14. 服务器删除临时目录问题
  15. 【web-渗透测试方法】(15.6)测试基于输入的漏洞
  16. 制造企业在发展过程中的取胜之道有哪些?精益管理
  17. Zabbix分布式监控平台
  18. Android(安卓)简单拨号器案例
  19. 开启一名非典型传桶工科生的博客之路
  20. 2015定额企业取费证规费费率核定标准摘录绵建价【2016】3 号

热门文章

  1. C++ Opengl 线,网格游戏源码
  2. android4 设置栈大小,【技术分享】Android内核漏洞利用技术实战:环境搭建栈溢出实战...
  3. python类_Python中的类
  4. c语言小程序hello,【北北的小程序】北のC语言第一课:helloworld
  5. java 3d游戏_不放一行代码分享一下java实现3D游戏逻辑
  6. meta name=viewport content=width=device-width,minimum-scale=1.0,maximum-scale=1.0/
  7. linux内存free低,Linux上的内存使用情况与`free`不匹配
  8. 如何使用VS2015开发Qt5程序
  9. UART_RECV详细设计方案
  10. 定义一个数组返回最大子数组的值(2)