Apache优化之多路处理模块理解
前言:
当项目被多人访问时导致访问数度变慢,查了许多资料,了解到Apache的核心模块——MPM(多路处理访问模块)。在此对MPM的一些知识点进行整理。
- MPM_WINNT模块
- windows系统使用的模块
- 创建一个子进程
- 该子进程轮流产生多个线程来处理请求
- MPM_PREFORK模块
- Unix/Linux系统使用的模块
- Apache启动时默认创建5个子进程
- 一个子进程处理一个请求
- 优点:每个子进程对应一个请求,请求间避免相互影响
- 缺点:占用系统的资源相对较多
- MPM_WORKER模块
- Unix/Linux系统的使用模块
- 对于MPM_prefork的改进
- 每个子进程创建固定的线程和一个监听的线程
- 监听线程用来接入请求并将其传递到服务线程处理和应答
基于进程比基于线程的处理方式占用的系统资源要多。(后续再整理一波进程和线程的概念,现在想起来很模糊)
配置:
配置相应的MPM首先需要打开Apache配置文件Apache\conf\httpd.conf

如上图将前面的;去掉,这样就可以引入MPM的配置文件了(默认是未启用的)
然后打开httpd-mpm.conf文件进行配置

(这是一张盗图,请笑纳)
- MPM_WINNT模块
<IfModule mpm_winnt_module>
ThreadsPerChild 150 #推荐设置:小型网站=1000 中型网站=1000~2000 大型网站=2000~3500
MaxRequestsPerChild 0 #推荐设置:小=10000 中或大=20000~100000
</IfModule>
ThreadsPerChild:每个子进程的最大并发线程数。
MaxRequestsPerChild:每个子进程允许处理的请求总数。如果累计处理的请求数超过该值,该子进程将会结束(然后根据需要确定是否创建新的子进程),该值设为0表示不限制请求总数(子进程永不结束)。
该参数建议设为非零的值,可以带来以下两个好处:
1. 可以防止程序中可能存在的内存泄漏无限进行下去,从而耗尽内存。
2. 给进程一个有限寿命,从而有助于当服务器负载减轻的时候减少活动进程的数量。 注意:在以上涉及到统计请求数量的参数中,对于KeepAlive的连接,只有第一个请求会被计数。
- MPM_PREFORK模块
<IfModule mpm_prefork_module>
StartServers 5 #推荐设置:小=默认 中=20~50 大=50~100
MinSpareServers 5 #推荐设置:与StartServers保持一致
MaxSpareServers 10 #推荐设置:小=20 中=30~80 大=80~120
MaxClients 150 #推荐设置:小=500 中=500~1500 大型=1500~3000
MaxRequestsPerChild 0 #推荐设置:小=10000 中或大=10000~500000
</IfModule>
# StartServers: 数量的服务器进程开始
# MinSpareServers: 最小数量的服务器进程,保存备用
# MaxSpareServers: 最大数量的服务器进程,保存备用
# 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
(此外,如果MaxClients/ThreadsPerChild大于16,还需额外设置ServerLimit参数,ServerLimit必须大于等于 MaxClients/ThreadsPerChild 的值。)
</IfModule> StartServers 启动Apache时创建的子进程数。
MinSpareServers 处于空闲状态的最小子进程数。
所谓空闲子进程是指没有正在处理请求的子进程。如果当前空闲子进程数少于MinSpareServers,那么Apache将以最大每秒一个的速度产生新的子进程。只有在非常繁忙机器上才需要调整这个参数。此值不宜过大。
MaxSpareServers 处于空闲状态的最大子进程数。
只有在非常繁忙机器上才需要调整这个参数。此值不宜过大。如果你将该指令的值设置为比MinSpareServers小,Apache将会自动将其修改成MinSpareServers+1。
MaxClients 允许同时连接的最大请求数量。
任何超过MaxClients限制的请求都将进入等待队列,直到达到ListenBacklog指令限制的最大值为止。
Apache优化之多路处理模块理解的更多相关文章
- Apache优化:修改最大并发连接数
http://www.365mini.com/page/apache-concurrency-configuration.htm Apache是一个跨平台的web服务器,由于其简单高效.稳定安全的特性 ...
- Apache优化配置:修改最大并发连接数
此文摘自: http://www.365mini.com/page/apache-concurrency-configuration.htm Apache查看连接数和限制当前的连接数 : http:/ ...
- Apache优化:修改最大并发连接数(转)
Apache是一个跨平台的web服务器,由于其简单高效.稳定安全的特性,被广泛应用于计算机技术的各个领域.现在,Apache凭借其庞大的用户数,已成为用户数排名第一的web服务器. 尽 管如此,在实际 ...
- 转载:Apache优化:修改最大并发连接数
本文转自:https://blog.csdn.net/bjash/article/details/50394894 Apache是一个跨平台的web服务器,由于其简单.稳定安全的特性,被广泛应用于计算 ...
- 关于Apache (httpd)服务器防DDOS模块mod_evasive的使用说明
关于Apache (httpd)服务器防DDOS模块mod_evasive的使用说明 1. mod_evasive 介绍: mod_evasive 是Apache(httpd)服务器的防DDOS的一个 ...
- Httpd服务入门知识-Httpd服务常见配置案例之MPM( Multi-Processing Module)多路处理模块
Httpd服务入门知识-Httpd服务常见配置案例之MPM( Multi-Processing Module)多路处理模块 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.M ...
- APACHE 服务器开启URL REWRITE模块的方法
最近做wordpress,发现固定链接总是设置不了.后来发现是由于apache服务器的URL REWIRITE模块没有开启导致. 查询了资料之后终于设置成功,记录下步骤: 1:开启apache的url ...
- Apache的多路处理模块MPM:Prefork Worker Event
如何确认当前apache使用哪种模式 通过/etc/init.d/httpd中的来确认系统apache的运行脚本路径 apachectl=/usr/sbin/apachectl httpd=${HTT ...
- Apache下安装配置mod_pagespeed模块,轻松完成网站提速
mod_pagespeed是一个开源的Apache module,它由谷歌开发,通过优化你的网页来减少响应延迟和带宽占用.作用参考ngx_pagespeed功能:http://blog.linuxey ...
随机推荐
- 大数据入门第三天——基础补充与ActiveMQ
一.多线程基础回顾 先导知识在基础随笔篇:http://www.cnblogs.com/jiangbei/p/6664555.html 以下此部分以补充为主 1.概念 进程:进行中的程序,内存中有独立 ...
- c++ 有序二叉树的应用
实作:以有序二叉树记录学生签到时间及名字,然后以名字升序输出学生签到信息 stricmp,strcmpi 原型:extern int stricmp(char *s1,char * s2); 用法:# ...
- Deep Learning综述[下]
Image understanding with deep convolutional networks 直到2012年ImageNet大赛之前,卷积神经网络一直被主流机器视觉和机器学习社区所遗弃.2 ...
- 8 功能6:后台管理页面,编辑文章,xss攻击
1.后台管理页面之文本编辑 # 后台管理url re_path(r'^cn_backend/$', views.cn_backend, name='cn_backend'), re_path(r'^c ...
- Gitlab+Jenkins学习之路(八)之发布maven项目及按版本发布
一.什么是Maven maven是一个项目管理和综合工具.Maven提供给开发人员构建一个完整的生命周期框架. 开发团队可以自动完成该项目的基础设施建设,Maven使用标准的目录结构和默认构建生命周期 ...
- 通过IDEA解决spring配置文件
来自:https://blog.csdn.net/yanghanxiu/article/details/79366263 (其实尼可以使用springboot 这样就不用配置一大堆东西了喵!) 每次创 ...
- 监听Google Player下载并获取包名等信息
一.解决思路 通过监听ContentObserver监听下载路径content://downloads 二.具体步骤 1 设置监听器 context.getContentResolver() .reg ...
- 容器类 - bootStrap4常用CSS笔记
.container 居中容器类,最大宽度默认为1200px.左右间隙15px .container-fluid 全屏容器类. .jumbotron 创建一个大的灰色的圆角背景框 .jumbotron ...
- 编码 解码 python
之前一直对python文件中编码解码糊里糊涂,今天看到一篇文章,觉得把我讲的有点明白了.写个心得吧. 1.编码解码是怎么一回事? Python 里面的编码和解码也就是 unicode 和 str 这两 ...
- python-GUI之tkinter的学习
最近看了哔哩哔哩的python的学习,直接看代码吧,以后会更新 先来个基础的 import tkinter as tk #导入包 app = tk.Tk() #抽象出一个GUI app.title(& ...