Nginx的进程与并发分析

原因

Linux操作系统作业,要求阅读一个中型程序源码,如Apache、Nginx等,写一份阅读报告,给出其运行机制,及运行机制对应关键代码。

需要给出一定细节:配置参数的对运行的影响,相应的源码位置等。

作业提交包括:一份报告。

初步了解

Nginx的工作模式

Single模式,Master-Worker模式

Single模式

只有一个工作进程,不适合生产环境

Master-Worker模式

Nginx通常工作在Master-Worker模式下,Master与Worker都是单线程的进程,用户可以通过增加Worker进程的数目提高多核CPU的利用率。同时,这个模型每个进程仅有一个线程,因此多线程时需要考虑数据的保护问题。

此外,一个master进程管理站个或者多个worker进程,基本的事件处理都是放在worker中,master负责一些全局初始化,以及对worker的管理。

Hda3510685aff4764bb0ad5ee3d1e2017W

Master 进程

NGINX的master进程,负责解析配置文件,并启动其他角色的进程,如启动worker,cache manager。

启动完成其他进程之后,master进程仅起监视作用(相当与monitor角色),后面用户可以通过singaller角色的nginx向master发命令, master再通知它创建起来的其他进程。

Worker 进程

worker进程是实际服务客户的进程。包括接受新连接(accept),相应连接上的消息(read/write).

Singaller 进程

singaller进程仅仅是一个向master进程发送信号的工具进程。 通过向master发生特定消息,能够让: * master/worker完成当前服务后,正常退出。 * master进程重新加载配置文件,或者重启worker。 * 重新打开log 文件。

Cache manager

可以做 HTTP、文件缓存,即对同一个静态文件的请求进行缓存。