关于Nginx的那些事:初探

       Nginx在Unix系统中默认会以daemon守护进程形式在后台运行,并且后台进程包含一个master进程和多个worker进程。
       我们可以手动关掉后台模式,在前台运行,也可以设置取消master进程,以单进程形式运行,当然Nginx也支持多线程形式运行,不过主流的方式还是以多进程运行为主。

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

       在Nginx启动后,如果我们要操作Nginx,要怎么做呢?比如重启或者停止Nginx,我们可以通过命令来实现:./nginx -s reload,就是来重启Nginx,./nginx -s stop,就是来停止Nginx的运行。
       命令很简单,但是他的内部是怎么实现的呢?以重启Nginx为例,上面说过,master是用来管理worker的,所以当master进程在接到信号后,会先重新加载配置文件,然后再启动新的worker进程,并向所有老的worker进程发送信号,告诉他们可以光荣退休了。新的worker在启动后,就开始接收新的请求,而老的worker在收到来自master的信号后,就不再接收新的请求,并且在当前进程中的所有未处理完的请求处理完成后,再退出。

理论有点多,还是直接来实际的吧,下一篇直接来学习一下怎么配置Nginx吧,有兴趣的话可以看一下下面的参考链接

参考链接:Nginx开发从入门到精通

猜你喜欢

转载自blog.csdn.net/hng1992/article/details/88666423