Apache优化

Apache优化  



一、在优化之前先了解一下Apache的三种运行方式
1、            预生派(profork);
 
这种运行方式首先产生一个父进程,然后创建并启动可配置数量的子进程监听客户请求;当监听到客户请求后子进程就响应此请求,重要的是父进程始终监视子进程,当没有足够的空闲子进程为客户服务时,父进程就会创建并运行新的新的子进程为客户服务,如果存在过多的子进程,父进程会依次终止这些空闲的子进程,知道服务器回到最大的空闲子进程数量之下,通过始终保持一定数量的子进程来响应客户请求,服务器可以避免在接收客户请求时启动新进程的开销。
2、            工作者;(worker);
 
此模块是混合使用进程和线程的运行模型,这种运行方式首先启用一个父进程,然后创建并启动一定数量可配置的子进程,每个子进程都创建并启动相同数量的线程,由线程监听客户请求,重要的是父进程始终监视子进程,当没有足够的线程来为客户服务时,父进程就会创建并运行新的子进程,并在子进程中创建于先前子进程创建的相同数量的线程来为客户服务,这种方式是以牺牲可靠性和健壮性来换取可扩展性;
3、            独立子进程;(perchid);
 
这是一种运行于UNIX系统上的运行模式,它也是混合使用进程和线程的一种运行模式,这种模式与工作者模块类似,只是每个子进程创建的线程数量可以不一致,即每个子进程可以创建指定数量的线程,当服务器的负载增加后,apache不会创建新的子进程,而是在当前子进程之一上创建新的线程为客户提供服务,这种运行方式具有最高的可扩展性,但却具有最低的可靠性;可以使用
 
二、查看apache 使用那种方式运行
apachectl –l 来查看已经被编译的模块;
在列出来的模块中有prefork.c,说明apache用的是预生派的方式运行;
在httpd.conf中去掉第372行的注释;
[root@dns extra]# /usr/local/apache2/bin/apachectl -l |grep pro*
  prefork.c


进入 extra目录编译httpd-mpm.conf文档;找到prefork多路处理模块,
 
 
 
 
StartServers:
设置服务器启动时运行的进程数;因为子进程数量动态的取决于负载的轻重,所有一般没有必要调整这个参数;
MinSpareServers :
设置空闲子进程的最小数量。所谓空闲子进程是指没有正在处理请求的子进程。如果当前空闲子进程数少于 MinSpareServers 的值,那么apache 将以最大每秒一个的速度产生新的子进程。只有在非常繁忙机器上才需要调整这个参数。没有必要将此参数设置太大;
MaxSpareServers:
设置空闲子进程的最大数量。如果当前有超过MaxSpareServers设置的数量的空闲子进程,那么父进程将杀死多余的子进程,通常只有在比较繁忙的机器上调整这个参数,不必设置过大的数量;有意思的是 ,如果把MaxSpareServers的参数修改成比minspareservers小,那么apache将自动将其修改成 “minspareserver+1”
 ★MinSpareServers与MaxSpareServers指令控制着服务器池的大小,以便有子进程等待服务引入的请求。对于网站,这些指令的最佳设定值需要根据流量变化的速率而定,如果网站流量中有很高的谷峰,那就需要够大的minspareserver来应付这些谷峰;
基本思想是:永远不要发生当请求发送至网站却没有闲置的进程在等待处理请求的情形。如果网站的流量状况十分平均而没有突然的谷峰,使用默认值就可以。
ServerLimit:
服务器允许配置的进程数上限,只有在你需要将MaxClients设置成高于256的时候才需要使用,要将此指令的值保持和MaxClients一样,修改此指令的值必须完全停止服务后在启动才能生效,以restart 方式重启动,将不会生效。
MaxClients:
用于伺服客户端请求的最大请求数量(最大子进程数)任何超过  MaxClients限制的请求都将进入等候队列,默认值是256,如果提高这个值必须同时提高serverlimit的值,建议将初始值设为(以MB为单位的最大物理内存/2),然后根据负载情况进行动态调整,比如一台4G内存的伺服器,那么初始值就是4000/2=2000;       
MaxRequestsPerChild:  
设置每个子进程在其生存期内允许伺服器的最大请求数量,到达Maxrequestsperchild的限制后,子进程将会结束。如果设置为“0”,子进程将永远不会结束。将maxqueresperchild设置成非零值有两个好处:可以防止(偶然)内存泄漏无线进行而耗尽内存;给进程一个有线寿命,从而有助于当服务器负载减轻的时候减少活动进程的数量。如果设置为非零值,建议设置为10000-30000 之间的一个值,到达maxrequestsperchild的限制后,子进程将会结束;
公式
Maxclients<=serverlimit


“如果用尽ram,并开始使用交换空间,服务器的性能就突然下降,直到不在使用交换空间”


#########################################################


配置默认文件信息
httpd-default.conf Config/extra/httpd-default.conf
 
[root@dns extra]# grep -v "#" httpd-default.conf
 
Timeout 300  
//如300秒后没有收到或者送出任何数据就切断连接;timeout 设置apache等待一个连续读写操作的时间长度,也就是连接后,apache 等待客户端完成请求发送的时间,或者相应开始之后,apache写出数据到客户端连接的时间长度,
无论对于那种应用来说,300秒的缺省值都有些过长了,意味着,如果客户端发生某种未知因素导致的迟滞连接,服务器的一个连接和与之对应的所有资源都要维持300秒,这个对于重载服务器来说实在是有些过长了,建议将此值设置得小一些,这个长度只要足够保证各种客户端的应用能够正常传递数据即可。视各种客户端的连接状况和服务器的繁忙程度。一般来说设置3-5;
KeepAlive On
//使用保持连接功能,即客户一次请求只能响应一个文件,建议用户将此参数的值设置为on,即允许保持连接的功能;如果同一页面包含大量的静态文件的应用,设置为on,以提高性能;如果用于主要为动态页面的应用,设置为off,以节约内存资源;如果服务器前跑有squid或者其他七层设备,设置为On;
MaxKeepAliveRequests 100 
//在使用保持连接功能时,设置客户一次请求连接能响应文件的最大上限;也就是每个连接允许请求的数量(最多保持多少个活动的长链接)。如果将此设置为“0”,将不限制请求的数目。建议将此值设为100-500之间的一个值,以确保最优的服务器性能。
 
KeepAliveTimeout 5
在使用保持连接功能时,两个相邻的连接时间间隔超过5秒就切断连接;也就是 设置持久连接中服务器在两次请求之间等待的秒数,对于高负荷服务器来说Keeplivetimeout 值较大会导致一些性能方面的问题,超时值越大,与空闲客户端保持的连接进程就越多;
 
 
keepalivetimeout 这个参数决定了,在什么都不做之前,一个http进程能够等待多长时间?设想一下,如果keepalive设置为on,而 keepalivetimeout设置为一个比较大的数字,apache占用内存会很快的增长。这是因为,一个apache进程完成了一个任务(并达到了一定的内存占用,想一下“渐进”模式),并不会马上退出,而是等待一个keepalivetimeout时间。假设用户的链接请求持续不断的到来,则积累起来的无用的apache进程就会相当多,直到timeout,这些进程才会被杀死。
UseCanonicalName Off
配置服务器如果确定它自己的域名,可选值为on|off|dns。dns用于为大量基于IP的虚拟主机支持那些古董级的不提供“host:”头的浏览器使用,建议设置为off;
 
AccessFileName .htaccess
 
设置分布配置文件的名字,默认为.htaccess。如果为某个目录启用了分布式配置文件功能,那么在向客户端返回其中的文档时,服务器将在这个文档所在的各级目录中查找此配置文件,因此会带来性能问题,笔者建议关闭分布式配置文件功能。
ServerTokens Full
控制服务器回应给客户端“server:”应答是否包含关于服务器操作系统类型和编译进的模块信息,同时还控制着serversignature指令的显示内容;可选值为
Full | os | minor |minimal |major |prod .建议设置为显示最少信息的prod;
ServerSignature On
配置服务器生成页面的页脚,可选值为ON|OFF|Email。采用on 会简单的增加一行关于服务器版本和正在伺服的虚拟主机的server name,而email设置会额外创建一个指向serveradmin的”mailto:”部分。建议设置为off;
HostnameLookups Off
设置是否启用对客户端IP的DNS查找,可选值为on | off |double .DNS查询会造成时间消耗,建议设置为off;
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值