在APC + PHP中,多lessRAM太多了? 可以将apc.shm_size设置为很多GB吗?

在我们的服务器上,我们有很多内存供我们的stream量(16GB)使用。 HTTP进程经常吃掉所有的CPU,需要重新启动,甚至没有接近使用交换内存,所以我正在寻找方法来花费内存来缓解Apache的负载(和/或帮助可能是单独的MySQL服务器打破了Apache)。

我在HTTPD实例上安装了很多WordPress,因此APC有时会使用多达900MB的内存(根据apc.php图表)。 以防万一我apc.shm_size设置为1600MB这是超过它的需要,但不能超过我可以备用。 这意味着APC通常有很多额外的内存,但是很less的周转率和碎片也不会超过1%。

这是危险的吗? 原则上,我应该把APC减less到小于1GB吗? 我是否应该期待APC内的一些营业额以降低整体占地面积的名义?

拥有如此多的内存专用于APC意味着在顶层/顶层,每一个httpd进程在VIRT内存列中显示〜1.9GB。 显然这是共享内存,并不是每个进程使用,但它可能会伤害我们的服务器?

注意:服务器的问题仍然不清楚,但效果是每天大约60次,所有8个CPU的容量都达到100%,一切都停止运行,直到Monit发现Apache损坏并重新启动(Monin也保存了MySQL服务器)。 我不确定APC是否是问题的一部分,但我正在努力优化一切以防万一。

有这么多的分配通常是过度的。 在这种情况下,你可能觉得你需要,因为所有不同的文件。 更有用的是通过合并Wordpress安装来减less需要caching的文件数量。 无论如何,如果APC永远达不到1,000 MB使用,那么多于这个是多余的。

要设置多less个MaxClient是服务器繁忙程度的函数,特别是Apache和其他程序驻留部分的大小。 有了16GB的ram,即使有一半分配给Mysql(InnoDB缓冲池–InnDB比MyIsam更好地控制成员,即使花费更多的内存),几百个Apache进程通常也是完全足够的每台服务器每天提供1000万PHP点击量,平均每次使用40个进程)。

拥有由NginX服务的静态图像,CSS,JS等,坐在(或在一个单独的URL)前面的Apache服务器也将减lessPHP能力较强的服务器需要做的工作 – 通常非常大。 http://blogs.law.harvard.edu/djcp/2010/01/nginx-as-a-front-end-proxy-cache-for-wordpress/对此有一些想法,还有其他博客等会引导你在Apache前面安装Nginx,不pipe有没有涉及到Wordpress。

最后,KeepAlives将主要杀死一个繁忙的网站。 现在推荐将其closures,以避免您经常看到的那种资源匮乏。 例如,如果您设置了100个MaxClients,并且保持时间为30秒,则在30秒内只有100个访问者将持有所有Apache插槽,并且您不能再提供其他任何服务。 KeepAlive Off

我不认为分配这么多的内存是一个问题,如果它是可用的,而不需要在别处。 有一件事你可以做的是更好地使用APC是使用像W3总caching或马克Jaquith的APC对象caching插件的WordPress对象caching。

对于你的CPU问题,我会看你的MaxClients和MaxRequestsPerChild。 他们可能设置得太高。 也看看你的KeepAliveTimeout设置,并确保它不高。

我想你可以允许尽可能多的内存,你想要的APC。 APC用来caching操作码的内存不会被文件系统用来caching读取的文件。

为了减lessCPU负载,您可以configuration资产到期(css,js,图像)。 在apache上安装mod_expire,并根据需要使用.htaccess定义过期标题。 如果你不这样做。 浏览器检查文件是否已经改变,即使它们在caching中。 这会产生大量命中并消耗CPU周期。

使用wordpress的les实例也不错。

但最好的增加将是检查WordPress的网站是如何编码的。 插件需要很多的权力。 有时用户安装他们的愚蠢的东西,如包括谷歌分析代码在页脚,而它可以embedded在footer.php模板文件。