我们的Magento商店变得太慢,加载页面大约需要1分钟。我在分析器中看到下面的输出,您能否让我们知道什么是db_update的事情,为什么需要太多时间以及我们如何解决这个问题。
layout/db_update: default 20.6206 1 0 0
layout/db_update: STORE_default 20.6189 1 0 0
layout/db_update: MAP_popup 20.6146 1 0 0
layout/db_update: MAP_price_msrp_item 20.6131 1 0 0
layout/db_update: SHORTCUT_popup 20.6116 1 0 0
layout/db_update: SHORTCUT_uk_popup 20.6098 1 0 0
layout/db_update: catalog_product_view 20.6077 1 0 0
layout/db_update: PRODUCT_TYPE_simple 20.6062 1 0 0
layout/db_update: customer_logged_out 20.6032 1 0 0
可以使用Aoe_Profiler
扩展来调试详细信息。您可以从此处安装它: https://github.com/AOEpeople/Aoe_Profiler
另请遵循本教程: http://fbrnc.net/blog/2012/08/magento-profiler#hello
我认为它将帮助您优化各种线程所花费的时间。
代码中运行此配置文件的唯一位置是函数Mage_Core_Model_Layout_Update::fetchDbLayoutUpdates
。
可能有多种原因导致该函数每次运行时需要 20 秒,按可能性排序:
- 自定义代码或第三方扩展,在布局更新期间执行昂贵的操作。例如,覆盖
Mage::getResourceModel('core/layout')->fetchUpdatesByHandle()
或该函数中使用的任何模型/帮助程序(很多)。 - 基础结构问题(可能与数据库有关)
- 非常慢/过载的数据库
- 数据库连接中的速度问题
就像另一个答案中提到的,您可以使用Aoe_Profiler来获取第一种情况的更多数据。
我个人更喜欢使用 NewRelic(或类似服务),因为它还会显示具体代码、数据库查询或第 3 方 API 的哪些部分运行缓慢的痕迹 - 让您更全面地了解可能减慢您网站速度的所有内容。
(免责声明:我是NewRelic的合作伙伴)