一、简介
一般情况下并发处理机制有三种:多进程、多线程,与异步机制。Nginx对于并发的处理同时采用了三种机制。当然,其异步机制使用的是异步非阻塞方式。
我们知道Nginx的进程分为两类:master进程与worker进程。每个master进程可以生成多个worker进程,所以其是多进程的。每个worker进程可以同时处理多个用户请求,每个用户请求会由一个线程来处理,所以其是多线程的。
那么,如何解释其“异步非阻塞”并发处理机制呢?
worker进程采用的就是epoll多路复用机制来对后端服务器进行处理的。当后端服务器返回结果后,后端服务器就会回调epoll多路复用器,由多路复用器对相应的worker进程进行通知。此时,worker进程就会挂起当前正在处理的事务,拿IO返回结果去响应客户端请求。响应完毕后,会再继续执行挂起的事务。这个过程就是“异步非阻塞”的。
二、master进程
master进程负责worker进程的生命周期,接受外部命令、解析perl脚本等。
三、worker进程
worker进程接受和处理客户端请求,每个用户请求有一个线程来处理,所以其是多线程的。