先阅读apache配置优化建议以下,再对相关参数进行调整,观察服务器情况.
Apache配置优化建议:
进入/usr/local/apache2/conf/extra 目录下
Apache优化,
通过上述操做后,Apache已经可以正常运行。可是,对于访问量稍大的站点,Apache的这些默认配置是没法知足需求的,咱们仍需调整Apache的一些参数,使Apache可以在大访问量环境下发挥出更好的性能。如下咱们对Apache配置文件httpd.conf中对性能影响较大的参数进行一些说明。
(1) Timeout 该参数指定Apache在接收请求或发送所请求内容以前的最长等待时间(秒),若超过该时间Apache则放弃处理该请求,并释放链接。该参数默认值为120,推荐设置为60,对于访问量较大的网站能够设置为30或15。
(2) KeepAlive 该参数控制Apache是否容许在一个链接中有多个请求,默认打开。但对于大多数论坛类型站点来讲,一般设置为off以关闭该支持。
(3) MPM - prefork.c 在默认状况下Apache使用Prefork(进程)工做模式,能够说这部分的参数设置是对Apache性能影响的核心和关键。用户能够在配置文档中找到如下配置段:apache
复制代码服务器
这就是控制Apache进程工做的配置段,为了更好的理解上述配置中的各项参数,下面让咱们先了解一下Apache是如何控制进程工做的。咱们知道,在Unix系统中,不少服务(Service)的守护进程(Daemon)在启动时会建立一个进程以准备应答可能的链接请求,服务即进入了端口监听状态,当一个来自客户端(Client)的请求被发送至服务所监听的端口时,该服务进程即会处理该请求,在处理过程当中,该进程处于独占状态,也就是说若是此时有其余请求到达,这些请求只能“排队”等待当前请求处理完成且服务进程释放。这样就会致使愈来愈多的请求处于队列等待状态,实际表现就是该服务处理能力很是低下。Apache使用Prefork模式很好的解决了这一问题。下面咱们来看看Apache其实是如何高效率工做的。
当Apache启动时,Apache会启动StartSpareServers个空闲进程同时准备接收处理请求,当多个请求到来时,StarSpareServers进行会愈来愈少,当空闲进程减小到MinSpareServers个时,Apache为了可以继续有充裕的进程处理请求,它会再启动StartsServers个进程备用,这样就大大减小了请求队列等待的可能,使得服务效率提升,这也是为何叫作Pre-fork的缘由;让咱们继续跟踪Apache的工做,咱们假设Apache已经启动了200个进程来处理请求,理论上来讲,此时Apache一共有205个进程,而过了一段时间,假设有100个请求都获得了Apache的响应和处理,那么此时这100个进程就被释放成为空闲进程,那么此时Apache有105个空闲进程。而对于服务而言,启动太多的空闲进程时没有任何意义的,反而会下降服务器的总体性能,那么Apache真的会有105个空闲进程么?固然不会!实际上Apache随时在检查本身,当发现有超过MaxSpareServers个空闲进程时,则会自动中止关闭一些进程,以保证空闲进程不过过多。说到这里,用户应该对Apache的工做方式有了必定的了解,若是想得到更多更详细的说明请参阅Apache手册文档。
咱们还有两个参数没有介绍:MaxClients和MaxRequestPerchild;MaxClients指定Apache在同一时间内最多容许有多少客户端可以与其链接,若是超过MaxClients个链接,客户端将会获得一个“服务器繁忙”的错误页面。咱们看到默认状况下MaxClients设置为15,这对一些中型站点和大型站点显然是远远不够的!也许您须要同时容许512个客户端链接才能知足应用需求,好吧,那么就让咱们把MaxClients修改成512,保存httpd.conf并退出,重启Apache,很遗憾,在重启过程中您看到了一些错误提示,Apache重启失败。错误提示中告诉您MaxClients最大只能设定为256,相信您必定很失望。不过不要沮丧,Apache做为世界一流的Web Server必定不会如此单薄的!在默认状况下,MaxClients的确只能设定为不超过256的整数,可是,若是您有须要彻底能够随意定制,此时就须要使用ServerLimit参数来配合使用,简单的说ServerLimit就像是水桶,而MaxClients就像是水,您能够经过更换更大的水桶(将ServerLimit设定为一个较大值)来容纳更多的水(MaxClients),但要注意,MaxClients的设定数值是不能大于ServerLimit的设定数值的!
注:MaxClents < ServerLimit
下面让咱们了解一下MaxRequestPerChild参数,该参数指定一个链接进程中能够有多少个线程同时工做。也许这样解释过于专业,那么您只要想一想“网络蚂蚁”、“网际快车FlashGet”中的“多点同时下载”便可,该参数实际上就是限制最多能够用几个“点”。默认设置为0,即为:不限制。但须要注意,若是将该值设置的太小会引发访问问题,若是没有特殊须要或者访问量压力并不是很大能够保持默认值,若是访问量很大则推荐设置为2048。
好了,解释了这么多,让咱们看看通过修改后Perfork.c配置段的推荐配置:网络
复制代码性能
完成了上述对Apache的调整,Apache已经得到了较大的性能改善。优化