zoukankan      html  css  js  c++  java
  • nginx的工作原理和工作模式

    一、nginx的工作原理
    1.nginx采用了异步非阻塞的工作方式
    epoll模型:当有i/o事件产生时,epoll就会告诉进程哪个连接由i/o事件产生,然后进程就会处理这个事件。

    nginx配置use epoll后,以异步非阻塞的方式工作,能够处理百万计的并发连接

    2.处理过程:
    每进来一个请求,会有一个工作进程去处理,但不是全程进行处理,处理可以会发生阻塞的情况;

    比如:向后端服务器转发请求,那么这个处理的工作进程不会一直等待,它会在发送完请求后,注册一个事件等待后端服务器返回;
    此时,再有新的请求,这个worker就很快再按这种方式处理;
    而一旦后端服务器返回信息,就会触发这个事件,worker就会进行处理,这个请求才会接着往下走;

    通过这种<快速处理并快速释放请求>的方式,达到同样的配置可以处理更大并发的目的

    二、nginx的工作模式
    1.master-worker模式
    nginx启动成功后,会有一个master进程和至少一个worker进程;
    master进程负责处理系统信号、加载配置、管理worker进程

    worker进程负责处理具体的业务逻辑

    对外部来说,真正提供服务的时worker进程

    优点:
    稳定性高;一个worker进程挂掉后master进程会立即启动一个新的worker进程,保证worker进程数量不变,降低服务中断的概率;
    配合Linux的cpu亲和性的匹配中,可以充分利用多核cpu的优势,提升性能;
    处理信号、配置重新加载等可以做到尽可能不中断服务;

    2.单进程模式
    nginx只有一个进程,nginx的所有工作都由这个进程负责

    优点:可以很方便的利用gdb工具进行调试

    缺点:
    不支持平滑升级
    任何的信号处理都可以造成服务的中断
    进程挂掉后,在没有外部监控的情况下,无法重启服务
    生产环境中不会使用

    作者:ccku
    本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。如有问题或建议,请多多赐教,非常感谢。
  • 相关阅读:
    C#_WinForm接收命令行参数
    SQLite不支持的SQL语法总结
    Thirft框架介绍
    jquery获取复选框的值
    REST构架风格介绍:状态表述转移
    RESTful HTTP的实践infoQ
    C#如何在webBrowser1控件通过TagName,Name查找元素(没有ID时)遍历窗体元素
    Html TO Ubb and Ubb TO Html
    SQL 位运算
    Memcached真的过时了吗?【转帖】
  • 原文地址:https://www.cnblogs.com/ccku/p/13531081.html
Copyright © 2011-2022 走看看