it-swarm.cn

配置WordPress内存使用情况的理想方式是什么?

我们 在两个Rackspace Cloud服务器上运行一个WordPress多站点实例 一个Web和一个数据库,目前有30个左右的站点。我已将Nginx放在静态资产的前面,Apache处理所有动态请求。我还为数据库配置了Memcached,为PHP配置了APC操作码缓存。默认情况下,在我们拥有的所有站点上启用W3 Total Cache。

它有一个问题是快速恶劣:Apache进程通常在80到120 MB之间。 Web服务器有2 GB的内存,这意味着我需要15个左右的进程,直到事情发生。这些过程显然不应该那么大,但我对它们的原因感到困惑。

什么是识别正在发生的事情的好策略?

提前致谢!

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

8
Daniel Bachhuber

您谈到的Apache进程内存量(每个进程80到120 MB)可分为两个原因。

  1. 阿帕奇
  2. WordPress的

阿帕奇

您可以通过仅加载所需的模块数量以及其他可以减少内存的优化调整来优化Apache。如果您还没有进行优化,请进行一些调整。

WordPress的

Wordpress只消耗大量内存,而且根本不是很优化。我将首先用更正确实现的东西替换数据库类。这应该会获得更多的速度并大大减少内存使用量。接下来我没有那么多建议。我猜,不使用Worpdress不被认为有用。

策略

要了解正在发生的事情,您需要跟踪wordpress请求占用的内存量。有一个get peak usage函数( memory_get_peak_usage() )可用于监视worpdress内存使用情况。如果它接近你写的80 - 120 MB,你知道wordpress正在制造你的头痛。您可能希望记录时间戳,峰值内存,执行时间和请求的URI。

使用Nginx来提供缓存的wordpress页面肯定会对你有所帮助,因为它会阻止wordpress被加载 - 即使对于你使用的那些“入站”缓存也是如此。它们在概念上被破坏是因为它们是wordpress插件,因此即使对于缓存结果,也需要加载至少一部分wordpress。

4
hakre

丹尼尔,

我恭敬地不同意kenkeiter,我理解在Apache面前使用nginx作为反向代理。 Harvard Law在这个方法上取得了很大的成功,他们有一篇关于他们如何做到这一点的精彩文章,链接到他们的WordPress插件,它有助于与nginx接口:

http://blogs.law.harvard.edu/djcp/2010/01/nginx-as-a-front-end-proxy-cache-for-wordpress/

他们在Harvard Law中发现的是,由于nginx基本上缓存了前端的所有请求,因此在后端使用任何其他缓存类型的插件实际上并没有提高性能,并且不值得额外的复杂性。如果您认真考虑以这种方式使用nginx,我建议您查看有关其体验的文章,并尝试削减动态流程,包括WP端缓存。

一些基本的调查,如仔细查看您的Apache访问和错误日​​志,以查看实际上必须动态完成哪些类型的查询,并尝试减少这种情况也可能是一个良好的开端。

1
mitcho

好吧,首先,你使用Apache和Nginx - 有点多余。您应该使用Nginx/FastCGI w/PHP。本网站的教程应该有所帮助。否则,我最好的猜测是,您的代码最近的一些更改导致PHP中的某些错误无法正确释放内存。 Apache进程没有理由消耗那么多内存。

http://interfacelab.com/nginx-php-fpm-apc-awesome/

祝好运!

@kenkeiter

0
kenkeiter