美文网首页
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