Apache 工作模式详解
Apache 工作模式详解
Apache 2.X 支持插入式并行处理模块,称为多路处理模块(MPM)。在编译apache时必须选择也只能选择一个MPM,对类UNIX系统,有几个不同的MPM可供选择,它们会影响到apache的速度和可伸缩性。
Apache启动会通过指定IP监听PID端口 会开通过主进程开启多个子进程 或多线程客户端通过IP访问到Apache监听端口 tcp请求资源,apche会把请求转交给子进程处理,获取资源,当客户端请求完毕,进程会演变为将死状态,请求主进程将线程或子进程杀死,释放内存,如果主进程忙碌没有杀死,它就会演变为僵尸进程,消耗内存资源并不断向主进程发起请求将它杀死。
Aapache 处理请求流程
Prefork MPM
prefork工作原理:prefork会创建多个子进程每个子进程处理一个请求(默认5个),它的特点在于域派生功能,当请求数量大于开启的子进程数量时就会创建多个子进程最多每秒32个,最大并发链接伐值是自定义的。请求客户端减少后系统就删除多余的子进程。
优点:
1、pfrefork稳定性比较强。每个子进程都会独立处理对应的单个请,如果其中一个请求出现问题就不会影响到其他请求。
2、Prefork在所有情况下都很安全,对运行非线程安全(non-thread-safe)模式的软件如PHP,它是唯一的安全选择。
缺点:
1、Prefork每一个请求都会产生一个新的进程,导致系统资源(尤其是内存)消耗的很快,一旦并发量较大的时候,大量的Apache进程会占用巨大的内存空间。
Worker MPM
worker工作原理:worker创建多个子进程每个子进程下会创建多个线程,它的特点在于处理多个请求数量,每个子进程通过线程处理多个请求。线程本身没有内存,多个线程使用的是一个子进程的内存。
优点:
1、worker多线程模式,可以处理更多的并发请求。
2、worker使用的内存资源更小,对系统的开销更小。
缺点:
1、worker处理多个请求在一个子进程内,如果一个线程出现问题会连带其他线程,稳定性不强。
2、资源争夺,多个线程访问一个子进程的内存空间 。可通过锁文件机制解决。
Event MPM
以上两种稳定的MPM方式在非常繁忙的服务器应用下都有些不足。尽管HTTP的Keepalive方式能减少TCP连接数量和网络负载,但是 Keepalive需要和服务进程或者线程绑定,这就导致一个繁忙的服务器会耗光所有的线程。 Event MPM是解决这个问题的一种新模型,它把服务进程从连接中分离出来。在服务器处理速度很快,同时具有非常高的点击率时,可用的线程数量就是关键的资源限 制,此时Event MPM方式是最有效的。Event MPM可以用来处理更高负载。值得注意的是,Event MPM不能在安全HTTP(HTTPS)访问下工作。
优点:
1、处理更高的负载请求,不需要keepalive建立链接。
缺点:
1、不能在安全HTTPS访问下工作。
Apache 工作模式详解的更多相关文章
- ST MCU_GPIO的八种工作模式详解。
补充: N.P型的区别,就是一个为正电压启动(NMOS),一个为负电压启动(PMOS) GPIO的八种工作模式详解 浮空输入_IN_FLOATING带上拉输入_IPU带下拉输入_IPD模拟输入_AIN ...
- apache两种工作模式详解
prefork模式 这个多路处理模块(MPM)实现了一个非线程型的.预派生的web服务器,它的工作方式类似于Apache 1.3.它适合于没有线程安全库,需要避免线程兼容性问题的系统.它是要求将每个请 ...
- Apache三种工作模式详解
Apache HTTP服务器被设计为一个强大的.灵活的能够在多种平台以及不同环境下工作的服务器.这种模块化的设计就叫做“多进程处理模块”(Multi-Processing Module,MPM),也叫 ...
- 1. 企业级调度器LVS初识、工作模式详解
想学习更多相关知识请看博主的个人博客 1. LVS官网 LVS 时全球最流程的四层负载均衡开源软件. LVS 官网:http://www.linuxvirtualserver.org/ 2.Linux ...
- RabbitMQ从零到集群高可用(.NetCore5.0) - RabbitMQ简介和六种工作模式详解
一.RabbitMQ简介 是一个开源的消息代理和队列服务器,用来通过普通协议在完全不同的应用之间共享数据,RabbitMQ是使用Erlang(高并发语言)语言来编写的,并且RabbitMQ是基于AMQ ...
- org.apache.log4j.Logger详解
org.apache.log4j.Logger 详解 1. 概述 1.1. 背景 在应用程序中添加日志记录总的来说基于三个目的 :监视代码中变量的变化情况,周期性的记录到文件中供其他应用进行统计分析工 ...
- org.apache.log4j.Logger 详解
org.apache.log4j.Logger 详解 1. 概述 1.1. 背景 在应用程序中添加日志记录总的来说基于三个目的 :监视代码中变量的变化情况,周期性的记录到文件中供其他应用进行统计 ...
- log4j-over-slf4j工作原理详解
log4j-over-slf4j工作原理详解 摘自:https://blog.csdn.net/john1337/article/details/76152906 置顶 2017年07月26日 17: ...
- Apache POI使用详解
Apache POI使用详解 1.POI结构与常用类 (1)POI介绍 Apache POI是Apache软件基金会的开源项目,POI提供API给Java程序对Microsoft Office格式档案 ...
随机推荐
- PHP手机号码归属地查询API接口
淘宝网 API地址: http://tcc.taobao.com/cc/json/mobile_tel_segment.htm?tel=15850781443 参数: tel:手机号码 返回:JSON ...
- LeetCode 第 231 题 (Power of Two)
LeetCode 第 231 题 (Power of Two) Given an integer, write a function to determine if it is a power of ...
- 微信 Mustache
最近微信小程序非常火,对于前端开发的程序员是个利好的消息,这里主要记录下微信小程序 Mustache语法. 小程序开发的wxml里,用到了Mustache语法.所以,非常有必要把Mustache研究 ...
- reactjs中props和state最佳实践
http://blog.csdn.net/dangnian/article/details/50998981
- svn管理的项目迁移到tfs
1.将.vs .svn文件夹删除 2.连接tfs,签入代码
- hdu 1754 I Hate It(线段树之 单点更新+区间最值)
I Hate It Time Limit: 90 ...
- linux DNS服务
DNS服务器的安装和配置 首先在终端输入命令#vi /etc/apt/sources.list 输入更新源 # kali repos installed by TARDIS deb http://h ...
- 自己搭建v,p,n过程
安装dockeryum install -y docker把docker设置为服务systemctl enable docker.service启动dockersystemctl start dock ...
- 一个Demo展示Storyboard的强大
本文转载至http://www.cocoachina.com/ios/20150330/11440.html 今天我通过完成一个长按cell删除的Demo,向你们展示熟练运用storyboard和Au ...
- ajax 传递数组类型参数后台接收不到的问题
在做排序功能的时候需要将一个数组的数据传递到后台,(当时怎么没用json,如果用json就没有那么多的事情了),数据提交采用ajax! 先看代码 js: submitbtn: function () ...