Apache的多路处理模块MPM:Prefork Worker Event
- 如何确认当前apache使用哪种模式
- 通过/etc/init.d/httpd中的来确认系统apache的运行脚本路径
apachectl=/usr/sbin/apachectl
httpd=${HTTPD-/usr/sbin/httpd}
prog=httpd
pidfile=${PIDFILE-/var/run/httpd.pid}
lockfile=${LOCKFILE-/var/lock/subsys/httpd}
- /usr/sbin/httpd -l
- /usr/sbin/httpd -V | grep MPM
- 通过/etc/init.d/httpd中的来确认系统apache的运行脚本路径
- prefork MPM使用多个子进程,每个子进程一个线程的方式处理请求,每个进程一个时间只处理一个请求。
- 快,因为它每个子进程没有管理多个子线程的负担
- 稳定,因为某个请求出问题,不会影响到其他进程,因为他们拥有独立的地址空间,变量和内存。
- 可用于非线程安全的第三方模块,比如可以使用非线程安全的mod_php模块,但在大量并发的情况下,会迅速大量消耗资源
- 调优的关键参数,MaxClients和ServerLimit。MaxClients小于256的时候,ServerLimit不起作用,其默认值是256。一般这两个值设置成一样。MaxClients决定你的最大并发数。
- MaxClients = (Total Memory – Critical Services Memory(OS)) / Size Per Apache process(about 30M)
- 计算现有系统的每个apache进程的内存使用量
- ps aux | grep httpd | grep -v pts | awk '{ tot += $6; procs += 1; print $1,$2,$6,$11 } END { print "TOTAL: ",tot,"/",procs,"=",tot/procs }'
- 估算MaxConnectionsPerChild公式
- total amount of daily requests / total number of daily processes
- worker MPM使用多个子进程,每个子进程多个线程的混合方式处理请求,每个线程一个时间只处理一个请求。对资源比较友好,适用于高并发情况
- 常用于高并发
- 典型配置:
ServerLimit 40
StartServers 2
MaxClients 1000
MinSpareThreads 25
MaxSpareThreads 75
ThreadsPerChild 25
MaxRequestsPerChild 0- 这里ServerLimit限制进程数,MaxClients指的是同时最大连接数:ServerLimit = MaxClients / ThreadsPerChild
- event MPM在进程和线程的模式上和worker一样,区别在于线程只负责处理请求本身,当请求处理完该线程立即可以回收,http的连接管理交给父进程。
- worker模式的时候,如果该http连接的keepalive设置的比较长的话,即使该请求已经处理完,也不能回收,因为http连接没中断,这样就需要维持更多的线程。
Apache的多路处理模块MPM:Prefork Worker Event的更多相关文章
- Apache的多处理模块MPM
本博文主要参数 Apache 2.2文档以及Apache模块开发指南 Apache的整个运行可以分为两个阶段:启动阶段和运行阶段. 在启动阶段时,它以ROOT特权来启动,进行解析配置文件(一般就是ht ...
- Apache-三种工作模式(prefork/ worker/Event)
Apache-两种工作模式(prefork/ worker/Event) Apache 2.X 支持插入式并行处理模块,称为多进程处理模块(MPM).在编译apache时必须选择也只能选择一个MPM ...
- Httpd服务入门知识-Httpd服务常见配置案例之MPM( Multi-Processing Module)多路处理模块
Httpd服务入门知识-Httpd服务常见配置案例之MPM( Multi-Processing Module)多路处理模块 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.M ...
- Apache 两种mpm prefork 和 worker 的区别
Apache默认的是线程安全的prefork,Prefork MPM 使用多个子进程,每个子进程有一个线程,每个进程每次只处理一个请求连接,一个请求出故障后不会影响其他请求,是线程安全的 worker ...
- Apache常用2种工作模式prefork和worker比较
Apache两种常用工作模式:prefork和worker. prefork MPM prefork是一个非线程型的.预派生的MPM,使用多个进程,每个进程在某个确定的时间只单独处理一个连接,效率高, ...
- Apache学习---多进程处理模块(MPM)原理详解
查看Apache的模式,可以使用httpd -V命令来查看: 1. prefork MPM prefork模式可以算是很古老但是非常稳定的Apache模式.Apache在启动之初,就预先fork一些子 ...
- Apache优化之多路处理模块理解
前言: 当项目被多人访问时导致访问数度变慢,查了许多资料,了解到Apache的核心模块——MPM(多路处理访问模块).在此对MPM的一些知识点进行整理. MPM_WINNT模块 windows系统使用 ...
- Apache HTTP Server mod_session_dbd模块mod_session_dbd.c 安全漏洞
漏洞名称: Apache HTTP Server mod_session_dbd模块mod_session_dbd.c 安全漏洞 CNNVD编号: CNNVD-201307-488 发布时间: 201 ...
- apache +php +php curl 模块设置
2.2 linux 下面 2.2.1 web服务器安装 1目前采用的web服务器是apache2,在ubuntu 下安装 apt-getupdate apt-get installapache2 测试 ...
随机推荐
- 从零开始学android开发-四大组件之一 Activity
1.Activity是Android四大组件(Application Components)之一,简单来说Activity就是平常所见到的用户界面,一般情况下,一个Activity所占的窗口是满屏的, ...
- nginx利用image_filter动态生成缩略图
转自:http://www.nginx.cn/2160.html "我如今是有些图片须要生成缩略图.这个如今加了image_filter这个已经实现了.但我不知道怎么样才干訪问我上传的原图& ...
- js操作json添加元素和数据的方法
function addServerUrlToJson() { var json_tem = [{"name":"a","value":1} ...
- Array.prototype.slice.call(arguments) 类数组转成真正的数组
Array.prototype.slice.call(arguments) 我们知道,Array.prototype.slice.call(arguments)能将具有length属性的对象转成数 ...
- Jordan Lecture Note-2: Maximal Margin Classifier
Maximal Margin Classifier Logistic Regression 与 SVM 思路的不同点:logistic regression强调所有点尽可能远离中间的那条分割线,而SV ...
- Requirements
Requirements The framework requirements are limited. PHP 5.5 or greater. Apache Web Server or equiva ...
- 报错---[UIApplication _runWithMainScene:transitionContext:completion:], /BuildRoot/Library/Caches/com.apple.xbs/Sources/UIKit_Sim/UIKit-3505.16/UIApplication.m:3294**
原因: 新的SDK不允许在设置rootViewController之前做过于复杂的操作,导致在didFinishLaunchingWithOptions 结束后还没有设置rootViewControl ...
- cgi表单的处理
在HTML中,当客户填写了表单,并按下了发送(submit)按钮后,表单的内容被发送 到了服务器端,一般的,这时就需要有一个服务器端脚本来对表单的内容进行一些处理, 或者是把它们保存起来,或者是按内容 ...
- 为Photoshop添加右键快捷
打开注册表,开始--->运行--->regedit 找到 HKEY_CLASSES_ROOT <----> *<---->shell 新建项,使用Photosh ...
- linux运维常用命令
1.linux启动过程 开启电源 --> BIOS开机自检 --> 引导程序lilo或grub--> 内核的引导(kernel boot)--> 执行init(rc.sysin ...