Nginx如何处理HTTP请求?

我理解Apache使用的线程驱动:每个连接打开一个线程,当发送响应时,线程closures,释放其他线程的资源)。

但是我没有得到Nginx使用的事件驱动devise。 我已经阅读了关于事件驱动devise的一些基础知识..但是我不明白nginx如何使用它来处理web请求。

我在哪里可以阅读和理解Nginx如何以事件驱动的方式处理连接,所以我得到为什么它更好,而不是接受基于事件的devise比线程驱动的devise更好。

Nginx使用Reactor模式。 基本上,它是单线程的(但可以分叉几个进程来利用多个内核)。 主事件循环等待操作系统发出一个准备就绪事件的信号 – 例如,数据可以从套接字中读取,然后读入缓冲区并处理。 单线程可以非常有效地为成千上万的同时连接提供服务(由于巨大的上下文切换开销以及大内存消耗,每个连接线程模型都会失败,因为每个线程都需要自己的堆栈) 。