19年第42周:Ngnix-多进程和Apache的比较

一、简介

NOTE:Nginx 通过异步非阻塞的事件处理机制实现高并发。Apache 每个请求独占一个线程,非常消耗系统资源。
NOTE:事件驱动适合于IO密集型服务(Nginx),多进程或线程适合于CPU密集型服务(Apache),所以Nginx适合做反向代理,而非web服务器使用。

Nginx基本架构模型

NOTE: 接口设计, 所有的模块都遵循着同样的ngx_module_t接口设计规范


19年第42周:Ngnix-多进程和Apache的比较_第1张图片
image.png

Nginx核心进程模型

NOTE: Nginx适合处理IO密集型服务,作为反向代理服务器,更多的是请求调度。


19年第42周:Ngnix-多进程和Apache的比较_第2张图片
进程模型

二、Nginx与Apache对于高并发处理上的区别

Apache

对于Apache,每个请求都会独占一个工作线程,当并发数到达几千时,就同时有几千的线程在处理请求了。这对于操作系统来说,占用的内存非常大,线程的上下文切换带来的cpu开销也很大,性能就难以上去,同时这些开销是完全没有意义的。

Nginx

对于Nginx来讲,一个进程只有一个主线程,通过异步非阻塞的事件处理机制,实现了循环处理多个准备好的事件,从而实现轻量级和高并发。

三、参考

  • Ngnix的基本学习-多进程和Apache的比较

你可能感兴趣的:(19年第42周:Ngnix-多进程和Apache的比较)