Apache里的 MPM 调优比较详细
2015-10-15 10:28
603 查看
1、什么是MPM?
Multi-Processing Module (MPM) implements a hybrid multi-process multi-threaded server。(多进程、多线程)
2、有多少种MPM?
大致有:prefork MPM、worker MPM、BeOS MPM、NetWare MPM、OS/2 MPM、WinNT MPM。
3、怎么知道apache当前用的是哪个MPM?
linux及windows下都可以使用命令:“httpd -l ” 进行查询。
4、各个MPM是怎么工作及如何优化?
(1)prefork MPM
<IfModule mpm_prefork_module>
StartServers 10
MinSpareServers 10
MaxSpareServers 15
ServerLimit 2000
MaxClients 1000
MaxRequestsPerChild 10000
</IfModule>
启动时建立StartServers个子进程,
然后按每秒创建指数级个进程直到达到MinSpareServers个进程(最多增到每秒32个),
如果空闲进程数大于MaxSpareServers,则检查kill掉一些空闲进程。
MaxRequestPerChild指定每个进程处理了多少个请求后就自我毁灭。
MaxClients指定apache最多可以同时处理的请求数,也就是进程数?
MaxClients默认不能大于256,可以通过设定ServerLimit来增大这个限制数,最大20000?
(2)worker:
<IfModule mpm_worker_module>
StartServers 3
MaxClients 2000
ServerLimit 25
ThreadLimit 200
ThreadsPerChild 100
MinSpareThreads 50
MaxSpareThreads 200
MaxRequestsPerChild 0
</IfModule>
启动时建立StartServers个子进程,
每个进程包含ThreadsPerChild个线程,缺省最大64
MinSpareThreads定义最小的空闲线程数,最大75
MaxSpareThreads定义最大的空闲线程数,超过则执行清理?最大250
MaxClients定义所有子进程中的线程总数
ThreadLimit,最大20000,默认64
ServerLimit,最大值20000,默认16
需要注意的是,如果显式声明了ServerLimit,那么它乘以ThreadsPerChild的值必须大于等于MaxClients,而且 MaxClients必须是ThreadsPerChild的整数倍,否则Apache将会自动调节到一个相应值(可能是个非期望值)。
(3)WinNT MPM:
<IfModule mpm_winnt_module>
ThreadsPerChild 500
MaxRequestsPerChild 10000
</IfModule>
mpm_winnt.c是专门针对Windows NT优化的MPM(多路处理模块),它使用一个单独的父进程产生一个单独的子进程,在这个子进程中轮流产生多个线程来处理请求。也就是说 mpm_winnt只能启动父子两个进程, 不能像Linux下那样同时启动多个进程。
ThreadLimit,默认1920,最大15000,限制单个进程的线程总数。
Multi-Processing Module (MPM) implements a hybrid multi-process multi-threaded server。(多进程、多线程)
2、有多少种MPM?
大致有:prefork MPM、worker MPM、BeOS MPM、NetWare MPM、OS/2 MPM、WinNT MPM。
3、怎么知道apache当前用的是哪个MPM?
linux及windows下都可以使用命令:“httpd -l ” 进行查询。
4、各个MPM是怎么工作及如何优化?
(1)prefork MPM
<IfModule mpm_prefork_module>
StartServers 10
MinSpareServers 10
MaxSpareServers 15
ServerLimit 2000
MaxClients 1000
MaxRequestsPerChild 10000
</IfModule>
启动时建立StartServers个子进程,
然后按每秒创建指数级个进程直到达到MinSpareServers个进程(最多增到每秒32个),
如果空闲进程数大于MaxSpareServers,则检查kill掉一些空闲进程。
MaxRequestPerChild指定每个进程处理了多少个请求后就自我毁灭。
MaxClients指定apache最多可以同时处理的请求数,也就是进程数?
MaxClients默认不能大于256,可以通过设定ServerLimit来增大这个限制数,最大20000?
(2)worker:
<IfModule mpm_worker_module>
StartServers 3
MaxClients 2000
ServerLimit 25
ThreadLimit 200
ThreadsPerChild 100
MinSpareThreads 50
MaxSpareThreads 200
MaxRequestsPerChild 0
</IfModule>
启动时建立StartServers个子进程,
每个进程包含ThreadsPerChild个线程,缺省最大64
MinSpareThreads定义最小的空闲线程数,最大75
MaxSpareThreads定义最大的空闲线程数,超过则执行清理?最大250
MaxClients定义所有子进程中的线程总数
ThreadLimit,最大20000,默认64
ServerLimit,最大值20000,默认16
需要注意的是,如果显式声明了ServerLimit,那么它乘以ThreadsPerChild的值必须大于等于MaxClients,而且 MaxClients必须是ThreadsPerChild的整数倍,否则Apache将会自动调节到一个相应值(可能是个非期望值)。
(3)WinNT MPM:
<IfModule mpm_winnt_module>
ThreadsPerChild 500
MaxRequestsPerChild 10000
</IfModule>
mpm_winnt.c是专门针对Windows NT优化的MPM(多路处理模块),它使用一个单独的父进程产生一个单独的子进程,在这个子进程中轮流产生多个线程来处理请求。也就是说 mpm_winnt只能启动父子两个进程, 不能像Linux下那样同时启动多个进程。
ThreadLimit,默认1920,最大15000,限制单个进程的线程总数。
相关文章推荐
- vs 下 apache 模块 调试
- Apache Commons 工具类介绍及简单使用
- Ubuntu Apache配置及开启mod_rewrite模块
- 安装apache——centos7
- 【转】web服务器apache架构与原理
- [转]Apache Ignite——新一代数据库缓存系统
- 五种开源协议BSD、Apache、GPL、LGPL、MIT
- Linux下Apache重启遇到No space left on device错误的解决方法
- 在mac上配置Apache服务器
- Apache+SVN搭建SVN服务器
- Apache OJB的分页处理
- Apache目录访问权限配置详解
- Apache Options指令详解
- Apache Traffic Server编译安装
- apache
- Apache优化:修改最大并发连接数
- java.lang.NullPointerException org.apache.jsp.WEB_002dINF.pages.imagecheck.test_jsp._jspInit(test_jsp.java:22)的原因
- Ubuntu apache配置虚拟路由
- apache工作模式与配置
- Centos 7 使用Apache部署Redmine。