apache查看工作模式及调优

一,查看工作模式

/usr/sbin/httpd -l

Compiled in modules:
  core.c
  prefork.c
  http_core.c
  mod_so.c

如果出现prefork.c,表示apache工作在prefork模式下

二,prefork调优

ServerLimit 3000
StartServers 750
MinSpareServers 5
MaxSpareServers 100
MaxClients 3000
MaxRequestsPerChild 10000

首先来看看各个参数的意义(引号里引用的是官方文档的描述):
(1)ServerLimit和MaxClients 服务器最大同时响应请求数
这个就是你当前配置的最大的并发响应数,对应的是的进程数,两个参数同时修改,MaxClients不得大于ServerLimit参数。
ServerLimit的大小,取决于你系统的资源,每个进程默认占用2M内存,基本可以按照这个公式来计算:最大内存*80%/2M=ServerLimit

(2)StartServers 750 启动时默认启动的进程数
这个参数默认是5,因为会通过自动启动新进程来增加响应服务的进程数,这个值不做调整的也是可以的,会由默认的5增加到满足服务的进程数,但是会出现开始启动时的卡住。

启动参数有一个好处:就是可以让传递后后端tomcat的压力缓慢增加上来,而不是一下子增加压力。可以把这个调整到当前服务最大的并发数,当前服务最大
并发连接数,可以通过监控进程个数:ps -ef | grep httpd | wc -l
来获得。不用调得太大,否则是无谓增加通过jk去跟tomcat建立的连接。
注意:
所以不要一次启动太多的进程,只启动足够用的进程即可。其他增加的流量,会自动调整进程数,直到MaxClients参数限定的范围。

(3)MinSpareServers 5 最小空闲进程
MinSpareServers指令设置空闲子进程的最小数量。所谓空闲子进程是指没有正在处理请求的子进程。如果当前空闲子进程数少于MinSpareServers ,那么将以第一秒一个,第二秒两个,第三秒四个,按指数递增个数的速度产生新的子进程。

(4)MaxSpareServers 10 最大空闲进程
MaxSpareServers指令设置空闲子进程的最大数量。所谓空闲子进程是指没有正在处理请求的子进程。如果当前有超过MaxSpareServers数量的空闲子进程,那么父进程将杀死多余的子进程。

可以调整这两个参数,但是这两个参数的值不能设得太大,否则apache进程太多
官网上关于这两个参数都有这么句话:“将此参数设的太大通常是一个坏主意。”
在一台压力大(并发访问2800)的服务器上,MaxSpareServers这个值设置的是200。

(5)MaxRequestsPerChild 10000
"MaxRequestsPerChild指令设置每个子进程在其生存期内允许伺服的最大请求数量。到达MaxRequestsPerChild的限制后,子进程将会结束。如果MaxRequestsPerChild为"0",子进程将永远不会结束。
将MaxRequestsPerChild设置成非零值有两个好处:
* 可以防止(偶然的)内存泄漏无限进行,从而耗尽内存。
* 给进程一个有限寿命,从而有助于当服务器负载减轻的时候减少活动进程的数量。
注意
对于KeepAlive链接,只有第一个请求会被计数。事实上,它改变了每个子进程限制最大链接数量的行为。"
也就是说实际上这个时候子进程最大连接数等于MaxRequestsPerChild*MaxKeepAliveRequests
所以在开启KeepAlive后,需要同时设置MaxRequestsPerChild和MaxRequestsPerChild,确保每个apache进程在服务一定请求数后会关闭,重新开启新的子进程,避免apache进程异常导致的内存泄露和资源占用。

(6)Keep-Alive
默认:ON
发送的请求,在MaxRequestsPerChild里面只算一个,不管这个连接发送了多少个请求。

(7)MaxKeepAliveRequests
默认:100
"一个建立好的Keep-Alive连接,允许发送的请求的个数。一旦建立连接,要么就是个数达到了断开,要么就是等KeepAliveTimeout时间到了断开连接。
MaxKeepAliveRequests指令限制了当启用KeepAlive时,每个连接允许的请求数量。如果将此值设为"0",将不限制请求的数目。我们建议最好将此值设为一个比较大的值,以确保最优的服务器性能。"
这个数字的设置,必须考虑在一个时间段内,同一个用户访问你的服务会发多少请求。要结合KeepAliveTimeout参数来考虑。

个例子,用户需要间隔时间不大于KeepAliveTimeout的时间内,连续请求10个文件,那么这个参数就应该设置成10,如果用户在连续时间里不
断请求访问,则这个数值得设置得更多。否则就重新建立连接下载。一旦用户连续进行了10个请求后,并且这个用户肯定在完成这些请求后的5秒内不会再请求,
甚至要在之后的很长时间后请求,那么这个KeepAliveTimeout时间就可以设置得很短,以便尽早断开这种用户,把资源让个其他用户。

(8)KeepAliveTimeout
默认:5
"在一个建立好的Keep-Alive连接上,在MaxKeepAliveRequests个数未满的情况下,等待下一个请求的时间。"
如果有请求到达,那么apache等待IO响应的timeout时间时间开始生效,timeout时间没等到响应,连接被断开;如果KeepAliveTimeout时间内,没有请求到达,连接就被断开。
具体设置可以参考配合MaxKeepAliveRequests参数。同时这个参数又受TimeOut参数影响,在一次成功连接中,TimeOut时间内没有等到响应,也会断开连接。

(9)TimeOut
默认:300
"TimeOut指令用于设置Apache等待以下三种事件的时间长度:
1. 接受一个GET请求耗费的总时间。
2. POST或PUT请求时,接受两个TCP包之间的时间。
3. 应答时TCP包传输中两个ACK包之间的时间。
我们计划在发展里程中,逐步把它们分别变得更易配置。计时器在1.2版本之前的默认值为1200,而现在已经设置为300了,但对于绝大多数情况来说仍是足够的。没有把它默认值设的更小的原因在于代码里还有点问题:有时发送一个包之后,计时器没有复位。”

时间: 2024-10-01 04:26:50

apache查看工作模式及调优的相关文章

apache的工作模式 和 最大连接数设置

经过测试 效果明显 (1)首选查看apache的工作模式 windows下的查看apache的工作模式命令:httpd -l 如果列出mod_win32.c,则表示是 win32.c 工作方式. 列出的全部内容如下所示: core.c mod_win32.c mpm_winnt.c http_core.c mod_so.c mpm_winnt.c是专门针对Windows NT优化的MPM(多路处理模块),它使用一个单独的父进程产生一个单独的子进程,在这个子进程中轮流产生多个线程来处理请求.也就是

Apache的工作模式和最大并发请求数设置

http://blog.csdn.net/hxsstar/article/details/18699045 什么是apache的工作模式? 个人理解:apache的工作模式就是apache在运行时候的内存分配,进程和线程的使用方式.举个例子:一台apache正在运行的服务器,如果有个用户访问这个apache,那么apache是启用一个进程来处理用户的请求呢?还是在已有的进程中启用一个线程来处理该用户的请求?这个选择就是 apache的工作模式来确定的.如果指定了某个工作模式比如prefork模式

Apache的工作模式

参考链接: http://httpd.apache.org/docs/2.4/ http://httpd.apache.org/docs/2.4/mpm.html/  MPM是Multi-Processing Modules,表示Apache中的多路处理模块,目前在Linux上的Apache 2.2/2.4中包括三种模式:prefork.worker和event模式 1,查看apache 使用的工作模式 /usr/local/apache2/bin/httpd -l  Compiled in m

Apache 的工作模式

1.apache三种工作模式我们都知道Apache有三种工作模块,分别为prefork.worker.event.    prefork:多进程,每个请求用一个进程响应,这个过程会用到select机制来通知.    worker:多线程,一个进程可以生成多个线程,每个线程响应一个请求,但通知机制还是select不过可以接受更多的请求.    event:基于异步I/O模型,一个进程或线程,每个进程或线程响应多个用户请求,它是基于事件驱动(也就是epoll机制)实现的. 2.prefork的工作原

free vmstat查看内存及系统调优【转】

内存查看 查看内存是否存在瓶颈,使用top指令看比较麻烦,而free命令更为直观: [/home/weber#]free total used free shared buffers cached Mem: 501820 452028 49792 37064 5056 136732 -/+ buffers/cache: 310240 191580 Swap: 0 0 0 [/home/weber#]top top - 17:52:17 up 42 days, 7:10, 1 user, load

Apache性能调优视频教程

性能测试之Apache性能调优课程 课程观看地址:http://www.xuetuwuyou.com/course/37 课程出自学途无忧网:http://www.xuetuwuyou.com/ 本课程包括但不限于Apache的介绍.Apache的监控方式.Apache的工作模式.Apache的参数调优等内容. 浅入浅出学习最流行的Web服务软件Apache,学完后可以独自进行Apache的性能调优. 课时1:Apache是个什么鬼 课时2:通过server-status监控apache 课时3

Apache的三种工作模式

Web服务器Apache目前一共有三种稳定的MPM(Multi-Processing Module,多进程处理模块)模式. 它们分别是prefork,worker和event,它们同时也代表这Apache的演变和发展. 如何查看我们的Apache的工作模式呢?可以使用httpd -V 命令查看,如我安装的Apache 2.4版本. $ /usr/local/apache24/bin/httpd -V Server version: Apache/2.4.18 (Unix) Server buil

Apache优化配置——工作模式

Apache所运行的硬件环境都是对性能影响最大的因素 各个硬件指标中,对性能影响最大的是内存,其次是硬盘的速度 ●Apache的工作模式 1.prefork模式(一个 非线程型的) ⑴.主要工作方式:当Apache服务器启动后,mpm_prefork模块会预先创建多个子进程(默认为5个),每个子进程只有一个线程,当接收到客户端的请求后,mpm_prefork模块再将请求转交给子进程处理,并且每个子进程同时只能用于处理单个请求.如果当前的请求数将超过预先创建的子进程数时,mpm_prefork模块

(转载)关于Apache 的两种工作模式

今天在查看服务器的时候,发现服务器http请求数 每天增长越来越多,在优化集群服务器的时候,查看到Apache 的工作模式是prefork,于是想到了worker 模式, 想暂时的把当前运行模式改成worker 试试 ,暂时缓解下... 关于这两种模式的介绍  就不写了,网上已经很多 转载即可 地址:http://www.ccvita.com/339.html 内容如下: apache作为现今web服务器用的最广泛也是最稳定的开源服务器软件,其工作模式有许多中,目前主要有两种模式:prefork