为什么Magento这么慢?

时间:2009-10-28 18:32:41

标签: php magento optimization

Magento通常非常慢吗?

这是我第一次体验它,管理面板只需要很长时间来加载和保存更改。它是带有测试数据的默认安装。

托管服务器的服务器可以超快速地为其他非Magento站点提供服务。什么是Magento使用的PHP代码使它变得如此缓慢,以及可以采取哪些措施来解决它?

11 个答案:

答案 0 :(得分:177)

我一直只是在优化Magento的性能方面,但这里有一些原因导致系统速度太慢

  1. Magento的部分内容使用在MySQL之上实现的EAV数据库系统。这意味着查询单个“事物”通常意味着查询多行

  2. 幕后有很多东西(应用程序配置,系统配置,布局配置等),它们涉及在内存中构建巨型XML树,然后“查询”这些相同的树以获取信息。这需要内存(存储树)和CPU(解析树)。其中一些(尤其是布局树)非常庞大。此外,除非启用缓存,否则这些树将从<磁盘上的文件和每个请求上的构建

  3. Magento使用其配置系统允许您覆盖类。这是一个强大的功能,但它意味着只要实例化模型,帮助器或控制器,就需要运行额外的PHP指令来确定是否需要原始类文件或覆盖类文件。这加起来。

  4. 除了布局系统,Magento的模板系统还涉及大量的递归渲染。这加起来。

  5. 总的来说,Magento工程师的首要任务是建立最灵活,可定制的系统,并在以后担心性能。

    为确保更好的性能,您可以做的第一件事就是打开缓存(系统 - &gt;缓存管理)。这将减轻Magento构建其各种XML树时发生的一些CPU /磁盘阻塞。

    您要做的第二件事是确保您的主机和运营团队具有调整Magento的性能。如果你依靠7美元/月的计划来看你,那么,祝你好运。

答案 1 :(得分:54)

除了Alan Storm关于缓存的建议之外,我还特别建议您研究与缓存有关的两件事:

- 确保缓存在memcached中,而不是在磁盘上。

我负责管理几个magento安装,一旦你在系统上获得任何负载,memcached开始执行得更快。它的死很容易改变它(相对于至少做其他的magento东西!)

良好的起点在这里:http://www.magentocommerce.com/boards/viewthread/12998/P30/ - 但如果您以前根本没有使用过memcached,那么它也值得查看一些关于它的一般信息。

- 启用模板/视图缓存。

这篇文章很好:http://inchoo.net/ecommerce/magento/magento-block-caching/

magento网站上也有很好的(google magento block caching),但此时它已经停止了。

要将我的两分钱添加到块缓存中,我建议您在/ app / code / local中创建自己的块,扩展核心块并定义缓存参数,将它们命名为xxx_Cac​​he,然后更新您的布局以使用这些块而不是核心块。这样,您可以避免在升级magento时丢失更改或破坏系统。

答案 2 :(得分:23)

如果你还没有看到它,Magento和Rackspace联手打造了一篇关于Magento性能调整的白皮书。这很棒。 https://support.rackspace.com/whitepapers/building-secure-scalable-and-highly-available-magento-stores-powered-by-rackspace-solutions/

---编辑---

新推出的另一项重要资源(2011年10月)是: http://www.sessiondigital.com/assets/Uploads/Mag-Perf-WP-final.pdf

(感谢Alan Storm关于这一次。)

答案 3 :(得分:17)

您的管理界面非常慢,可能还有一个非常明显的原因。 Magento有一个名为Mage_AdminNotification的模块。尝试禁用该分机。因为它的作用是查询magentocommerce.com以获取新的更新消息。如果他们的服务器很慢,您的管理页面会等待,并且由于网络延迟和外部新闻的加载而实际上很慢。如果您通过防火墙保护了外发服务器连接,这可能会更令人沮丧,因为管理界面会在无法访问magentocommerce.com时等待超时

要禁用它:转到系统 - &gt;配置,滚动到底部并点击高级(在高级部分)。现在禁用Mage_AdminNotification并保存!

答案 4 :(得分:6)

我在公司中更多地参与了托管服务器优化,但我可能会为您提供一些提示。首先,您可以使用Zend服务器的代码跟踪功能更密切地查看代码。它可以让你看到事情变脏的地点和时间。

我完全赞同benlumley关于缓存的考虑。我们托管的大多数网站甚至都没有阻止缓存启用。必须显式调用此缓存而不是“假设”。因此,如果您的代码尚未参与此机制,那么您肯定想尝试一下。如果您有EE版本,您可以获得完整页面以获得最好的野兽。

反向代理也会有很大帮助。它将缓存静态资源,显着降低前端服务器的php解释堆栈的压力。

别忘了写会话&amp; Magento缓存到RAM磁盘。这也肯定会让你达到另一个级别的表现。

这里还有很多东西要说,但我已经没时间了。你必须知道一个好的网站,在1.4.1 CE版本中编码,在2x5650至强+ 16 GB RAM服务器上运行并且在顶部有一个Rproxy,每天最多可以吸引5万个独立访客,每个人都有流畅的页面

答案 5 :(得分:6)

我只对Magento有过肤浅的经历。我将它安装在共享的网格服务器上,页面加载惨淡〜5 +秒。在云雀上,我将它安装在我针对CMS网站专用服务器的优化上,它感觉非常非常活泼。

我的专属托管有~10 Joomla!站点和运行的VBullitin站点。

我的猜测是,它不会在共享主机上表现出色。超额认购不会让Magento有足够的资源来运行它。

答案 6 :(得分:5)

从Apache切换到LiteSpeed对我们帮助很大。除了:编辑MySQL的设置,安装Fooman Speedster(压缩/组合js和css文件的模块)和安装APC。 Magento还发布了一份关于如何从企业版中获得最佳性能的白皮书,但它同样适用于其他版本:http://www.magentocommerce.com/whitepaper/

答案 7 :(得分:4)

有很多原因可以解释为什么你的Magento购物车运行缓慢,但没有任何借口可以通过各种方法来解决问题并使其快速变得非常快。通过修改htaccess文件启用Gzip是一个开始。您还可以安装fooman speedster扩展。使用的服务器类型也将决定商店的速度。更多提示和更好的解释http://www.interactone.com/how-to-speed-up-magento/

答案 8 :(得分:3)

Magento非常慢,因为数据库设计不是很好。代码很乱,很难更新和优化。因此,所有优化都是通过缓存而不是代码完成的。

另一方面。这是一个拥有大量工具的网上商店。因此,如果您需要一个灵活的网上商店,只需购买一台非常强大的服务器,您就可以了。

答案 9 :(得分:3)

当我第一次安装时,我的页面加载时间为30秒。我的服务器没有使用ram或处理器,所以我不知道该怎么办。看看firebug的网络面板,它每页加载大约100个文件,每个文件需要很长时间才能连接。在htaccess中安装fooman speedster和gzip之后,加载时间减少到3秒,就像它们在我服务器上的其他购物车上一样。

答案 10 :(得分:3)

它还将归结为功能与性能。

使用nginx,php-fpm,memcached,apc和正确设计的服务器获得原始性能。

在设计magento性能云时,可以通过全面的基础设施来管理像plesk和magento性能这样的功能。