文档章节

apache httpd mpm配置

rick009
 rick009
发布于 2014/10/14 15:06
字数 1431
阅读 63
收藏 0

MPM(多处理模块)

Apache2.x一般常用的有prefork、worker、event三种常用的mpm,查看当前使用模块可以使用httpd -l prefork

这个多路处理模块(MPM)实现了一个非线程型的、预派生的web服务器,这个MPM具有很强的自我调节能力,只需要很少的配置指令调整。最重要的是将MaxClients设置为一个足够大的数值以处理潜在的请求高峰,同时又不能太大,以致需要使用的内存超出物理内存的大小。主要的配置参数如下:

  • StartServers:服务启动时启动的子进程数,比如配置为5,在httpd启动后通过ps -ef|grep httpd将看到6个http进程,其中一个为主进程以root用户运行,其他5个为子进程以apache(不同安装会有所不同)用户运行,该5个进程的父进程pid为主进程的pid
  • MinSpareServers:最少空闲的子进程数,当空闲的进程数小于该值时,apache会派生出一些子进程,以达到该值
  • MaxSpareServers:最多空闲的子进程数,当空闲的进程数大于该值时,apache会结束掉一些子进程,以达到该值
  • ServerLimit:控制同时存在的最多的子进程数,用于控制MaxClients最大值
  • MaxClients:同时存在的最多的子进程数,一般默认值为256,如果系统访问量大的话,需要调整该值,但是在修改该值时不能大于ServerLimit设置的值。该配置是影响prefork模式下处理能力的关键参数,当发现服务器负载比较低,但是访问慢的情况下,一般就是该值比较低,好多请求都在排队中,排队的请求个数通过参数ListenBacklog配置,例如默认配置下的256,同时最多处理的请求数为256个,通过ps -ef|grep httpd发现httpd的进程数始终都是257个,其中一个为主进程,其余256个为子进程,即设置的MaxClients的值,该配置项参数名称在2.3以后改为MaxRequestWorkers
  • MaxRequestsPerChild:每个子进程处理的最大请求数,当请求的总的请求数超过该值时,Apache就会kill掉该子进程,配置为0时,则该子进程不会结束。该配置主要影响内存的使用,当设置为0时,即不结束子进程,可能会存在内存用尽的情况,所以推荐修改该值为一个非0值

worker

此多路处理模块(MPM)使网络服务器支持混合的多线程多进程。由于使用线程来处理请求,所以可以处理海量请求,而系统资源的开销小于基于进程的MPM。主要的配置参数如下:

  • StartServers:初始启动的子进程数
  • MinSpareThreads:最少空闲的线程数
  • MaxSpareThreads:最多空闲的线程数
  • ThreadsPerChild:每个子进程生成的工作线程的数量,该值是固定的,默认值为25,ThreadsPerChild的最大缺省值是64,如果负载较大,64也是不够的。这时要显式使用 ThreadLimit指令,它的最大缺省值是20000。
  • MaxRequestWorkers:最多数量的工作线程数,该值主要是由子进程数*ThreadsPerChild得来,该值是影响性能的关键因素,该值默认设置为400,即需要的子进程数为400/ThreadsPerChild=16,如果在访问量大的情况下,400是不够的,该值定义了最多处理的请求连接数,而且MaxRequestWorkers必须为ThreadsPerChild的整数倍,如果设置的不是ThreadsPerChild的整数倍,Apache会自动调整为ThreadsPerChild的整数倍,如果设置该值大于400时,同时需要设置ServerLimit(最多子进程数)的值,例如设置MaxRequestWorkers为2000,则需要的子进程数为2000/25=80,则ServerLimit的值必须设置为>=80
  • MaxConnectionsPerChild:每个子进程处理的最多请求数,当超过该请求数时,则该子进程会被kill掉,重新生成新的子进程

event

该模块在Apache2.4中才从实验状态改为稳定状态,event的配置参数同worker的配置,该模块主要解决的是HTTP中的“keep alive”问题,尽管HTTP的Keepalive方式能减少TCP连接数量和网络负载,但是 Keepalive需要和服务进程或者线程绑定,这就导致一个繁忙的服务器会耗光所有的线程。event使用一个专用的线程来处理这些keep alive的请求,当客户端发送keep alive的请求连接后,请求处理完成后,工作线程不用维持保持连接的状态,这个状态由专门的线程来保持,当后续请求到达后,该线程会将此请求转给工作线程去处理,这就不需要所有的工作线程都保持连接的状态,特别是在timeout时间比较长的情况下,导致工作线程在keep alive状态下无法释放,从而提高了系统的处理能力。但是在https的情况下,该模块无法使用,会使用worker模块来处理。

总结

在apace2.2中,主要使用的prefork和worker模块,event模块是在Apache2.4以后才到达稳定状态的,一般是Apache2.4默认的MPM,主要是为了提高Apache的并发处理能力,但是在使用这些mpm之前,最好理解各个mpm的工作原理以及各自的性能瓶颈在哪里,只有这样才能用好Apache,不至于掉到坑里出不来了

© 著作权归作者所有

上一篇: apache mpm
下一篇: Symfony事件类型
rick009

rick009

粉丝 10
博文 17
码字总数 14541
作品 0
海淀
技术主管
私信 提问
apache 性能优化 MaxClients

apache 性能优化 MaxClients 一个网站在线人数增多,访问时很慢。初步认为是服务器资源不足了,但经反复测试,一旦连接上,不断点击同一个页面上不同的链接,都能迅速打开,这种现象就是说明...

lcdmusic
2015/12/22
23
0
合理设置apache httpd的最大连接数

合理设置apache httpd的最大连接数 转载自:http://hi.baidu.com/rainchen/blog/item/095f0a551fa802c5b645ae46.html 手头有一个网站在线人数增多,访问时很慢。初步认为是服务器资源不足了,...

范堡
2010/03/02
1K
0
windows下Apache 内存耗尽假死显现

首先打开 Apache 的配置文件 httpd.conf 这个文件, 找到这句:“#Include etc/extra/httpd-mpm.conf” , 将前面的 "#" 号去掉 1、在 Apache 的 conf/extra/httpd-mpm.conf 文件下配置 <IfM......

Jack088
2016/06/10
82
0
apache mpm模式优化

apache会不停创建httpd进程,到了一定数量后会发现网站访问非常慢,即使是本地的也会非常慢。后来查了一下有可能是mpm设置的问题。 原文地址:http://hi.baidu.com/rainchen/blog/item/095f...

杨太化
2015/10/21
62
0
编译安装Apache2.4.12

一、准备工作 二、编译安装 三、相关文件路径配置 四、主配置文件常用配置信息详解 一、准备工作 安装编译环境 yum groupinstall "Development tools" 下载所需文件 [root@localhost ~]# mk...

youshine
2015/05/19
0
0

没有更多内容

加载失败,请刷新页面

加载更多

聊聊Elasticsearch的CircuitBreakerService

序 本文主要研究一下Elasticsearch的CircuitBreakerService CircuitBreakerService elasticsearch-7.0.1/server/src/main/java/org/elasticsearch/indices/breaker/CircuitBreakerService.ja......

go4it
26分钟前
3
0
Spring系列教程六:AOP详细讲解

AOP 概述 什么是 AOP AOP:全称是 Aspect Oriented Programming 即:面向切面编程。 AOP技术是对OOP技术的一种延伸,AOP是面向纵向,OOP是面向横向。简单的说它就是把我们程序重复的代码抽取...

我叫小糖主
40分钟前
12
0
Qt编写数据可视化大屏界面电子看板9-曲线效果

一、前言 为了编写数据可视化大屏界面电子看板系统,为了能够兼容Qt4和嵌入式linux系统,尤其是那种主频很低的,但是老板又需要在这种硬件上(比如树莓派、香橙派、全志H3、imx6)展示这么华...

飞扬青云
今天
3
0
责任链模式

//这篇博客的博主真的不错,解析的都很清晰明了, https://blog.csdn.net/jason0539/article/details/45091639

南桥北木
今天
3
0
Flutter -------- dio网络请求

dio是Flutter中文网开源的一个强大的Dart Http请求库,支持Restful API、FormData、拦截器、请求取消、Cookie管理、文件上传/下载、超时等... 1.添加依赖# dependencies: dio: 2.1.x #...

切切歆语
今天
1
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部