Apache 工作模式配置优化
Apahce 工作模式配置
1、查看当前MPM工作模式
/usr/local/apache2/bin/apachectl -V Server version: Apache/2.4.27 (Unix)
Server built: Dec 24 2017 07:11:28
Server's Module Magic Number: 20120211:68
Server loaded: APR 1.6.3, APR-UTIL 1.6.1
Compiled using: APR 1.6.3, APR-UTIL 1.6.1
Architecture: 32-bit
# MPM模式
Server MPM: event
threaded: yes (fixed thread count)
forked: yes (variable process count)
Server compiled with....
-D APR_HAS_SENDFILE
-D APR_HAS_MMAP
-D APR_HAVE_IPV6 (IPv4-mapped addresses enabled)
-D APR_USE_SYSVSEM_SERIALIZE
-D APR_USE_PTHREAD_SERIALIZE
-D SINGLE_LISTEN_UNSERIALIZED_ACCEPT
-D APR_HAS_OTHER_CHILD
-D AP_HAVE_RELIABLE_PIPED_LOGS
-D DYNAMIC_MODULE_LIMIT=256
-D HTTPD_ROOT="/usr/local/apache2"
-D SUEXEC_BIN="/usr/local/apache2/bin/suexec"
-D DEFAULT_PIDLOG="logs/httpd.pid"
-D DEFAULT_SCOREBOARD="logs/apache_runtime_status"
-D DEFAULT_ERRORLOG="logs/error_log"
-D AP_TYPES_CONFIG_FILE="conf/mime.types"
-D SERVER_CONFIG_FILE="conf/httpd.conf"
查看MPM模式
/usr/local/apache2/bin/apachectl -l Compiled in modules:
core.c
mod_so.c
http_core.c
event.c
查看调用模块
2、编辑prefork需要在主配置文件下解注释
vim /usr/local/apache2/conf/httpd.conf
Include conf/extra/httpd-mpm.conf
3、在httpd-mpm.conf下进行文件配置
/usr/local/apache2/conf/extra/httpd-mpm.conf
Apahce Prefork模式
使用参数
ServerLimit: 再Apache2.0后 可设置超过256线程限制,要大于 MaxClients。 StartServers:开启的子进程数量,prefork默认为5。 MinSpareServers: 指定空闲子进程的最小数量,默认为5。Apache 每大约1秒的速度新建进程 MaxSpareServers:最大空闲空闲进程数量,大于数量的会一直杀,直到指定最小空闲数。 空闲进程多余该进程数会自动释放资源。 ServerLimit:修改apache最大并发连接数的参数设置,要将它放在MaxRequestWorkers前面,并且它的值也一定要大 MaxClients:最大并发客户端链接数。再Aapache1.3种最大只能设置256,但在Apache2.0中,可以通过在配置开头中增加ServerLimit项目来突破256限制,此时必须 ServerLimit ≤ MaxClients ≤ 20000 MaxRequestsPerChild:限制子进程请求响应个数,多少请求后派生新的子进程、0为永远。 MaxRequestsPerChild:不要设置为0,设置为非0,可以保护Apache进程免遭内存泄漏 MaxConnectionsPerChild:每个子进程在其生存期内允许伺服的最大请求数量,默认为10000.到达 MaxRequestWorkers:最大同时处理请求的进程数量,也是最大的同时连接数,表示了apache的最大请求并发能力
使用案例
# mpm_perfork模块
<IfModule mpm_prefork_module>
StartServers 5 # 推荐设置:小=默认 中=20~50 大=50~100
MinSpareServers 5 # 推荐设置:与StartServers保持一致
MaxSpareServers 10 # 推荐设置:小=20 中=30~80 大=80~120
ServerLimit 150 # 推荐设置:与MaxRequestWorkers保持一致
MaxClients 150 # 推荐设置:小=500 中=500~1500 大型=1500~3000
MaxRequestsPerChild 0 # 推荐设置:小=10000 中或大=10000~500000
</IfModule>
配置文件
其他说明
在Unix系统中,很多服务(Service)的守护进程(Daemon)在启动时会创建一个进程以准备应答可能的连接请求,服务即进入了端口监听状态,当一个来自客户端(Client)的请求被发送至服务所监听的端口时,该服务进程即会处理该请求,在处理过程中,该进程处于独占状态,也就是说如果此时有其他请求到达,这些请求只能“排队”等待当前请求处理完成且服务进程释放。这样就会导致越来越多的请求处于队列等待状态,实际表现就是该服务处理能力非常低下。Apache使用Prefork模式很好的解决了这一问题。
使用环境
将MaxRequestsPerChild设置成非零值有两个好处:
1.可以防止(偶然的)内存泄漏无限进行,从而耗尽内存。
2.给进程一个有限寿命,从而有助于当服务器负载减轻的时候减少活动进程的数量。
Apahce Worker模式
使用参数
StartServers:初始数量的服务器进程开始。 MinSpareThreads:最小数量的工作线程,保存备用。 MaxSpareThreads:最大数量的工作线程,保存备用。 ThreadsPerChild:固定数量的工作线程在每个服务器进程。 MaxRequestWorkers:最大数量的工作线程。 MaxConnectionsPerChild:最大连接数的一个服务器进程服务。
使用案例
#mpm_worker模块
<IfModule mpm_worker_module>
StartServers 2 # 推荐设置:小=默认 中=3~5 大=5~10
MaxClients 150 # 推荐设置:小=500 中=500~1500 大型=1500~3000
MinSpareThreads 25 # 推荐设置:小=默认 中=50~100 大=100~200
MaxSpareThreads 75 # 推荐设置:小=默认 中=80~160 大=200~400
ThreadsPerChild 25 # 推荐设置:小=默认 中=50~100 大型=100~200
MaxRequestsPerChild 0 # 推荐设置:小=10000 中或大=10000~50000
</IfModule>
配置文件
其他说明
注:如果MaxClients/ThreadsPerChild大于16,还需额外设置ServerLimit参数,ServerLimit必须大于等于 MaxClients/ThreadsPerChild 的值。
Apahce mpm_winnt模式
使用参数
ThreadsPerChild:每个子进程的最大并发线程数。 MaxRequestsPerChild:每个子进程允许处理的请求总数。
使用案例
# 使用mpm_winnt_module模式
<IfModule mpm_winnt_module>
ThreadsPerChild 150 # 推荐设置:小型网站=1000 中型网站=1000~2000 大型网站=2000~3500
MaxRequestsPerChild 0 # 推荐设置:小=10000 中或大=20000~100000
</IfModule>
配置文件
其他说明
注:由于mpm_winnt模块只会创建1个子进程,因此这里对单个子进程的参数设置就相当于对整个Apache的参数设置。 注:mpm_winnt模块是专门针对Windows操作系统而优化设计的MPM模块。它只创建一个单独的子进程,并在这个子进程中轮流产生多个线程来处理请求。
Apache 工作模式配置优化的更多相关文章
- apache工作模式worker以及prefork的切换
apache比较常用的工作模式有worker以及prefork两种方式. 如果在编译时候不指定,系统默认的是prefork模式:如果需要换成worker模式,需要在编译的时候带上编译参数:--with ...
- Apache 工作模式详解
Apache 工作模式详解 Apache 2.X 支持插入式并行处理模块,称为多路处理模块(MPM).在编译apache时必须选择也只能选择一个MPM,对类UNIX系统,有几个不同的MPM可供选择, ...
- apache工作模式总结及网站访问缓慢处理记录
apache目前主要有两种模式:prefork模式和worker模式:1)prefork模式(默认模式)prefork是Unix平台上的默认(缺省)MPM,使用多个子进程,每个子进程只有一个线程.每个 ...
- apache工作模式:prefork和worker
apache作为现今web服务器用的最广泛也是最稳定的开源服务器软件,其工作模式有许多中,目前主要有两种模式:prefork模式和worker模式 一.两种模式 prefork模式: prefork是 ...
- apache 工作模式
apache三种工作模式: prefork(2.4前默认)/worker/event(2.4默认)内容整理来自以下网站http://m.blog.csdn.net/article/details?id ...
- apache工作模式
查看当前apache的工作模式 apachectl -l prefork模式 <IfModule prefork.c>StartServers 5MinSpareServers 5MaxS ...
- Apache 工作模式的正确配置
prefork work event
- Apache服务器性能如何优化
配置网站,要充分的把系统资源利用出去,榨干系统的一切潜能,让网站速度发挥到极致.Apache,是用户浏览和网站数据的一个中间桥梁.但是在这里,我们虽然做得并不是很多,但是如果心细打理,有些设置也会起到 ...
- Nginx与Apache工作方式
原创作品,允许转载,转载时请务必以超链接形式标明文章 原始出处 .作者信息和本声明.否则将追究法律责任.http://going.blog.51cto.com/7876557/1304204 Ngin ...
随机推荐
- 【Raspberry pi】GPIO注意事项
1.GPIO编码的方法 第三列是树莓派板子上的自然编号(左边引脚为1-15,右边引脚为2-26),RPi.GPIO.setmode(GPIO.BOARD)采用这列编号 树莓派主芯片提供商Broadco ...
- (转)使用.NET Reflector 查看Unity引擎里面的DLL文件
当你查看unity里面API的时候,是不是有时候追踪了一两步就碰到DLL文件走不下去了呢?很是不爽吧. 这种问题我也是经常碰到.这是人家商业引擎不想让你看到底层代码啦,所以着急不得. 不过,今天我终于 ...
- python json 序列化任意数据类型
json默认支持的数据类型 +-------------------+---------------+ | Python | JSON | +===================+========= ...
- MVC自定义验证 jquery.validate.unobtrusive
MVC的验证 jquery.validate.unobtrusive 阅读目录 一.应用 二.验证规则 1.一.简单规则 2.二.复杂一点的规则 3.三.再复杂一点的规则(正则) 4.四.再再复杂一点 ...
- c#的小技巧
很多.net的使用小技巧,总是要自己记下来的,给自己. 一:时间格式话中H和h的区别 DateTime.ToString("yyyy-MM-dd HH:mm:ss");//转化成2 ...
- Python全栈day24-25(面向对象编程)
参考文档: http://www.cnblogs.com/linhaifeng/articles/6182264.html# 类:把一类事物的相同的特征和动作整合到一起就是类,类是抽象的概练 对象:就 ...
- confirm() event.target.getAttribute('id')
w <?php $wecho = '<form id="del' . $wid . '" method="POST" action="&q ...
- 使用Docker创建Elasticsearch服务
一.Docker是什么? Docker是一个开源工具,能将一个WEB应用封装在一个轻量级,便携且独立的容器里,然后可以运行在几乎任何服务环境下.Docker的容器能使应用跑在任何服务器上并且表现一致. ...
- 6.Insert Documents-官方文档摘录
总结 1.插入单文档 db.inventory.insertOne( { item: "canvas", qty: , tags: , w: 35.5, uom: "cm ...
- Linux网络调试工具资料链接
Dropbox: https://huoding.com/2016/12/15/574 Tcpdump: http://roclinux.cn/?p=2474