码迷,mamicode.com
首页 > 其他好文 > 详细

Nginx

时间:2014-12-21 10:19:53      阅读:194      评论:0      收藏:0      [点我收藏+]

标签:

1、Nginx启动后,会有一个master进程和多个worker进程,master进程主要用来管理worker进程。worker用来处理基本的网络事件。master主要管理哪些事呢?a、接收来自外界的信号;b、向各worker进程发送信号;c、监控worker进程状态;d、自动重启退出的worker进程。

2.当我们提供80端口的http服务时,一个连接请求过来,每个进程都有可能处理这个连接,怎么做到的呢?首先,每个worker进程都是从master进程fork过来,在master进程里面,先建立好需要listen的socket(listenfd)之后,然后再fork出多个worker进程。所有worker进程的listenfd会在新连接到来时变得可读,为保证只有一个进程处理该连接,所有worker进程在注册listenfd读事件前抢accept_mutex,抢到互斥锁的那个进程注册listenfd读事件,在读事件里调用accept接受该连接。当一个worker进程在accept这个连接之后,就开始读取请求,解析请求,处理请求,产生数据后,再返回给客户端,最后才断开连接,这样一个完整的请求就是这样的了。我们可以看到,一个请求,完全由worker进程来处理,而且只在一个worker进程中处理。

Nginx

标签:

原文地址:http://www.cnblogs.com/shunliu-java/p/4176219.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!