问题描述

我们是两个 Rackspace Cloud 服务器上的 running a WordPress multisite instance,一个 Web 和一个数据库,目前有 30 个左右的站点。我把 Nginx 放在静态资源的前面,Apache 处理所有动态请求。我还配置了 Memcached 为数据库和 APC 操作代码缓存为 PHP 。 W3 默认情况下,我们拥有的所有网站都默认启用总缓存。

一个问题是快速恶化:Apache 进程的重量在 80 到 120 MB 之间。网络服务器具有 2 GB 的内存,这意味着我得到 15 个左右的进程,直到事情发生。这些过程显然不应该是那么大,但我对于他们为什么感到困惑。

什么是确定发生什么的好策略?

提前致谢!

更新 10/2/10:对于那些想知道的问题,解决内存问题的问题是禁用 PHP xdebug(无意中启用配置并导致随机内存使用率峰值) 。

最佳解决方案

你谈论的 apache 进程内存量 (每个进程 80 到 120 MB) 可以分为两个原因。

  1. 阿帕奇

  2. WordPress 的

Apache

您可以通过仅加载所需的模块数量和其他优化调整来优化 apache,从而减少内存。如果还没有优化,请给它一些调整。

WordPress

WordPress 只是消耗大量的内存,并没有很好的优化。我将从更正确地实现的东西替换数据库类开始。这应该获得更多的速度,并减少内存使用量很多。旁边,我没有那么多建议。没有使用 Worpdress 不被认为是有帮助的我猜。

Strategies

要了解发生了什么,您需要跟踪一个 wordpress 请求占用多少内存。有一个获取峰值使用功能 (memory_get_peak_usage()),您可以用来监视 worpdress 内存使用情况。如果它接近你写的 80 – 120 MB,你知道 wordpress 正在创造你的头痛。您可能需要记录 time-stamp,峰值内存,执行时间和请求的 URI 。

使用 Nginx 服务缓存的 wordpress 页面绝对会帮助你,因为它会阻止 wordpress 加载 – 即使是那些你所使用的那些”inbound” 缓存。它们在概念上被破坏,因为它们是一个 wordpress 插件,所以即使对于缓存的结果,还需要加载 wordpress 的至少一部分。

参考文献

注:本文内容整合自 Google/Baidu/Bing 辅助翻译的英文资料结果。如果您对结果不满意,可以加入我们改善翻译效果:薇晓朵技术论坛。