如何减less承诺的Apache内存?

10月24日更新

根据@David Schwartz的要求转储ps axl: http ://textuploader.com/?p =6& id=z8riS


在忙碌的时候,我们点击了Apache最大的连接(目前设置为256)。 我想增加最大连接数的设置,但是我们build议不要这样做,因为在这段时间内我们的记忆过度提交。 但是,实际的内存使用量似乎并没有接近承诺值。

如何计算Apache进程的承诺值? 我怎样才能减less这个?

我已经尝试将PHP memory_limit设置为较低的值,但是这对我的munin图中的提交值没有影响:

在这里输入图像说明

服务器规格:

  • 戴尔PowerEdge 2950 MKIII
  • 8 GB RAM
  • 单插槽四核Intel Xeon 5320 LV 1.86GHz
  • 2个146GB的SFF 10K RPM驱动器在RAID 1中
  • Apache / 2.2.15(Unix)
  • PHP 5.3.3

服务器专用于Apache(MySQL在另一个盒子上)。

我会尝试分离服务的PHP脚本和静态文件。

您可以非常有效地使用worker MPM来提供静态文件,甚至可以使用httpd 2.4+ event MPM 。 但是你不能使用这个MPM来提供PHP脚本,因为PHP不是线程安全的。

对于PHP,您可以运行单独的httpd实例(我在服务器上使用Listen 127.0.0.2:488运行它),并将主服务器configuration为反向代理:

 ProxyPreserveHost On DocumentRoot /var/www/html RewriteEngine On RewriteCond /var/www/html%{REQUEST_FILENAME} !-f [OR] RewriteCond %{REQUEST_FILENAME} \.php$ RewriteRule ^/(.*) http://127.0.0.2:488/$1 [P,L] 

使用mod_remoteip (再次 – 可从httpd 2.4获得),对PHP脚本来说是真正透明的。

或者使用例如php-fpm 。

这种方式请求静态文件,HTTP持久连接等将使用RAM的一小部分。