到目前为止,我们一共提到Nginx服务器的三大类进程:一类是主进程,另一类是由主进程生成的工作进程,还有刚才提到的用于为缓存文件建立索引的进程。
1. 主进程(Master Process)
Nginx服务器启动时运行的主要进程。它的主要功能是与外界通信和对内部其他进程进行管理,具体来说有以下几点:
■ 读取Nginx配置文件并验证其有效性和正确性。
■ 建立、绑定和关闭Socket。
■ 按照配置生成、管理和结束工作进程。
■ 接收外界指令,比如重启、升级及退出服务器等指令。
■ 不中断服务,实现平滑重启,应用新配置。
■ 不中断服务,实现平滑升级,升级失败进行回滚处理。
■ 开启日志文件,获取文件描述符。
■ 编译和处理Perl脚本。
2. 工作进程(Worker Process)
由主进程生成,生成数量可以通过Nginx配置文件指定,正常情况下生存于主进程的整个生命周期。该进程的主要工作有以下几项:
■ 接收客户端请求。
■ 将请求依次送入各个功能模块进行过滤处理。
■ IO调用,获取响应数据。
■ 与后端服务器通信,接收后端服务器处理结果。
■ 数据缓存,访问缓存索引、查询和调用缓存数据。
■ 发送请求结果,响应客户端请求。
■ 接收主程序指令,比如重启、升级和退出等指令。
工作进程完成的工作还有很多,我们在这里列出了主要的几项。从这些工作中可以看到,该进程是Nginx服务器提供Web服务、处理客户端请求的主要进程,完成了Nginx服务器的主体工作。因此,在实际使用中,作为服务器管理者,我们应该重点监视工作进程的运行状态,保证Nginx服务器对外提供稳定的Web服务。
3. 缓存索引重建及管理进程(Cache Loader & Cache Manager)
图3.1中的Cache模块,主要由缓存索引重建(Cache Loader)和缓存索引管理(Cache Manager)两类进程完成工作。缓存索引重建进程是在Nginx服务启动一段时间之后(默认是1分钟)由主进程生成,在缓存元数据重建完成后就自动退出;缓存索引管理进程一般存在于主进程的整个生命周期,负责对缓存索引进行管理。
缓存索引重建进程完成的主要工作是,根据本地磁盘上的缓存文件在内存中建立索引元数据库。该进程启动后,对本地磁盘上存放缓存文件的目录结构进行扫描,检查内存中已有的缓存元数据是否正确,并更新索引元数据库。
缓存索引管理进程主要负责在索引元数据更新完成后,对元数据是否过期做出判断。
这两个进程维护的内存索引元数据库,为工作进程对缓存数据的快速查询提供了便利。