Nginx初探

来源:互联网 发布:c语言编写俄罗斯方块 编辑:程序博客网 时间:2024/05/18 15:26

Nginx初探

​ 做后台开发工作,免不了和各种服务器打交道,而对于服务器而言,种类太多,就找一个比较常见的Web服务器来了解一下吧,这里自然要首选Nginx,Nginx的高性能与其架构设计有很大关系,好好学习一下,对于后台开发中的许多问题还是有借鉴意义的。先来了解一下Nginx的大致结构吧:

​ Nginx在启动后,在Unix/Linux中以daemon形式在后台运行,后台进程包括一个Master进程和多个Worker进程,可以手动关闭Nginx的后台模式,并且通过配置,让Nginx取消Master进程转而以单进程方式运行,不过这样只用于调试时。Nginx同时支持多进程模式和多线程模式,主流配置是选择多进程模式,对于Nginx的学习也就主要集中于多进程模式吧!

​ Nginx启动后,包含一个Master进程和多个Worker进程。Master进程主要用于管理Worker进程。大致功能包含:接收来自外界的信号,向各个Worker进程发送信号,管理监控Worker进程的状态,出现异常退出的Worker进程则要自动重启新的Worker进程。基本的网络事件,则放在Worker进程中处理。Worker进程之间是对等关系,共同竞争来自于客户端的请求,各进程之间独立。一个请求仅在一个进程中进行处理,一个Worker进程并不处理其他Worker进程的请求。Worker进程的数量是可以设置的,一般都设置为和CPU核数相同,这和Nginx的进程模型和事件处理模型是有很大关系的。先来看看Nginx的进程模型:
这里写图片描述
​ Master进程接收外界传入的信号,再根据信号的不同去做不同的事情。要控制Nginx,只要控制Master进程即可。对于老版本,修改了conf文件之后,重新加载配置或者其他需求需要重启Nginx则需要向Master进程发送信号,使用kill -HUP pid,Nginx此时从容地重启,服务是不会中断的。Master进程在收到HUP信号后,首先会重新加载配置文件,再启动新的Worker进程,并向所有老的Worker进程发送信号,通知它们不必再接收新的请求,将目前尚未处理完的请求处理完之后,就退出。

0 0