似乎在等待客户端数据或输出缓冲区已满时,nginx工作线程可以处理其他连接:
https://www.nginx.com/blog/inside-nginx-how-we-designed-for-performance-scale/
但是它们在等待PHP生成输出时是否处理其他连接?
是否还有其他文档说明nginx如何在内部工作?
好吧,对于几乎所有网络应用程序,每个请求/响应对都代表其自己的线程(或者派生一个进程,而不是在现有进程中运行新线程),因此,可以的是,多个线程可以呈现其响应的输出,而其他线程处于不同的状态(可能正在接收,也许正在发送响应等)。
—
Frank Thomas
意味着请求PHP产生输出的同一线程可以同时进行其他连接?
—
wutzebaer 2015年
不,每个新请求都会为该请求及其关联的responsel创建一个新线程(或分叉的进程,我认为这是NginX方法),并将在构造前一个响应的同时运行它们。CPU执行指令线程,因此一个线程一次只能做一件事。进程可以由多个线程在不同的CPU /内核上并行工作组成,但是每个线程一次只能做一件事。只要并行执行操作,就会有多个线程或多个进程(或两者都有)。
—
Frank Thomas
您是否读过有关Nginx的信息?nginx的主要功能是使用单个线程处理多个请求
—
wutzebaer 2015年
现有的CPU都无法做到这一点。你误会了。
—
Frank Thomas