简单来讲,就是异步,非阻塞,使用了epoll和大量的底层代码优化。 稍微详细一点展开的话,就是nginx的特殊进程模型和事件模型的设计。 进程模型nginx采用一个master进程,多个woker进程的模式。
事件模型nginx是异步非阻塞的。 每进来一个request,会有一个worker进程去处理。但不是全程的处理,处理到什么程度呢?处理到可能发生阻塞的地方,比如向上游(后端)服务器转发request,并等待请求返回。那么,这个处理的worker不会这么傻等着,他会在发送完请求后,注册一个事件:“如果upstream返回了,告诉我一声,我再接着干”。于是他就休息去了。此时,如果再有request 进来,他就可以很快再按这种方式处理。而一旦上游服务器返回了,就会触发这个事件,worker才会来接手,这个request才会接着往下走。 web server的工作性质决定了每个request的大部份生命都是在网络传输中,实际上花费在server机器上的时间片不多。这是几个进程就解决高并发的秘密所在。 更多Nginx相关技术文章,请访问Nginx教程栏目进行学习! (责任编辑:admin) |