Apache服务器优化配置

Apache2.0拥有多个模式的多路处理模块(MPM)以处理网络端口绑定、接受请求并指派子进程来处理这些请求。MPM延续Apache的设计思想,以一个模块的形式存在与Apache中,所不同的是:任何时候,必须有且仅有一个MPM被载入到服务器中。
Apache MPM prefork 实现了一个非线程型的、预派生的web服务器,它的工作方式类似于Apache 1.3。它适合于没有线程安全库,需要避免线程兼容性问题的系统。prefork优点在于它会独立处理每个请求的进程,这样如果其中一个请求出现问题就不会影响到其他请求。同时可以应用于不具备线程安全的第三方模块(比如php3/4/5),且在不支持线程调试的平台上易于调试,而且还具有比worker MPM更高的稳定性。
prefork MPM使用多个子进程,但每个子进程并不包含多线程。并且每个进程在某一时刻也只处理一个请求。但在许多系统上它的速度和workerMPM一样快,只是内存的消耗要大一些。
prefork拥有一个单独的控制进程(父进程)负责产生子进程,这些子进程用于监听请求并作出应答。Apache随后会建立一些备用的(spare)或者是空闲的子进程用于迎接即将到来的请求。这样客户端就不需要在得到服务前等候子进程的产生(Apache)。

StartServers

指定服务器启动时建立的子进程数量,prefork默认为5。

MinSpareServers

指定空闲子进程的最小数量,默认为5。如果当前空闲子进程数少于MinSpareServers ,那么Apache将以最大每秒一个的速度产生新的子进程。此参数不要设的太大。

MaxSpareServers

设置空闲子进程的最大数量,默认为10。如果当前有超过MaxSpareServers数量的空闲子进程,那么父进程将杀死多余的子进程。此参数不要设的太大。如果你将该指令的值设置为比MinSpareServers小,Apache将会自动将其修改成”MinSpareServers+1″。

MaxClients

对于非线程型的MPM(也就是prefork),MaxClients表示可以用于伺服客户端请求的最大子进程数量,默认值是256。任何超过MaxClients限制的请求都将进入等候队列,一旦一个链接被释放,队列中的请求将得到服务。要增大这个值,你必须同时增大ServerLimit。

MaxRequestsPerChild

每个子进程在其生命周期内允许处理的最大请求数量(注意:是指总共的请求数,而不是并发请求数!),默认为10000。到达MaxRequestsPerChild的限制后,该子进程将会结束。如果MaxRequestsPerChild为”0″,子进程将永远不会结束。将MaxRequestsPerChild设置成非零值有两个好处:

1.可以防止(偶然的)内存泄漏无限进行,从而耗尽内存。

2.给进程一个有限寿命,从而有助于当服务器负载减轻的时候减少活动进程的数量。

ServerLimit

对于preforkMPM,这个指令设置了MaxClients最大允许配置的数值。对于workerMPM,这个指令和ThreadLimit结合使用设置了MaxClients最大允许配置的数值。任何在重启期间对这个指令的改变都将被忽略,但对MaxClients的修改却会生效。

使用这个指令时要特别当心。如果将ServerLimit设置成一个高出实际需要许多的值,将会有过多的共享内存被分配。如果将ServerLimit和MaxClients设置成超过系统的处理能力,Apache可能无法启动,或者系统将变得不稳定。

对于preforkMPM,只有在你需要将MaxClients设置成高于默认值256的时候才需要使用这个指令。要将此指令的值保持和MaxClients一样。

小内存VPS配置

<IfModule prefork.c>
StartServers       5 #httpd启动时开启三个子进程
MinSpareServers    5 #最小空闲子进程
MaxSpareServers    10 #最大空闲子进程
ServerLimit      150 #prefork模式下与MaxClients 配合使用
MaxClients        150 #限制该值的目的是为了防止小内存下产生过多子进程导致服务器崩溃。
MaxRequestsPerChild  1000 #一旦子进程处理了1000个请求后自动结束该子进程,开启新的子进程
</IfModule>

为了优化内存使用和防止产生交换,假设有着1GB内存的服务器最多可以支持65个并发请求。那需要更改MaxClients为65,这样才不会过度使用内存。为了确保在负载上运行时不会封杀客户端,大概应该将StartServers设置为65的一半,即30,同时也将MinSpareServers设置为30。最后,MaxSpareServers设置为40,这是一个适当的值,可以防止封杀客户端。

其他配置调整

  • 尽量不开启AllowOverride,尽量不使用.htaccess
  • 不需要symlink的话不启用FollowSymlinks
  • 注意DirectoryIndex各项的顺序
  • 关闭HostnameLookup
  • 启用Keep-Alive支持持久连接
  • 使用mod_deflate压缩内容
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值