ICode9

精准搜索请尝试: 精确搜索
首页 > 系统相关> 文章详细

apache和nginx的区别

2019-10-29 09:02:23  阅读:220  来源: 互联网

标签:mpm 请求 区别 处理 MPM nginx 线程 apache 进程


apache / nginx都是web应用服务(web容器)

 

一:Apache拥有丰富的模块组件支持,稳定性强,BUG少,动态内容处理强。

处理请求方式:异步阻塞型

1:Apache提供一系列多重处理模块,通过这些多重处理模块来使用操作系统的资源,对进程和线程池进行管理,控制处理用户请求。

2:Apache提供了三种多重处理模块:mpm_prefork、mpm_worker、mpm_envent

参考文献:http://www.cnblogs.com/fnng/archive/2012/11/20/2779977.html

                  https://blog.51cto.com/balich/1743798

1):mpm_prefork:成熟稳定兼容性好,不适合处理高并发

  

默认的工作模式是Prefork MPM,这种模式采用的是预派生子进程方式,用单独的子进程来处理请求,子进程间互相独立,互不影响,大大的提高了稳定性,每个子进程中只有一个线程,在一个时间点内,只能处理一个请求,进程都会占用内存,所以消耗系统资源过高;

2):mpm_worker:适合处理高并发。但是处理长连接(keep-alive)时比较差,只能等超时释放

  

Worker MPM是Apche 2.0版本中全新的支持多进程多线程混合模型的MPM,由于使用线程来处理HTTP请求,所以效率非常高,而对系统的开销也相对较低,Worker MPM也是基于多进程的,但是每个进程会生成多个线程,由线程来处理请求,这样可以保证多线程可以获得进程的稳定性;

3):mpm_event:worker升级版,会分配专门的管理线程解决长连接资源浪费

 

这个是 Apache中最新的模式,在现在版本里的已经是稳定可用的模式。它和 worker模式很像,最大的区别在于,它解决了 keep-alive 场景下 ,长期被占用的线程的资源浪费问题(某些线程因为被keep-alive,挂在那里等待,中间几乎没有请求过来,一直等到超时)。

event MPM中,会有一个专门的线程来管理这些 keep-alive 类型的线程,当有真实请求过来的时候,将请求传递给服务线程,执行完毕后,又允许它释放。这样,一个线程就能处理几个请求了,实现了异步非阻塞。

event MPM在遇到某些不兼容的模块时,会失效,将会回退到worker模式,一个工作线程处理一个请求。官方自带的模块,全部是支持event MPM的。

 

二:Nginx轻量级,占用资源少,负载均衡,高并发处理强,静态内容处理高效。

处理请求方式:异步非阻塞型

1:Nginx是通过异步的、非阻塞的、事件驱动的方式在实现的。Nginx的工作进程是单线程的,每个线程可以异步的处理大量的用户请求。

 

 

三:比较:

nginx比apache:更轻量,占用资源少,抗高并发,处理静态页面性能更好

apahce比nginx:更稳定,模块多,处理动态页面更好

 

四:核心区别

apache是同步多进程模型,一个连接对应一个进程

nginx是异步的,多个连接(万级别)可以对应一个进程

 

标签:mpm,请求,区别,处理,MPM,nginx,线程,apache,进程
来源: https://www.cnblogs.com/iguide/p/11756707.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有