1.master和worker
nginx启动后,会有2种进程:worker和master;worker可能有多个;
master进程负责管理分配任务,worker进程负责实际工作;
 
worker工作机制:
    当客户端发送一个请求后,master接收请求,然后后分配给worker;
    分配的机制为争抢;worker抢到任务后将利用反向代理请求tomcat;
 
一个master和多个worker的好处:
    1】可以使用 nginx –s reload 热部署,利用 nginx 进行热部署操作
        线上部署的服务器一般不会停止,如果停止可能会造成问题;
        有多个worker,worker1抢到了任务,此时服务器使用 nginx –s reload重加载;
        此时又来了一个新的请求,worker1因为有任务而不会再参与争抢;
        其它worker会去争抢任务,它们得到的是重新加载后的内容;
        worker1在执行完任务后,也会重新加载,而得到加载后的内容;
    2】每个 woker 是独立的进程,如果有其中的一个 woker 出现问题,其他 woker 独立的,
继续进行争抢,实现请求过程,不会造成服务中断
 
设置多少个worker合适:
    Nginx 同 redis 类似都采用了 io 多路复用机制;
    每个 worker 都是一个独立的进程,
    但每个进程里只有一个主线程,通过异步非阻塞的方式来处理请求, 即使是千上万个请求也不在话下。
    每个 worker 的线程可以把一个 cpu 的性能发挥到极致。
    所以 worker 数和服务器的 cpu数相等是最为适宜的。
    设少了会浪费 cpu,设多了会造成 cpu 频繁切换上下文带来的损耗。
 
Nginx和redis通常都是装在linux系统中的,也可以装载windows系统中;
但装载windows系统中时就没有io多路复用机制;
也就是说,nginx在windows中功能虽然有,但并不能把它的性能发挥到最大;
 
设置worker数量:
worker_processes 4
#work 绑定 cpu(4 work 绑定 4cpu)。
worker_cpu_affinity 0001 0010 0100 1000
#work 绑定 cpu (4 work 绑定 8cpu 中的 4 个) 。
worker_cpu_affinity 0000001 00000010 00000100 00001000
 
worker连接数worker_connection:
这个值是表示每个 worker 进程所能建立连接的最大值,
所以,一个 nginx 能建立的最大连接数,应该是 worker_connections * worker_processes。
当然,这里说的是最大连接数,对于HTTP 请 求 本 地 资 源 来 说 , 能 够 支 持 的 最 大 并 发 数 量 是 worker_connections *worker_processes,
如果是支持 http1.1 的浏览器每次访问要占两个连接,
所以普通的静态访问最大并发数是: worker_connections * worker_processes /2,
而如果是 HTTP 作 为反向代理来说,最大并发数量应该是 worker_connections *worker_processes/4。
因为作为反向代理服务器,每个并发会建立与客户端的连接和与后端服务的连接,会占用两个连接。
 
第一个:发送请求,占用了 woker 的几个连接数?
    答案: 2 或者 4 个;
    如果是请求静态资源,需要worker连接客户端要2个连接数;
    如果是反向代理,worker需要谅解客户端2个连接数,加上worker和tomcat的两个连接数;
 
第二个: nginx 有一个 master,有四个 woker,每个 woker 支持最大的连接数 1024,支持的
最大并发数是多少?
     普通的静态访问最大并发数是: worker_connections * worker_processes /2,
     而如果是 HTTP 作 为反向代理来说,最大并发数量应该是 worker_connections *
    worker_processes/4。
 
 
     
 

nginx大概工作机制的更多相关文章

  1. 深入理解PHP之:Nginx 与 FPM 的工作机制

    网络上有很多关于如何配置 Nginx + FPM 的文章,但它们更多从操作的角度出发,告诉我们怎么做,但却没有告诉我们为什么要这么做,本文从 Nginx 与 FPM 的工作机制出发,探讨配置背后的原理 ...

  2. Nginx工作机制

    Nginx分为单工作进程和多工作进程两种模式.通常采用1个master+多个worker进程配合异步非阻塞的工作机制.master进程主要负责管理自身和下属的worker进程,worker负责处理请求 ...

  3. 15 sql base line 工作机制

    <个人Configuration> 正常配置一下, 就OK了, 不用理了, oracle 11g 默认启动 发展: .从Oracle的发展角度来看,估计这种方法是Oracle发展和改进的方 ...

  4. Session的工作机制详解和安全性问题(PHP实例讲解)

    我们先简单的了解一些http的知识,从而理解该协议的无状态特性.然后,学习一些关于cookie的基本操作.最后,我会一步步阐述如何使用一些简单,高效的方法来提高你的php应用程序的安全性以及稳定行. ...

  5. 通过库函数API和C代码中嵌入汇编代码剖析系统调用的工作机制

    作者:吴乐 山东师范大学<Linux内核分析>MOOC课程http://mooc.study.163.com/course/USTC-1000029000 本次实验的主要内容就是分别采用A ...

  6. 深入分析 Java I/O 的工作机制--转载

    Java 的 I/O 类库的基本架构 I/O 问题是任何编程语言都无法回避的问题,可以说 I/O 问题是整个人机交互的核心问题,因为 I/O 是机器获取和交换信息的主要渠道.在当今这个数据大爆炸时代, ...

  7. struts2的工作机制

    struts2的工作机制 原文:http://eoasis.iteye.com/blog/642586 概述 本章讲述Struts2的工作原理. 读者如果曾经学习过Struts1.x或者有过Strut ...

  8. 深入分析 Java I/O 的工作机制

    I/O 问题可以说是当今互联网 Web 应用中所面临的主要问题之一,因为当前在这个海量数据时代,数据在网络中随处流动.这个流动的过程中都涉及到 I/O 问题,可以说大部分 Web 应用系统的瓶颈都是 ...

  9. 网络I/O 工作机制

    数据从一台主机发送到网络中的另一台主机需要经过很多步骤,先得有相互沟通的意向,然后得有物理渠道(物理链路),其次双方还得有语言能够交流,且步调要一致. TCP状态转化 如图,是TCP/IP 的握手过程 ...

随机推荐

  1. leetCode算法——1TwoSum(两数之和)

    描述: 给定一个整数数组 nums 和一个目标值 target,请你在该数组中找出和为目标值的那 两个 整数,并返回他们的数组下标. 你可以假设每种输入只会对应一个答案.但是,你不能重复利用这个数组中 ...

  2. 什么是SSL证书服务?

    SSL证书服务(Alibaba Cloud SSL Certificates Service)由阿里云联合多家国内外数字证书管理和颁发的权威机构.在阿里云平台上直接提供的服务器数字证书.您可以在阿里云 ...

  3. Elasticsearch使用小结之冷热分离

    Elasticsearch使用小结之冷热分离 索引迁移 索引setting中的index.routing.allocation.exclude和index.routing.allocation.inc ...

  4. Linux系列之压缩与解压

    1.压缩技术 1.常用命令实例 1.zip格式的压缩与解压缩 zip是压缩指令,unzip是解压指令.zip指令既可以压缩文件,也可以压缩目录.压缩会自动保留源文件,解压会自动保留压缩文件. zip  ...

  5. 创建Vofuria工程,获取产品密钥

    进入Vofuria官网 https://developer.vuforia.com/vui/develop/licenses/free/new 然后点击 然后在License Name中填写izji刚 ...

  6. k-近邻(KNN) 算法预测签到位置

    分类算法-k近邻算法(KNN): 定义: 如果一个样本在特征空间中的k个最相似 (即特征空间中最邻近) 的样本中的大多数属于某一个类别,则该样本也属于这个类别 来源: KNN算法最早是由Cover和H ...

  7. php7和PHP5对比的新特性和性能优化

    1  抽象语法树( AST) 1)在 PHP5中,从 php 脚本到 opcodes 的执行的过程是: Lexing:词法扫描分析,将源文件转换成 token 流:    Parsing:语法分析,在 ...

  8. python 基础(十七)--hashlib加密模块

    hashlib加密模块 两种方式使用 字符串是中文时需要先编码成utf-8 常用加密算法:md5,sha1(已被破解)等... >>> a= hashlib.md5() >&g ...

  9. Vasya's Function CodeForces - 837E (gcd)

    大意: 给定$a,b$, $1\le a,b\le 1e12$, 定义 $f(a,0)=0$ $f(a,b)=1+f(a,b-gcd(a,b))$ 求$f(a,b)$. 观察可以发现, 每次$b$一定 ...

  10. 【原创】大叔经验分享(76)confluence和jira配置

    一 下载 confluence https://product-downloads.atlassian.com/software/confluence/downloads/atlassian-conf ...