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. DB2部分查询SQL

    /* 部分SQL */ --添加主键 alter TABLE TABLE_SCHEMA.TABLE_NAME add constraint PK_TABLE_NAME primary key(COL1 ...

  2. vue—组件基础了解

    什么是组件? 组件是vue中的一个可复用实例,所以new Vue()是vue中最大的那个组件,根组件,有名字,使用的时候以单标签或双标签使用 vm = newVue() 是最大的组件,具有很多实用性的 ...

  3. 第5章:Linux系统管理

    1.文件读写 1).Python内置的open函数 f = open('data.txt', 'w') f.write('hello, world') f.close() 2).避免文件句柄泄露 tr ...

  4. mac电脑上从终端命令行进入电脑里U盘目录下

    一般Mac电脑上u盘都在 Volumes 目录下,所以进入u盘可按如下命令: cd /Volumes/u盘名称

  5. nginx核心模块常用指令

    默认启动Nginx时,使用的配置文件是: 安装路径/conf/nginx.conf 文件,可以在启动nginx的时候,通过-c来指定要读取的配置文件 常见的配置文件有如下几个: nginx.conf: ...

  6. c#泛型约束(转载)

    博客地址:https://www.cnblogs.com/zhengwk/p/5541921.html 六种类型的约束: T:结构 类型参数必须是值类型.可以指定除 Nullable 以外的任何值类型 ...

  7. Unable to bind to http://localhost:8080 on the IPv6 loopback interface: 'Cannot assign requested address'.

    .net core+nginx警告: warn: Microsoft.AspNetCore.Server.Kestrel[0] Unable to bind to http://localhost:5 ...

  8. python matplotlib 折线图

    1.绘制折线图,去上和右边框,显示中文 import numpy as np import matplotlib.pyplot as plt #plt.style.use('default') #pl ...

  9. 在QT中添加LIB的方法

    注意:-L后面跟着的目录不能用空格,否则会出现读不到的情况. 例如win32下添加D:\app\my.lib   就 pro文件中 LIBS += -LD:\app\debug\ -lmy

  10. 函数——箭头函数&自执行函数(二)

    一.箭头函数是在es6中添加的一种规范,它相当于匿名函数,简化了函数的定义. 1.语法 a.function用var,let,cost来表示: b.参数要写在第一个等号后面:   参数有多个,需要加一 ...