Magento 怎么这么慢?

Magento 通常都这么慢吗?

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

它所托管的服务器为其他非 Magento 站点提供超快的服务。Magento 使用的 PHP 代码是如何使它变得如此缓慢的,可以做些什么来修复它?

98763 次浏览

我只参与了 Magento 的性能优化,但这里有几个原因可以解释为什么系统这么慢

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

  2. 在幕后有很多事情(应用程序配置、系统配置、布局配置等) ,包括在内存中构建巨大的 XML 树,然后“查询”这些树以获取信息。这需要内存(存储树)和 CPU (解析树)。其中一些(特别是布局树)是巨大的。此外,除非开启缓存,否则这些树是由 从磁盘上的文件每一个要求构建的。

  3. Magento 使用其配置系统允许您重写类。这是一个强大的特性,但它意味着每当实例化模型、助手或控制器时,都需要运行额外的 PHP 指令来确定是否需要原始类文件或重写类文件。这就说得通了。

  4. 除了布局系统,Magento 的模板系统还涉及到很多递归渲染。

总的来说,Magento 工程师的首要任务是构建最灵活、可定制的系统,然后再考虑性能问题。

要确保更好的性能,您可以做的第一件事是打开缓存(System-> Cache Management)。这将在一定程度上缓解 Magento 建立各种 XML 树时出现的 CPU/磁盘阻塞问题。

你要做的第二件事是 abc0有在 Magento 性能调优的经验。如果你依靠每月7美元的计划来度过难关,那么,祝你好运吧。

继 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 块缓存) ,但是现在已经关闭了。

为了给块缓存添加我的建议,我建议你在/app/code/local 中创建自己的块,扩展核心块并定义缓存参数,将它们命名为 xxx _ Cache,然后更新布局,使用这些块而不是核心块。这样,在升级 magento 时可以避免丢失更改或中断系统。

如果你还没有看过,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。)

有很多原因为什么你的 Magento 购物车可以运行缓慢,但没有借口,有各种各样的方式来提高问题,使其相当快。通过修改 htaccess 文件来启用 Gzip 是一个开始。您还可以安装 fooman Speedster 扩展。使用的服务器类型也将决定存储的速度。更多的技巧和更好的解释在这里 http://www.interactone.com/how-to-speed-up-magento/

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

另一方面。这是一个有很多工具的网上商店。因此,如果你需要一个灵活的网上商店只是购买一个非常强大的服务器,你会没事的。

当我第一次安装时,我的页面需要30秒才能加载。我的服务器在内存或处理器上没有达到最大值,所以我不知道该怎么办。看看 Firebug 的网络面板,它每页装载大约100个文件,每个文件连接都需要很长时间。在 htaccess 中安装了 fooman Speadster 和 gzip 后,加载时间降到了3秒,就像在我服务器上的其他购物车上一样。

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

我更多地参与了我公司的托管服务器优化,但我可能有一些技巧给你。首先,使用 Zend 伺服器的程式码追踪功能,你可以更仔细地查看程式码。它可以让你看到什么时候,什么地方的东西变脏了。

我完全同意 Benlumley 对宝藏的看法。我们托管的大多数站点甚至都没有启用块缓存。这个缓存必须显式调用,而不是“假定”。因此,如果您的代码还没有采用这种机制的一部分,那么您肯定想尝试一下。如果您有一个 EE 版本,您可以获得完整的页面,以便得到最好的野兽。

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

不要忘记将会话和 Magento 缓存写入 RAM 磁盘。这也肯定会让你的表演达到另一个水平。

还有很多话要说,但是我没时间了。你必须知道,一个优秀的站点,在1.4.1 CE 版本中编码良好,运行在2x5650至强 + 16GB 内存服务器上,顶部有一个 Ragent,每天可以带来多达50000个独立访问者,每个人都可以访问平滑的页面。

它还将归结为功能与性能的对比。

使用 nginx、 php-fpm、 memcached、 apc 和适当设计的服务器可以获得原始性能。

在设计 magento 性能云时,可以通过透视整个基础设施来管理 plesk 和 magento 性能等功能。

我对 Magento 只有很肤浅的经验。我在一个共享网格服务器上安装了它,页面加载时间是令人沮丧的5秒多。只是玩玩而已,我把它安装在我为内容管理系统网站优化过的专有服务器上,感觉非常非常爽。

我的专用托管有约10个 Joomla! 网站和一个 VBullitin 网站运行。

我的猜测是,它只是不会在共享主机上表现良好。超额订阅只是不允许 Magento 有足够的资源按照它应该的方式运行。

可能还有一个非常不明显的原因,为什么你的管理界面非常慢。Magento 有一个名为 Mage _ AdminNotification 的模块。试着关掉那个分机。因为它的作用是查询新的更新消息的 magentocommerce.com。如果他们的服务器是缓慢的,你的管理页面等待,实际上是缓慢的,因为网络延迟和外部新闻的加载。如果你已经通过防火墙保护了你的外发服务器连接,这可能会更加令人沮丧,因为管理界面会等待超时,当它不能到达 magentocommerce.com

要禁用它: 转到 System-> Configuration,滚动到底部并点击 Advanced (在 Advanced 部分)。现在禁用 Mage_AdminNotification并保存!