NGNIX使用epoll通知来了解套接字上是否有数据要读取。我们假设: 有两个请求到服务器。 nginx的是notificated了解这个两个请求,并且开始:单线程NGINX如何处理如此多的连接?
接收第一请求
解析IST头
检查boudary(车身尺寸)
发送向上游服务器的第一请求
等
nginx是单线程的,只能同时执行一个操作。
但第二个请求会发生什么?
nginx在解析第一个请求时是否收到第二个请求?
或者在第一次完成后开始处理第二个请求?
或其他我不明白的东西。
如果1.是正确的比我不明白如何在一个单一的线程内是可能的。
如果2.是正确的比nginx怎么会这么快?因为nginx会按顺序处理所有传入的请求。在任何时候,只有一个请求处理是可能的。
请帮我理解。 谢谢
可能相关:unix套接字比使用TCP更慢。另一件事:nginx是单线程的,但创建的工作人员很少,默认情况下4,你的问题是关于一个特定的工人内部发生了什么? –
请参阅我的答案以获得解释:http://stackoverflow.com/a/19324665/362536 – Brad