worker抢占机制
如下图所示,如果有一个请求,各个work进程会进行争锁。谁抢到是谁的。需要注意Nginx 所有worker进程协同工作的关键(共享内存).
[accept_mutex的介绍]
当一个新连接到达时,如果激活了accept_mutex,那么多个Worker将以串行方式来处理,其中有一个Worker会被唤醒,其他的Worker继续保持休眠状态;如果没有激活accept_mutex,那么所有的Worker都会被唤醒,不过只有一个Worker能获取新连接,其它的Worker会重新进入休眠状态,这就是「惊群问题」。
异步非阻塞
nginx是异步非阻塞
在 Linux 下,Nginx 使用 epoll 的 I/O 多路复用模型
config 文件
events {
# 默认使用epoll
use epoll;
# 每个worker允许连接的最大数
worker_connections 1024;
}