当前位置:  开发笔记 > 编程语言 > 正文

为什么Magento这么慢?

如何解决《为什么Magento这么慢?》经验,为你挑选了7个好方法。

Magento通常非常慢吗?

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

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



1> Alan Storm..:

我只是切实参与优化Magento的性能,但这里有几个原因导致系统速度太慢

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

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

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

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

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

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

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


谢谢你的广泛解释.Magento确实非常强大,同时允许灵活性.我最初认为只是因为一些编写得很糟糕的SQL而导致数据库写入停滞,但我现在意识到最初预期的幕后会发生更多事情.注意:由于商店所有者添加了产品,因此禁用了缓存.当缓存打开时,他抱怨在商店正在建立时,产品没有出现强制我禁用缓存.它被托管在专用服务器上,但似乎我必须将Magento移动到它自己的专用盒子上.
我不久前用XHProf描述了它.XML解析需要花费大量时间 - 我认为你可以使用这个列表.

2> benlumley..:

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

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

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

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

- 启用模板/视图缓存.

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

在magento网站上也有很好的(谷歌magento块缓存),但它现在下降.

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


Thx为积分.我将看一下之前没有在生产中使用的memcached.关于克隆块的好主意.
我是第二个benlumbey说的,我不使用memcached,因为我正在运行Windows服务器,但我将/ var目录存储在一个固态驱动器中,这对我来说有很大的不同.
是的,没错.但是有一些警告,取决于你如何运行PHP,你可以为每个PHP进程最终得到一个单独的APC缓存 - 如果你每X个请求循环你的PHP进程,它就会变得更不理想.

3> Laizer..:

如果你还没有看到它,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关于这个.)


第二个链接现在已经死了.

4> Sam Figueroa..:

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

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


这在我的本地开发环境中的性能有了显着的不同,这总是使我在一个非常快的开发盒上运行的速度感到沮丧.谢谢!

5> 小智..:

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

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

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

不要忘记将会话和Magento缓存写入RAM磁盘.这也肯定会让你达到另一个级别的表现.

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



6> 小智..:

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

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

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



7> Jonathan..:

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

推荐阅读
爱唱歌的郭少文_
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有