CentOS系统Apache服务器优化详解

系统 Linux
主要讲解在CentOS系统中Apache的优化步骤,对于访问量稍大的站点,Apache的这些默认配置是无法满足需求的,我们仍需调整Apache的一些参数。

Apache是世界使用***的Web服务器软件。它可以运行在几乎所有广泛使用的计算机平台上,由于其跨平台和安全性被广泛使用,是***的Web服务器端软件之一。现在我们就来看看在CentOS系统中Apache的优化。

1.Apache优化

Apache能够在CentOS系统正常运行。但是,对于访问量稍大的站点,Apache的这些默认配置是无法满足需求的,我们仍需调整Apache的一些参数,使Apache能够在大访问量环境下发挥出更好的性能。CentOS系统中,以下我们对Apache配置文件httpd.conf中对性能影响较大的参数进行一些说明。

(1)Timeout该参数指定Apache在接收请求或发送所请求内容之前的最长等待时间(秒),若超过该时间Apache则放弃处理该请求,并释放连接。该参数默认值为120,推荐设置为60,对于访问量较大的网站可以设置为30。

(2)KeepAlive该参数控制Apache是否允许在一个连接中有多个请求,默认打开。但对于大多数论坛类型站点来说,通常设置为off以关闭该支持。

(3)MPM-prefork.c在默认情况下Apache使用Prefork(进程)工作模式,可以说这部分的参数设置是对Apache性能影响的核心和关键。用户可以在配置文档中找到以下配置段:
 

  1. <IfModuleprefork.c> 
  2. StartServers5  
  3. MinSpareServers5  
  4. MaxSpareServers10  
  5. MaxClients15  
  6. MaxRequestsPerChild0  
  7. IfModule> 

这就是控制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手册文档。

我们还有两个CentOS系统参数没有介绍:MaxClients和MaxRequestPerchild;MaxClients指定Apache在同一时间内最多允许有多少客户端能够与其连接,如果超过MaxClients个连接,客户端将会得到一个“服务器繁忙”的错误页面。我们看到默认情况下MaxClients设置为15,这对一些中型站点和大型站点显然是远远不够的!也许您需要同时允许512个客户端连接才能满足应用需求,好吧,那么就让我们把MaxClients修改为512,保存httpd.conf并退出,重启Apache,很遗憾,在重启过程当中您看到了一些错误提示,Apache重启失败。

错误提示中告诉您MaxClients***只能设定为256,相信您一定很失望。不过不要沮丧,Apache作为世界***的WebServer一定不会如此单薄的!在默认情况下,MaxClients的确只能设定为不超过256的整数,但是,如果您有需要完全可以随意定制,此时就需要使用ServerLimit参数来配合使用,简单的说ServerLimit就像是水桶,而MaxClients就像是水,您可以通过更换更大的水桶(将ServerLimit设定为一个较大值)来容纳更多的水(MaxClients),但要注意,MaxClients的设定数值是不能大于ServerLimit的设定数值的!

下面让我们了解一下MaxRequestPerChild参数,该参数指定一个连接进程中可以有多少个线程同时工作。也许这样解释过于专业,那么您只要想想“网络蚂蚁”、“网际快车FlashGet”中的“多点同时下载”即可,该参数实际上就是限制最多可以用几个“点”。默认设置为0,即为:不限制。但需要注意,如果将该值设置的过小会引起访问问题,如果没有特殊需要或者访问量压力并非很大可以保持默认值,如果访问量很大则推荐设置为2048。

好了,解释了这么多,让我们看看经过修改后Perfork.c配置段的推荐配置:
 

  1. <IfModuleprefork.c> 
  2. StartServers5  
  3. MinSpareServers5  
  4. MaxSpareServers10  
  5. ServerLimit1024  
  6. MaxClients768  
  7. MaxRequestsPerChild0  
  8. IfModule> 

完成了上述CentOS系统中对Apache的调整,Apache已经获得了较大的性能改善。记住,在修改任何参数后都需要重启Apache才能生效的。有关Apache的优化远远不止这些,有兴趣的用户可以阅读Apache手册文档或者寻找一些文献资料学习。

【编辑推荐】

  1. 问题解决CentOS系统自动挂载光驱
  2. CentOS系统 aMule 编译
  3. 保卫你的CentOS系统安全
  4. 你要如何选择RHEL CentOS系统
  5. 在CentOS系统安装配置proftpd
责任编辑:小霞
相关推荐

2011-03-11 15:52:59

LAMP优化

2010-03-31 14:17:03

CentOS系统

2010-03-31 15:24:15

CentOS系统

2010-03-31 15:08:28

CentOS系统

2010-03-31 15:45:45

CentOS系统

2010-05-17 16:50:38

IIS服务器

2010-05-21 11:50:54

IIS服务器

2019-01-30 14:42:00

Apache服务器web服务器

2018-05-04 12:22:47

2010-02-23 15:09:58

CentOS FTP

2013-02-18 10:12:58

Apache服务器访问动态网站

2018-04-02 15:07:01

LinuxApacheWeb服务器

2009-12-30 10:09:08

Ubuntu Apac

2014-09-22 09:52:06

2022-05-05 09:27:31

Linux服务器优化

2010-02-03 17:25:07

CentOS服务器

2022-09-26 09:19:38

服务器优化

2010-05-19 10:31:07

IIS服务器

2010-09-10 16:19:31

配置tftp服务器

2009-09-02 14:23:19

邮件服务器性
点赞
收藏

51CTO技术栈公众号