【web】【nginx】快速认识Nginx服务器

举报
huahua.Dr 发表于 2022/09/29 22:44:12 2022/09/29
【摘要】 一、什么是NginxNginx是一个轻量级、高性能的HTTP和反向代理web服务器,同时也是一个 IMAP/POP3/SMTP 代理服务器二、Nginx为什么存在相对于大众熟悉的Apache服务器,也是web服务器,使用的也比较广泛,Nginx为什么能存活呢?主要有以下方面:(1)并发量:Apache服务器因为使用的进程模式而不适合大规模系统,经受不住高并发量(2)性能稳定性:其他的HTTP...

一、什么是Nginx

Nginx是一个轻量级、高性能的HTTP和反向代理web服务器,同时也是一个 IMAP/POP3/SMTP 代理服务器

二、Nginx为什么存在

相对于大众熟悉的Apache服务器,也是web服务器,使用的也比较广泛,Nginx为什么能存活呢?主要有以下方面:

(1)并发量:Apache服务器因为使用的进程模式而不适合大规模系统,经受不住高并发量

(2)性能稳定性:其他的HTTP服务器稳定性不够强,会因连接数的峰值而变得缓慢,甚至失去响应,重启服务器

三、Nginx的特点

(1)处理静态文件,索引文件以及自动索引;打开文件描述符缓冲

(2)无缓存的反向代理加速

(3)FastCGI,简单的负载均衡和容错

(4)模块化的结构,模块拓展方便

(5)支持 SSL 和 TLSSNI

(6)支持热部署

(7)性能稳定性强,支持高并发,占用内存小;支持内核poll模型

(8)采用master-slave模型,I/O阻塞延迟小

四、基本架构及工作原理

1、基本架构

nginx 是由一个 master 管理进程,多个 worker 进程处理工作的多进程模型。

master 负责管理 worker 进程,worker 进程负责处理网络事件。整个框架被设计为一种依赖事件驱动、异步、非阻塞的模式。

如此设计的优点:

  • 1.可以充分利用多核机器,增强并发处理能力。
  • 2.多 worker 间可以实现负载均衡
  • 3.Master 监控并统一管理 worker 行为。在 worker 异常后,可以主动拉起 worker 进程,从而提升了系统的可靠性。并且由 Master 进程控制服务运行中的程序升级、配置项修改等操作,从而增强了整体的动态可扩展与热更的能力。

2、工作原理

Nginx采用多进程和多线程的工作模式(进程模型和事件模型),默认就是多进程工作模式。

1)Nginx的多进程模式(进程模型)

是指一个master进程和多个worker进程,master进程管理worker进程,多个worker进程相互之间是独立的、对等的,他们同等竞争客户端的请求,一个请求只能由一个worker进程处理;worker进程的个数是可以设置的,一般设置worker个数与cpu的核数一致而不必要去竞争cpu资源,减少cpu间的上下文切换。

其工作方式是:

当一个连接请求进来,master进程fork创建worker进程,并建立listensocket(注册listenfd读事件),为了保证一个请求只有一个worker进程在处理,在所有worker进程注册listenfd读事件之前都可以去抢占accept_mutex互斥锁,抢到该互斥锁的worker进程就开始注册lisenfd读事件,并在读事件中调用accept方法接受该请求连接,当这个worker进程在accept这个连接之后,就开始读取请求、解析请求、处理请求、响应请求,返回给客户端连接,最后断开连接。

其好处是:

1)每个worker进程都是独立进程,不需要加锁,减少了锁带来的开销。

2)独立worker进程,相互之间不会影响,一个worker进程退出后,其他worker进程还在工作,服务不会中断,master可以快速启动一个新的worker进程,降低风险。

worker 
Ng 
ÆQ.orker 
master 
woker 
workeriæ 
worker 
worker 
woker 
woker

w 。 rke 「 
accept 
*listenfd 
*Raccept**


2)Nginx的多线程模式(事件模型)

Nginx采用的是异步非阻塞的方式来处理请求的,也就是说在一个worker进程中,可以同时处理成千上万个请求,并不是同时并行处理多个请求,只有一个进程,同一时间只能处理一个请求,只是并发请求的时候,不断的切换未处理完的请求,切换也是因为异步事件还没有准备好,而主动让出来给其他的请求,这里的切换是没有任何代价的,可以充分的利用cpu的资源,占用的内存也很小。可以理解为循环处理多个准备好的事件。这就是Nginx高性能的原因。

Nginx事件包括有:

1)网络事件:就是上面所说的异步非阻塞方式处理的请求事件

2)信号:这种信号只要是Nginx在工作中的特殊处理,这些信号会中断程序当前的运行,在改变状态后,继续执行。

3)定时器:在网络事件没有准备好的时候可以进入超时设置,在处理事件的回调函数时,通常做的第一件事情就是判断超时,然后在去处理网络事件。

 

【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息, 否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。