今天来学习这张图片
1.nginx在启动后,会有一个master进程和多个worker进程。master进程主要用来管理worker进程。
2.master进程:
(1)接受外界的信号,向各worker进程发送信号,
(2)监控worker进程的运行状态,当worker进程退出后,会自动重新启动新的worker进程。
3.worker进程:
(1)多个worker进程之间是对等的,他们同等竞争来自客户端的请求,各进程之间是独立的。
(2)一个请求,只可能在一个work进程中处理,一个worker进程,不可能处理其他进程的请求。
(3)worker进程的个数是可以设置的。一般我们会设置与机器cpu核数一致,
4.nginx从容地重启
(1)命令 kill-HUP pid
(2)何为从容地重启:服务不中断。
(3)nginx的处理流程:
a.master进程接收信号,重新加载配置文件
b.重新启动新的进程,并向所有老的进程发送信号,告诉他们退休了,
c.新的进程开始接收消息,而老进程收到master进程发送信号就不再收新的请求。
5.worker进程如何处理消息的
(1)每个worker进程都可以去accept这个socket,sokcet不是同一个,但是都监控着同一个ip地址与端口,
(扩展)socket同时监控一个ip和端口,有一个成功,其他失败这种现象称为惊群现象。
(2)nginx提供了一把锁accept_mutex,用来给accept一把共享锁。默认是打开的
6.nginx采用进程模型的好处
1.对于每个worker进程来说,独立的进程,不需要加锁,省掉了锁的开销
2.编程以及查问题上方便
3.采用独立进程,可以互相之间不影响,服务不中断。降低风险
7.nginx如何处理事件
重点记住:采用异步非阻塞的方式来处理的事件
流程:请求过来,建立链接接收数据,再发送数据,具体底层就是读写事件,
8.nginx效率高的主要原因
1,异步非阻赛,不用等待
2.减少了不必要的上下文切换
3.不需要创建线程
网友评论