欢迎访问 生活随笔!

凯发k8官方网

当前位置: 凯发k8官方网 > 运维知识 > nginx >内容正文

nginx

nginx 多进程模型是如何实现高并发的? -凯发k8官方网

发布时间:2025/1/21 nginx 32 豆豆
凯发k8官方网 收集整理的这篇文章主要介绍了 nginx 多进程模型是如何实现高并发的? 小编觉得挺不错的,现在分享给大家,帮大家做个参考.

进程数与并发数不存在很直接的关系。这取决取 server 采用的工作方式。如果一个 server 采用一个进程负责一
个 request 的方式,那么进程数就是并发数。那么显而易见的,就是会有很多进程在等待中。等什么?最多的应该是
等待网络传输。 
nginx 的异步非阻塞工作方式正是利用了这点等待的时间。在需要等待的时候,这些进程就空闲出来待命了。因
此表现为少数几个进程就解决了大量的并发问题。apache 是如何利用的呢,简单来说:同样的 4 个进程,如果采用
一个进程负责一个 request 的方式,那么,同时进来 4 个 request 之后,每个进程就负责其中一个,直至会话关闭。
期间,如果有第 5 个 request 进来了。就无法及时反应了,因为 4 个进程都没干完活呢,因此,一般有个调度进程,
每当新进来了一个 request,就新开个进程来处理。nginx 不这样,每进来一个 request,会有一个 worker 进程去
处理。但不是全程的处理,处理到什么程度呢?处理到可能发生阻塞的地方,比如向上游(后端)服务器转发 request,
并等待请求返回。那么,这个处理的 worker 不会这么傻等着,他会在发送完请求后,注册一个事件: “如果 upstream 
返回了,告诉我一声,我再接着干”。于是他就休息去了。此时,如果再有 request 进来,他就可以很快再按这种方
式处理。而一旦上游服务器返回了,就会触发这个事件, worker 才会来接手,这个request 才会接着往下走。 
由于 web server 的工作性质决定了每个 request 的大部份生命都是在网络传输中,实际上花费在 server机器
上的时间片不多。这是几个进程就解决高并发的秘密所在。web server 刚好属于网络 io 密集型应用,不算是计算密
集型。异步,非阻塞,使用 epoll,和大量细节处的优化。也正是 nginx 之所以然的技术基石。

与50位技术专家面对面20年技术见证,附赠技术全景图

总结

以上是凯发k8官方网为你收集整理的nginx 多进程模型是如何实现高并发的?的全部内容,希望文章能够帮你解决所遇到的问题。

如果觉得凯发k8官方网网站内容还不错,欢迎将凯发k8官方网推荐给好友。

网站地图