apache – Nginx如何处理HTTP请求?

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

但是我没有得到Nginx使用的事件驱动设计。我读了一些关于事件驱动设计的基础。但我不明白这是如何使用nginx来处理Web请求。

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

最佳答案
Nginx使用Reactor模式。基本上,它是单线程的(但可以分叉几个进程来使用多个核心)。主事件循环等待OS发出准备事件的信号。该数据可用于从套接字读取,在该点将其读入缓冲器并处理。单线程可以非常有效地服务数万个同时连接(由于每个线程需要其自己的堆栈,因此每个连接的线程模型将在此失败,因为巨大的上下文切换开销以及大的存储器消耗) 。

转载注明原文:apache – Nginx如何处理HTTP请求? - 代码日志