[读书笔记]初探nginx架构1_进程模型
时间:2021-07-01 10:21:17
帮助过:6人阅读
原文:http://tengine.taobao.org/book/chapter_02.html%20ngx
nginx启动后进程后台包含一个master进程与多个worker进程。
(终端nginx命令与master交互)
master进程用来管理worker进程包含
- 接收来自外界的信号
- 向各worker进程发送信号
- 监控worker进程的运行状态
- 当worker进程退出后(异常情况下),会自动重新启动新的worker进程
基本的网络事件放在worker进程中来处理。多个worker进程之间是对等的,他们同等竞争来自客户端的请求,各进程互相之间是独立的。一个请求,只可能在一个worker进程中处理,一个worker进程,不可能处理其它进程的请求。
处理流程
- 每个worker进程都是从master进程fork过来,在master进程里面,先建立好需要listen的socket(listenfd)之后,然后再fork出多个worker进程
- 所有worker进程的listenfd会在新连接到来时变得可读,为保证只有一个进程处理该连接,所有worker进程在注册listenfd读事件前抢accept_mutex
- 抢到互斥锁的那个进程注册listenfd读事件,在读事件里调用accept接受该连接当一个worker进程在accept这个连接之后,就开始读取请求,解析请求,处理请求,产生数据后,再返回给客户端,最后才断开连接
该进程模型好处
- 对于每个worker进程来说,独立的进程,不需要加锁,所以省掉了锁带来的开销
- 在编程以及问题查找时,也会方便很多
- 采用独立的进程,可以让互相之间不会影响,一个进程退出后,其它进程还在工作,服务不会中断,master进程则很快启动新的worker进程
').addClass('pre-numbering').hide();
$(this).addClass('has-numbering').parent().append($numbering);
for (i = 1; i <= lines; i++) {
$numbering.append($('
').text(i));
};
$numbering.fadeIn(1700);
});
});
以上就介绍了[读书笔记]初探nginx架构 1_进程模型,包括了方面的内容,希望对PHP教程有兴趣的朋友有所帮助。