如何限制Apache 2.4使用的内存总量(不是每个进程)

有没有办法限制Apache使用的内存总量(而不是每个进程)?

我有一个运行PHP和MySQL的Web服务器。 我需要1G的PHP内存限制或一些脚本将失败(dompdf / phpexcel)。 问题是有时候人们同时运行这些脚本。 Apache使用几GB的内存,MySQL是由于内存不足而死亡的。

我想将它限制为4 GB,所以如果同时调用5个以上的脚本,它们将无法运行。

我看了一下RLimitMEM,但它是每个进程。

在事件MPM上,我在Centos 6上使用Apache 2.4。

当我发现我正在寻找的是cgroups时,我正在寻找虚拟化解决scheme。 它正是我想要的:限制所有Apache进程的总内存量。

要在Centos 6上安装它:

yum install -y libcgroup 

编辑/etc/cgconfig.conf并添加:

 group http { memory { memory.limit_in_bytes = 4G; } } 

启动cgroups服务:

 service cgconfig start 

您也可以使用chkconfig自动启动它。

最后在cgroup下启动Apache:

 cgexec -g memory:/http /usr/local/apache2/bin/apachectl start 

我做了一些初步的testing,它的工作。 我们来看看在正常的工作量下明天会怎么做。