nginx处理Web请求机制解析

nginx处理Web请求机制解析

  • worker抢占机制
    • 传统服务器事件处理
    • nginx事件处理

worker抢占机制

master进程fork了多个worker进程,worker进程如何和client连接呢?
多个worker抢一个client的时候,会有一个互斥锁(accept_mutex)和client是对应的

fork
fork
fork
master
worker1
worker2
worker3
client
accept_mutex

传统服务器事件处理

fork
阻塞
阻塞
master
worker1
client1
client2
client3

同步阻塞

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抢占机制,二是模型采用的是一部非阻塞的通信模式,即多路复用器

你可能感兴趣的:(nginx)