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. html中'disabled'与'readonly'的区别

    html中'disabled'与'readonly'的区别 此随笔增量编辑 disabled 在提交表单的时候 值不会带入表单中, 而readonly则可以将值带入表单中.

  2. Linux下安装jdk中遇到的坑

    比如:我以jdk-8u211-linux-i586.tar.gz为例进行. 下载完成后解压到指定文件下先创建java文件目录,如果已存在就不用创建[root@lyh:] # mkdir -p /usr ...

  3. Pycharm超级好用的快捷键——效率之王

    Pycharm超级好用的快捷键--效率之王 IT界老黑 IT界老黑 带你领略Python的魅力 ​关注他 270 人赞同了该文章 最重要的快捷键 ctrl+shift+A:万能命令行 shift两次: ...

  4. 3.解决git不可用问题

    升级gityum -y update git   配置阿里云yum源yum -y update nssyum -y update nss curl libcurl

  5. Devexpress xaf BO中字段为RuleRequiredField必输字段时,文本标签默认添加*标记

    BO中字段为RuleRequiredField必输字段时,文本标签默认添加*标记.需要在模型编辑器中设置,如图. 官网地址:https://docs.devexpress.com/eXpressApp ...

  6. 消息服务百科全书——Kafka基本原理介绍

    架构 1.1 总体架构 因为Kafka内在就是分布式的,一个Kafka集群通常包括多个代理. 为了均衡负载,将话题分成多个分区,每个代理存储一或多个分区.多个生产者和消费者能够同时生产和获取消息. 一 ...

  7. java实现4种内部排序

    两种插入类排序: 直接插入排序: public static void insertSort(int[] arr, int len){ for(int i=1; i<len; i++){ int ...

  8. 轻松搭建CAS 5.x系列(3)-连接数据库,使用数据库表中的帐号做登录

    概要说明 前面的CAS SEVER中的登录帐号名是配置中写死的,实际情况中不太可能用这些方法.通常情况下,数据库的帐号名密码都是在数据库表中的,这样可以对登录帐号进行增删改的处理. 如果您对搭建固定帐 ...

  9. SQL连接(join)

    INNER JOIN:如果表中有至少一个匹配,则返回行 LEFT JOIN:即使右表中没有匹配,也从左表返回所有的行 RIGHT JOIN:即使左表中没有匹配,也从右表返回所有的行 FULL JOIN ...

  10. 使用 pdb 进行调试

    使用 pdb 进行调试 pdb 是 python 自带的一个包,为 python 程序提供了一种交互的源代码调试功能,主要特性包括设置断点.单步调试.进入函数调试.查看当前代码.查看栈片段.动态改变变 ...