前言:

   当项目被多人访问时导致访问数度变慢,查了许多资料,了解到Apache的核心模块——MPM(多路处理访问模块)。在此对MPM的一些知识点进行整理。

  • MPM_WINNT模块
  1. windows系统使用的模块
  2. 创建一个子进程
  3. 该子进程轮流产生多个线程来处理请求
  • MPM_PREFORK模块
  1. Unix/Linux系统使用的模块
  2. Apache启动时默认创建5个子进程
  3. 一个子进程处理一个请求
  4. 优点:每个子进程对应一个请求,请求间避免相互影响
  5. 缺点:占用系统的资源相对较多
  • MPM_WORKER模块
  1. Unix/Linux系统的使用模块
  2. 对于MPM_prefork的改进
  3. 每个子进程创建固定的线程和一个监听的线程
  4. 监听线程用来接入请求并将其传递到服务线程处理和应答

  基于进程比基于线程的处理方式占用的系统资源要多。(后续再整理一波进程和线程的概念,现在想起来很模糊)

配置:

  配置相应的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优化之多路处理模块理解的更多相关文章

  1. Apache优化:修改最大并发连接数

    http://www.365mini.com/page/apache-concurrency-configuration.htm Apache是一个跨平台的web服务器,由于其简单高效.稳定安全的特性 ...

  2. Apache优化配置:修改最大并发连接数

    此文摘自: http://www.365mini.com/page/apache-concurrency-configuration.htm Apache查看连接数和限制当前的连接数 : http:/ ...

  3. Apache优化:修改最大并发连接数(转)

    Apache是一个跨平台的web服务器,由于其简单高效.稳定安全的特性,被广泛应用于计算机技术的各个领域.现在,Apache凭借其庞大的用户数,已成为用户数排名第一的web服务器. 尽 管如此,在实际 ...

  4. 转载:Apache优化:修改最大并发连接数

    本文转自:https://blog.csdn.net/bjash/article/details/50394894 Apache是一个跨平台的web服务器,由于其简单.稳定安全的特性,被广泛应用于计算 ...

  5. 关于Apache (httpd)服务器防DDOS模块mod_evasive的使用说明

    关于Apache (httpd)服务器防DDOS模块mod_evasive的使用说明 1. mod_evasive 介绍: mod_evasive 是Apache(httpd)服务器的防DDOS的一个 ...

  6. Httpd服务入门知识-Httpd服务常见配置案例之MPM( Multi-Processing Module)多路处理模块

    Httpd服务入门知识-Httpd服务常见配置案例之MPM( Multi-Processing Module)多路处理模块 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任.   一.M ...

  7. APACHE 服务器开启URL REWRITE模块的方法

    最近做wordpress,发现固定链接总是设置不了.后来发现是由于apache服务器的URL REWIRITE模块没有开启导致. 查询了资料之后终于设置成功,记录下步骤: 1:开启apache的url ...

  8. Apache的多路处理模块MPM:Prefork Worker Event

    如何确认当前apache使用哪种模式 通过/etc/init.d/httpd中的来确认系统apache的运行脚本路径 apachectl=/usr/sbin/apachectl httpd=${HTT ...

  9. Apache下安装配置mod_pagespeed模块,轻松完成网站提速

    mod_pagespeed是一个开源的Apache module,它由谷歌开发,通过优化你的网页来减少响应延迟和带宽占用.作用参考ngx_pagespeed功能:http://blog.linuxey ...

随机推荐

  1. 5 admin的使用

    1.admin组件的使用 Django 提供了基于 web 的管理工具. Django 自动管理工具是 django.contrib 的一部分.你可以在项目的 settings.py 中的 INSTA ...

  2. 【HNOI2007】紧急疏散

    题面 题解 \(\text{HNOI2007}\)真的恐怖 这是集合了所罗门的咒语,胜负一子等神仙题和码农题的一年 所以这道题非常码 二分答案,将门拆点,于是就变成了一个二分图匹配的题目 反正很恶心 ...

  3. CF13E Holes LCT

    CF13E Holes LG传送门 双倍经验题,几乎同[HNOI2010]弹飞绵羊,LCT练手题,LG没有LCT题解于是发一波. 从当前点向目标点连边,构成一棵树,带修改就用LCT动态维护答案,由于不 ...

  4. springboot之cas客户端

    一.CAS Client 与受保护的客户端应用部署在一起,以 Filter 方式保护受保护的资源.对于访问受保护资源的每个 Web 请求,CAS Client 会分析该请求的 Http 请求中是否包含 ...

  5. UWP 自然灾害App在刷新数据后卡死的解决方案

    一直以为都在纳闷,为啥我的其他app崩溃次数几乎为0,而单单这个App的崩溃次数简直逆天了,我都不敢相信. 每天都有至少上千次crash...我也是服的 不甘心,趁着这次重构的机会,把代码好好捋了1下 ...

  6. Frida----基本代码

    代码来自官网:https://www.frida.re/docs/examples/android/ import frida, sys def on_message(message, data): ...

  7. 一切的浮点型进行计算操作都要用BigDecimal

    简化: 1.引言 float和double类型的主要设计目标是为了科学计算和工程计算.他们执行二进制浮点运算,这是为了在广域数值范围上提供较为精确的快速近似计算而精心设计的.然而,它们没有提供完全精确 ...

  8. PKCS#7

    1.名词解释 数字签名:在ISO7498-2标准中定义为:"附加在数据单元上的一些数据,或是对数据单元所作的密码变换,这种数据和变换允许数据单元的接收者用以确认数据单元来源和数据单元的完整性 ...

  9. ubuntu/linux中安装Tomcat(附图解详细步骤)

    我的linux系统使用的是ubuntu14 1.首先需要先到Tomcat官网上下载对应linux系统的压缩包,可以直接在Ubuntu系统中进行下载,下载后的默认路径为主文件夹路径下的下载文件目录下 注 ...

  10. L2 Helios OPcodez

    天堂2 Helios太阳神版本 的客户端和服务端封包 *********************** Client ***********************00 SendLogOut01 Req ...