Nginx的进程与并发分析
原因
Linux操作系统作业,要求阅读一个中型程序源码,如Apache、Nginx等,写一份阅读报告,给出其运行机制,及运行机制对应关键代码。
需要给出一定细节:配置参数的对运行的影响,相应的源码位置等。
作业提交包括:一份报告。
初步了解
Nginx的工作模式
Single模式,Master-Worker模式
Single模式
只有一个工作进程,不适合生产环境
Master-Worker模式
Nginx通常工作在Master-Worker模式下,Master与Worker都是单线程的进程,用户可以通过增加Worker进程的数目提高多核CPU的利用率。同时,这个模型每个进程仅有一个线程,因此多线程时需要考虑数据的保护问题。
此外,一个master进程管理站个或者多个worker进程,基本的事件处理都是放在worker中,master负责一些全局初始化,以及对worker的管理。
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、文件缓存,即对同一个静态文件的请求进行缓存。