nginx处理Web请求机制解析
worker抢占机制
master进程fork了多个worker进程,worker进程如何和client连接呢?
多个worker抢一个client的时候,会有一个互斥锁(accept_mutex)和client是对应的
传统服务器事件处理
同步阻塞
nginx事件处理
nginx异步非阻塞,worker use epoll,linux的epoll模型,可以并发6万~8万的网络请求,和cpu相关,cpu越多,内存越大,甚至可以处理几十到几百万的并发,甚至可以到几亿的并发
worker默认并发数是1024,可以自己修改(nginx.conf文件中)
events {
# 默认使用epoll
use epoll;
# 每个worker允许连接客户端的最大连接数
worker_connections 1024;
}
nginx能承载高并发的原因,一是worker抢占机制,二是模型采用的是一部非阻塞的通信模式,即多路复用器