用于低内存安装的Apache脚本

我一直在努力改善我们的Centos 5.5 VDS的内存使用情况,现在有了512MB的内存。 我已经能够使用tuneup脚本来极大地改进MySQLconfiguration,但是让Apache的内存使用率降低会有点麻烦。 我的一部分问题是在各种网站,论坛等方面的build议相互冲突。作为生产服务器,我将在testing机器上使用正常的修改和testing周期会有点太破坏性。

为了增加我的困惑,我将开发机configuration得尽可能接近VDS的克隆,并且使用更less的RAM和完全相同的Apacheconfiguration。 虽然在白天或晚上的安静时间比较两者显然很难适用相同的负载。

Apache是​​否有一个tuneup脚本,就像那些可用于MySQL的脚本一样,可以通过分析服务器运行时发生的事情来帮助优化configuration。

编辑:

要么我一直不清楚,或者人们没有阅读这个问题,所以我会澄清。

我不是在这里要求任何人提出build议或build议替代scheme。 我在问是否有人知道脚本可以分析服务器上正在发生的事情,并根据这些信息提供关于Apacheconfiguration的build议。

我不知道Apache的任何这样的脚本,因为与MySQL相比,只有一些影响Apache内存使用的东西:

  1. MaxClients:使用的内存越多,客户端越多。
  2. MODS:同样,更多的MODS /扩展安装需要更多的内存。
  3. dynamic脚本:运行dynamic脚本(如PHP)可能会增加内存使用量,具体取决于您的Apache设置。 例如,假设您有10个小的PHP文件,而且一个很less使用大型/内存密集型文件。 最终所有的Apache客户端都将运行这个庞大的PHP脚本并使用更多的内存。
  4. 编译时间:我没有玩过很多Apache编译时间设置,但是如果在那里有一些内存节省,我不会感到惊讶。

下面列出了一些您可以尝试的具体内容。 如果可能,首先尝试测量效果并对您的开发平台进行testing,并且/或者在生产站点逐步实施任何更改。

  1. 保持MaxClients尽可能低。 在一个小容量的网站上,你可能会远离10以下的数字。你还可以保持其他相关的设置,如MaxSpareServers低。
  2. 比较Apache的prefork vs工作模式,看内存使用情况是否有显着差异。
  3. 消除你没有使用的所有mod /扩展。 这可能比听起来更困难,因为决定使用哪一个并不容易。
  4. 对于MaxRequestsPerChild如果使用的是任何dynamic脚本,或者使用Apache实例,随着时间的推移,内存使用量会逐渐增加,因此请使用较低的值(100-1000)。 这会阻止内存饥饿或泄漏脚本,从而消耗太多的内存。
  5. 只有在真正需要的时候才能查看编译时内存优化,或者有许多编译Apache的经验。 就我个人而言,在这一步之前,我会研究其他服务器。

为什么不看一个小内存的Web服务器:NGINX? 它被称为低内存使用率,build议在VPS上运行的网站。

无论如何,这些天400MB是一个networking服务器并不多,你可能要考虑更换盒子! Apache2吃了很多内存。 它必须configuration,configuration选项是混乱的。

编辑你的Apacheconfiguration,通常在/etc/apache2/apache2.conf

在mpm_prefork_module设置中,将StartServers设置为1,将MinSpares设置为1或0,将MaxSpares设置为3.例如,运行10个进程将超载512MB服务器(Apache2的默认最小值为256mb,但不能执行任何操作接着就,随即 !)。 为了减less服务器上的占用空间/stream量,可以尝试如下所示:

 <IfModule mpm_prefork_module> StartServers 2 MinSpareServers 2 MaxSpareServers 3 MaxClients 150 MaxRequestsPerChild 500 </IfModule> 

在testingstream量负载时更改上述设置,以查看新设置是否可以处理。

你可以调低Apache的KeepAlive值(在我的情况下为2〜5),这样可以减less等待空闲客户端连接的服务器进程,这些进程可能不会请求更多的内容。

  KeepAlive On KeepAliveTimeout 2 MaxKeepAliveRequests 80 

降低服务器在等待请求之前等待的时间:

  Timeout 45 

你也可以阅读: http : //httpd.apache.org/docs/2.0/misc/perf-tuning.html

但是,再次,这个设置是非常小的stream量和NGINX可以做更多的相同的硬件..