我知道在Apache的prefork模块创build一个主进程和几个subprocess来处理连接,我的问题是:
每个prefork孩子每次处理一个连接还是处理一个请求 ? 如果它处理一个连接,这是否意味着每个新的连接都需要在队列中等待一个空闲subprocess来处理? 以及关于保持连接的说法?
此外,我有使用线程的工人mpm模块相同的问题?
每个prefork孩子每次处理一个连接还是处理一个请求?
每个子/线程处理一个连接(TCP连接)。
一旦连接closures,subprocess将等待另一个连接。 在一个连接上,可以发送0个,1个或多个请求(HTTP请求)。
如果客户端不发送请求,则根据您的configuration,日志中可能会有HTTP 408超时。
启用KeepAlive后,每个连接可以有多个HTTP请求,因为一旦提供了第一个请求,连接就不会closures。
在没有KeepAlive的情况下,有一个连接与一个请求,这就是为什么可能是问题。
每个新的连接需要等待队列中的一个空闲subprocess来处理?
是的,这就是为什么你要configurationApache有一些空闲的服务器/线程,所以新的连接不需要等待新的subprocess/线程创build。 如果没有足够的subprocess,将根据需要并根据configuration的限制创build新进程。
到目前为止,我自己的理解过程。