当前位置: > Linux服务器 > nginx >

Nginx简介、配置与运用

时间:2015-10-06 22:46来源:linux.it.net.cn 作者:IT

nginx采用多进程的模式,nginx在启动后,会有一个master进程和多个worker进程。master进程主要用来管理worker进程,包含:接收来自外界的信号,向各worker进程发送信号,监控worker进程的运行状态,当worker进程退出后(异常情况下),会自动重新启动新的worker进程。而基本的网络事件,则是放在worker进程中来处理了。多个worker进程之间是对等的,他们同等竞争来自客户端的请求,各进程互相之间是独立的。一个请求,只可能在一个worker进程中处理,一个worker进程,不可能处理其它进程的请求。worker进程的个数是可以设置的,一般我们会设置与机器cpu核数一致,这里面的原因与nginx的进程模型以及事件处理模型是分不开的。

 

nginx进程模型:

     

 

nginx采用异步非阻塞的方式来处理请求(网络事件):

     首先,请求过来,要建立连接,然后再接受数据,再发送数据。具体到系统底层,就是读写事件,而当读写事件没有准备好时,必然不可操作。

异步非阻塞的事件处理机制,具体到系统调用就是像select/poll/epoll/kqueue这样的系统调用。它们提供一种机制,

让你可以同时监控多个事件,调用它们是阻塞的,但可以设置超时时间,在超时时间之内,如果有时间准备好了,就返回。

拿epoll为例,当事件没准备好时,放到epoll里面,事件准备好了,我们就去读写,当读写返回EAGAIN时,我们将它再次加入到epoll里面。

这样,只要有事件准备好了,我们就去处理它,只有当所有事件都没准备好时,才在epoll里面等着。这样,我们就可以并发处理大量的并发了。

     推荐设置worker的个数为cpu的核数,在这里就很容易理解了,更多的worker数,只会导致进程来竞争cpu资源从而带来不必要的上下文切换。

(责任编辑:IT)
------分隔线----------------------------
栏目列表
推荐内容