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 ...
随机推荐
- VC++ 给你的代码强制加一个硬断点
类似与Javascript的 debugger; Hard code a debugger breakpoint If you need to insert a hard breakpoint in ...
- 转载:resNet论文笔记
<Deep Residual Learning for Image Recognition>是2016年 kaiming大神CVPR的最佳论文 原文:http://m.blog.csdn. ...
- hdu 2074 叠筐 好有意思的绘图题
叠筐 Time Limit: 1000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others) Total Submiss ...
- 再谈iOS 7的手势滑动返回功能
本文转载至 http://blog.csdn.net/jasonblog/article/details/28282147 之前随手写过一篇<使用UIScreenEdgePanGestureR ...
- 编写高质量代码--改善python程序的建议(七)
原文发表在我的博客主页,转载请注明出处! 建议三十四:掌握字符串的基本用法 编程有两件事,一件是处理数值,另一件是处理字符串,在商业应用编程来说,处理字符串的代码超过八成,所以需要重点掌握. 首先有个 ...
- java怎么计算散列码hashcode?
转自:https://blog.csdn.net/qq_21430549/article/details/52225801 1.从HashMap说起 我们知道Map以键值对的形式来存储数据.有一点值得 ...
- C#操作AD及Exchange Server总结(二)
上一节C#操作AD及Exchange Server总结(一)写了对AD的操作,新建AD用户后,通常都需要为此用户开启Exchange邮箱,接下来写如何远程操作Exchange. 三.对Exchange ...
- YOLO v1论文笔记
You Only Look Once:Unified, Real-Time Object Detection 论文链接:https://arxiv.org/abs/1506.02640 Homep ...
- Powershell调用RemoteExchange.ps1
If ((Get-PSSnapin | where {$_.Name -match "Microsoft.Exchange.Management.PowerShell.E2010" ...
- Python SQLAlchemy基本操作和常用技巧包含大量实例,非常好python
http://www.makaidong.com/%E8%84%9A%E6%9C%AC%E4%B9%8B%E5%AE%B6/28053.shtml "Python SQLAlchemy基本操 ...