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

时间:2010-09-01 作者:Daniel Bachhuber

我们是running a WordPress multisite instance 在两台Rackspace云服务器上,一个web和一个数据库,目前有30多个站点。我将Nginx放在静态资产的前面,Apache处理所有动态请求。我还为数据库配置了Memcached,为PHP配置了APC op代码缓存。默认情况下,我们所有的站点都启用了W3 Total Cache。

它的速度非常快,但有一个问题:Apache进程通常在80到120 MB之间。web服务器有2 GB的内存,这意味着我可以得到15个左右的进程,直到事情变得一团糟。这些过程显然不应该那么大,但我不明白为什么会这样。

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

提前谢谢!

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

2 个回复
最合适的回答,由SO网友:hakre 整理而成

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

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

Wordpress只会消耗大量内存,根本没有经过优化。首先,我将用更正确实现的内容替换数据库类。这将提高速度并大大减少内存使用。除此之外,我没有太多建议。我想不使用Worpdress是没有帮助的。

策略要了解发生了什么,您需要跟踪wordpress请求占用的内存量。有一个获取峰值使用率功能(memory_get_peak_usage()) 您可以使用监视WorpAddress内存使用情况。如果它接近你写的80-120 MB,你就会知道wordpress让你头疼。您可能需要记录时间戳、峰值内存、执行时间和请求的URI。

使用Nginx服务缓存的wordpress页面肯定会对您有所帮助,因为它会阻止wordpress被加载,即使对于您使用的“入站”缓存也是如此。因为它们是wordpress插件,所以在概念上是不完整的,所以即使对于缓存的结果,也至少需要加载wordpress的一部分。

SO网友:mitcho

丹尼尔,

我不同意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访问和错误日志,以了解实际需要动态执行哪些类型的查询,并尝试减少此类情况也可能是一个良好的开端。

结束

相关推荐