有没有办法限制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,它的工作。 我们来看看在正常的工作量下明天会怎么做。