一个nginx worker进程是同时处理两个请求还是一个接一个地处理?

|   关于过滤器的真正酷的部分   链是每个过滤器不等待   前一个过滤器完成;它   可以处理先前的过滤器   生产时的输出,有点   像Unix管道一样。 (从这里) 我猜上面在每个过滤器的末尾都在谈论这样的代码:
if (!chain_contains_last_buffer)
    return ngx_http_next_body_filter(r, in);
就是说,nginx一对一地链接过滤器。 但是,由于它位于每个过滤器的末尾,因此必须等到当前过滤器完成为止。我看不到nginx如何赚到ѭ1。 因此,以上是关于nginx过滤器的并发性,接下来是关于nginx请求处理的并发性: 我们知道nginx使用
epoll
处理请求:
events = epoll_wait(ep, event_list, (int) nevents, timer);
for (i = 0; i < events; i++) {
   ...
   rev->handler(rev);
}
使用上面的代码,我不认为nginx可以同时处理两个请求,它只能一个接一个地处理(每个
handler
足够快地完成其工作,因此下一个请求很快就会得到处理),对吗? 还是我缺少任何陷阱?     
已邀请:
        有一种测试方法。编写一个休眠的过滤器,并在过滤器链中使用它。然后测试以查看在先前的请求处于休眠状态时是否可以让nginx满足请求。 然后再次运行测试,但是这次不要让过滤器进入睡眠状态,请使用选择超时使其等待,如下所示:
/* wait 1.5 secs */
struct timeval tv;
tv.tv_sec = 1;
tv.tv_usec = 500000;
select(0, NULL, NULL, NULL, &tv);
    

要回复问题请先登录注册