nginx启动只有master没有worker_03、云计算系列课程Nginx

web 服务器-Nginx

一. 讲在 Nginx 之前

同步与异步:

同步与异步的重点在消息通知的方式上,也就是调用结果的通知方式不同。

同步:当一个同步调用发出去后,调用者要一直等待调用的结果通知后,才能进行后续的执行。

异步:当一个异步调用发出去后,调用者不必一直等待调用结果的返回,异步调用,要想获得结果,

一般有两种方式:

1、主动轮询异步调用的结果;

2、被调用方通过 callback(回调通知)来通知调用方调用结果。

实例解释:

同步取快递:小明收到快递将送达的短信,在楼下一直等到快递送达。

异步取快递:小明收到快递将送达的短信,快递到楼下后,小明再下楼去取。

异步取快递,小明知道快递到达楼下有两种方式:

1、不停的电话问快递小哥到了没有,即主动轮询;

2、快递小哥到楼下后,打电话通知小明,然后小明下楼取快递,即回调通知。

阻塞与非阻塞:

阻塞与非阻塞的重点在于进/线程等待消息时候的行为,也就是在等待消息的时候,当前进/线程是挂起状态,还是非挂起状态。

阻塞:调用在发出去后,在消息返回之前,当前进/线程会被挂起,直到有消息返回,当前进/线程才

会被激活

非阻塞:调用在发出去后,不会阻塞当前进/线程,而会立即返回。

实例解释:

阻塞取快递:小明收到快递即将送达的信息后,什么事都不做,一直专门等快递。

非阻塞取快递:小明收到快递即将送达的信息后,等快递的时候,还一边敲代码、一边刷微信。

同步与异步,重点在于消息通知的方式;阻塞与非阻塞,重点在于等消息时候的行为。所以,就有了下面 4 种组合方式

同步阻塞:小明收到信息后,啥都不干,等快递;

同步非阻塞:小明收到信息后,边刷微博,边等着取快递;

异步阻塞:小明收到信息后,啥都不干,一直等着快递员通知他取快递;

异步非阻塞:小明收到信息后,边刷着微博,边等快递员通知他取快递。

大部分程序的 I/O 模型都是同步阻塞的,单个进程每次只在一个文件描述符上执行 I/O 操作,每次 I/O 系统调用都会阻塞,直到完成数据传输。传统的服务器采用的就是同步阻塞的多进程模型。一个 server 采用一个进程负责一个 request 的方式,一个进程负责一个 request,直到会话结束。进程数就是并发数,而操作系统支持的进程数是有限的,且进程数越多,调度的开销也越大,因此无法面对高并发。

Nginx 采用了异步非阻塞的方式工作。我们先来先了解一下 I/O 多路复用中的 epoll 模型。

epoll 模型:

当连接有 I/O 事件产生的时候,epoll 就会去告诉进程哪个连接有 I/O 事件产生,然后进程就去处理这个事件。

例如:小明家楼下有一个收发室,每次有快递到了,门卫就先代收并做了标记;然后通知小明去取送给小明的快递。

为什么 Nginx 比其他 web 服务器并发高(Nginx 工作原理):

Nginx 配置 use epoll 后,以异步非阻塞方式工作,能够轻松处理百万级的并发连接。

处理过程:每进来一个 request,会有一个 worker 进程去处理。但不是全程的处理,处理到可能发生阻塞的地方。比如向后端服务器转发 request,并等待请求返回。那么,这个处理的 worker 不会这么傻等着,他会在发送完请求后,注册一个事件:“如果后端服务器返回了,告诉我一声,我再接着干”。于是他就休息去了。此时,如果再有新的 request 进来,他就可以很快再按这种方式处理。而一旦后端服务器返回了,就会触发这个事件,worker 才会来接手,这个 request 才会接着往下走。通过这种快速处理,快速释放请求的方式,达到同样的配置可以处理更大并发量的目的。

二. Nginx 详解

1.概述

Nginx (engine x) 是一个高性能的 HTTP 和

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值