工作模型
Nginx主要使用了epoll网络I/O模型,能够处理大量连续的读写请求。Apache(2.4以前版本)所采用的select网络I/O模型的效率则非常低。
epoll模型和select模型的差别在哪?
我们想象一个场景:假设你是餐馆服务员,有客人来了,你引导客人入住,客人看菜单可能需要3分钟,在这3分钟里,你是站在旁边等还是先去做别的事?
这个客人点完餐之后,你是等这个客人的餐都上齐了再去服务其他客人还是在上每一盘菜的空隙都去服务别的客人?
select模型就相当于你从一个客人进门到吃完离开这段时间,都只服务这一个客人,不服务其他人。
而epoll则是你交错着同时服务多个客人。
很显然,epoll的效率高的多,请求越多时,差距越明显。
进程模型
nginx采用了master-worker进程模型。
master进程只有一个,并且master进程创建多个子进程(worker进程)处理实际的业务逻辑,而master进程本身仅仅负责nginx的管理工作,例如平滑重启,配置文件生效,转发信息给worker进程等。
工作流程如下: