美文网首页
java面试知识汇总--nginx高效原理

java面试知识汇总--nginx高效原理

作者: 爱编程的凯哥 | 来源:发表于2019-03-14 07:45 被阅读10次

目标

理解nginx高效原理

高效原因分析

  1. 多进程单线程模型,充分利用硬件资源,单线程减少上下文切换
  2. 非阻塞式io模型,减少上下文切换,减少阻塞io的资源利用率问题,实现单线程处理大量tcp连接(redis也采用类似架构)

一. 多进程单线程模型


官网架构

。NGINX有一个主进程(master process)(执行特权操作,如读取配置、绑定端口)和一系列工作进程(worker process)和辅助进程(helper process)。
nginx采用可预见式的进程模型,根据硬件资源开启工作进程

  1. 主进程执行特权操作,如读取配置和绑定端口,还负责创建子进程(下面的三种类型)。

  2. 缓存加载进程(cache loader process)在启动时运行,把基于磁盘的缓存(disk-based cache)加载到内存中,然后退出。对它的调度很谨慎,所以其资源需求很低。

  3. 缓存管理进程(cache manager process)周期性运行,并削减磁盘缓存(prunes entries from the disk caches),以使其保持在配置范围内。

  4. 工作进程(worker processes)才是执行所有实际任务的进程:处理网络连接、读取和写入内容到磁盘,与上游服务器通信等。默认配置: worker_processes auto,一个内核一个工作进程

二.非阻塞式io模型


官网

三 更新配置升级方式


image.png

更新NGINX的配置,是一个非常简单的、轻量级的、可靠的操作。运行nginx –s reload命令即可,该命令会检查磁盘上的配置,并给主进程发送一个SIGHUP信号。

当主进程接收到SIGHUP信号后,会做两件事:

1. 重新加载配置,fork一套新的工作进程。这些新的工作进程会立即开始接受连接和处理流量(traffic)(使用新的配置)。
2. 发出信号,通知旧的工作进程安静地退出。这些旧进程不会再接受新的连接了。只要它们处理的HTTP请求结束了,它们就会干净地关闭连接。一旦所有的连接都被关闭,工作进程也就退出了。

原文链接,本文为整理资料:https://www.cnblogs.com/chenjfblog/p/8715580.html

相关文章

网友评论

      本文标题:java面试知识汇总--nginx高效原理

      本文链接:https://www.haomeiwen.com/subject/vhequqtx.html