zoukankan      html  css  js  c++  java
  • [Nginx] 事件模型

    Nginx事件模型

    异步非阻塞

    Nginx采取异步非阻塞的方式处理请求。

    处理请求流程:收到请求,建立连接,接收数据,发送数据。

    如果采用阻塞调用,会陷入内核等待,在单进程的nginx下这样cpu就会空闲,没法充分使用。

    采用非阻塞调用,会在事件没有准备好时,返回EAGAIN来通知,此时线程还可以做其他事情,然后再回来查看事件是否准备完成。这种情况下的消耗也比较大。

    异步非阻塞调用是一种机制,可以同时监控多个事件,调用他们是阻塞的,但是可以设置超时时间,在超时时间内,如果有事件处理好了,就返回。以epoll为例,当事件没有准备好时,放到epoll中,事件准备好了,就去处理它,只有当所有的事件都没准备好时,才会在epoll里面等待。这样就可以处理大量未完成的并发事件。

    线程只有一个,所以同时能处理的请求只有一个,只是在请求间不断地切换而已,切换也是因为事件未准备好而主动让出,没有任何代价。

  • 相关阅读:
    springboo 添加logback日志
    logback配置日志输出
    认知升级:提升理解层次的NLP思维框架
    2019第29周日
    《如何有效社交》晨读笔记
    控制论模型&心流模型&波模型
    数学中常见的思维模型
    分布式服务跟踪系统
    Spring Cloud Sleuth
    微服务调用跟踪
  • 原文地址:https://www.cnblogs.com/immjc/p/9156453.html
Copyright © 2011-2022 走看看