Magento speed optimisation

诚然,我接触Magento时间不短了,但直到最近才开始研究Magento的速度,因为我的一个Magento项目已经上马了。

通常Magento要比Zencart, osCommerce, VirtueMart for Joomla跑得慢,但这个没有吓退我。我坚信Magento是我的方向,是因为Magento的ecommerce功能是其它软件望尘莫及的,况且我拥有让Magento加速的硬件资源。(这世界上没有什么是最好的,适合自己的就是最好的)。

我认为选择Magento,首先得有一台独立服务器。虽然我曾成功地在shared hosting环境里运行了Magento,但一个没有速度优化潜力的Magento,就算能跑,又有什么用?Magento内置了很多SEO特性,但如果页面loading time过长,Google也不会喜欢。VPS理论上也能为Magento做速度优化,但一台入门级的独立服务器与一台高性能的VPS价格相当,我会选择前者,以确保所有的优化可能。

其次得有1G以上内存,CPU差一点没关系,因为Magento的速度瓶颈在硬盘,优化手法中很多就用内存代替硬盘。

有了以上两个硬件资源,剩下的就是进行一些软件环境设置。

首先,得是Linux环境。我不是说Magento在Windows下跑不起来,我是说网上大部分建议都是针对Linux提的,除非你有一个Microsoft专家在你旁边,每当你给他一个Linux配置文件,他能为你写一个Windows下的对应文件。

其次,给MySQL Server分配更多的内存。

再次,启用Cache。Cache分三种,一是Magento data cache,Magento系统菜单的Cache Management指的就是这个,默认已经启用。据我观察,data cache单独使用时,对速度提升没多大帮助。二是Linux in-memory file cache,把magento/var/cache指到或软连接到tmpfs。三是php byte cache,开源世界里主要有三种选择,php APC, eAccelerator, xCache。孰优孰劣尚无定论,我看了一些测试结果,我的结论是:小访问量时选php APC,访问量达到负载容量50%以上的选xCache,Magento的开发小组说eAccelerator在处理magento异常时会出错,我就把它剔除了。

如果以上优化都做过了,速度应该很理想了。经济条件许可的话,买多点内存,搞个SCSI, RAID硬盘,换个四核CPU,我就不信Magento会比谁慢。

Comments

34 responses to “Magento speed optimisation”

  1. guoguo Avatar
    guoguo

    不知道你有没有测试过Magento可以支撑大致多少并发,如果并发足够大的话,怎么办?私用集群马?如果使用集群,Magento支持吗?是否需要复杂的配置?

  2. 芳草苑主 Avatar

    没有测试过最大并发数,但针对我的网站测试过10个并发,一点问题都没有。

    你说的群集,指的是web群集,还是数据库群集?我认为web群集应该在magento以外考虑,一个架构得很糟糕的web程序也很容易实现web群集;数据库群集要复杂一些,可巧这两天我在琢磨这玩意,我认为如果web程序如果本身没考虑数据库群集,从mysql方面动动脑筋,也是可以实现的。好消息是:magento架构得堪称完美,如果你仔细看看magento的配置文件,你会惊叹magento的周到。

    自从发现世界上有magento以后,我就不再关心其它的程序了。当然其它程序也在更新换代,但我敢假设在很长一段时间内,它们无法超越magento。

  3. Leo Avatar
    Leo

    magento功能的确强大,就是环境太难配置了,我的win服务器+apache2+php5.2.8 到现在还不能运行magento,按他的文档上,我关闭了安全模式,开启rewrite功能,能打开安装页面,填写完数据库账号密码后点击continue就页面打不开,“Firefox 检测到该服务器正在将此地址的请求循环重定向。”
    博主能不能给我点帮助啊?
    我的联系email是 chenliangc@gmail.com

  4. 芳草苑主 Avatar

    是不是你没有开启AllowOverride all? 我经常碰到类似的问题。

  5. Leo Avatar
    Leo

    开启了,博主能给个联系方法吗?msn或者qq,我好请教请教!

  6. bun Avatar
    bun

    我在后台填加了产品,并且active了,但是前台只显示”Home Page”字样?

  7. 芳草苑主 Avatar

    Because magento is designed for multi websites, you need advise magento on which website to show your products.

  8. bun Avatar
    bun

    在后台哪里设置? 可否介绍一下?

    另外, multi websites是支持不同的domain name,还是同一domain name的不同url?

  9. danefy Avatar
    danefy

    你好,我在lunarpages主機上一直設置不好安裝不了,能否指教一下。

  10. fenix Avatar
    fenix

    才做好一个站,早听说magento慢,可没想到这么慢,我的是独立主机,性能一般般,可速度实在让人无法忍受啊,一般要十来秒钟才打开。楼主可以指教一二吗?请用非IE看看: shop.fivetone.cn

  11. 芳草苑主 Avatar

    to danefy: 不好意思,我没用过lunarpages的服务器

    to fenix: 优化可以从很多方面入手,花钱买更好的硬件是最简单的办法,按我以上说的自己动手作软件方面的调整是最通常的办法。不过最近我在学习nginx,让magento 跑在niginx上,预计效果更好。目前只是预计,等我实测了我再告诉大家。

  12. new man Avatar
    new man

    Too slow.

  13. justdoitrocky Avatar
    justdoitrocky

    fenix 你的速度比我快一点呀, 5秒左右,我用的是美国 godaddy 主机。

    ———————————————————-
    fenix Says:
    March 4th, 2009 at 6:33 pm

    才做好一个站,早听说magento慢,可没想到这么慢,我的是独立主机,性能一般般,可速度实在让人无法忍受啊,一般要十来秒钟才打开。楼主可以指教一二吗?请用非IE看看: shop.fivetone.cn

  14. 芳草苑主 Avatar

    magento 1.3 在速度上有很大改善,建议大家尽快升级。因为我的模板不支持 flat catalog,所以我暂时无法使用 flat catalog。

    尽管如此,在未启用 flat catalog的情况下,magento 1.3 仍比早期版本快了很多。如果启用 flat catalog,按官方的说法,还可以有 40% 的提升,我对这样的速度已经很满意了。

  15. abc Avatar
    abc

    参考这篇优化文章试试 tomssoft

  16. 芳草苑主 Avatar

    看了推荐的文章,整理的优化方法比较全面,但这些方法没有什么新意了。我现在在想的是,做完了所有的常规优化,还能有什么偏门能让magento再快一点、更快一些

  17. jiehuangwei Avatar
    jiehuangwei

    在bluehost下的magento速度怎么优化好点啊?
    有好的解决方案吗?
    最近正为这事弄的发愁!!

  18. 芳草苑主 Avatar

    magento 速度优化和谁是host没有多大关系,你就参照你能找到的速度优化方法一一组合,调出最适合你的

  19. Monica Avatar
    Monica

    这个站的速度老大可以指点一二吗? 速度真的慢,而且以后要上很多的图片,我怕更慢. 老大有没有好的方法? vps空间. baobeirui@gmail.com

  20. 芳草苑主 Avatar

    tell me your vps configuration, and your product database size, then i can tell how fast it can go.

  21. Guoguolong Avatar

    我觉得博主的想法纯粹是一厢情愿:) 你有真正试过你的方案吗?就算你所有的都用上了,可能还是不及zencart快,你思考过什么原因吗?

    只要不是整个页面缓存,你就避免不了使用magento的bootstrap过程,恰恰那个过程是相当地慢!

    如果一个页面单人访问的速度没解决好,你谈那些什么内存、多机有什么意义呢??

  22. 芳草苑主 Avatar

    我一直在测试。如果一个页面单人访问的话,在入门级的vps上,常规优化(magento wiki提及的)后的magento 就可以获得非常理想的速度。当然这个速度跟zencart是没法比。

    但不能光从速度上考虑选择magento或是zencart。我会给RAD、safe upgrade等因素很高权重,给scaleability、documentation中等权重,在这些因素上,我还没看到其他ecommerce方案能好过magento。

  23. Rikku Avatar
    Rikku

    Nginx下运行mage非常快,前提是nginx针对mage的rewrite要写完美。
    nginx下是不识别.htaccess文件,全靠nginx的rewrite模块和rewrite配置文件来完成一系列的配置。
    只要mage支持的方法,nginx就会支持。mage本身的缓存机制就非常好,因为也是用的zend_cache,所以,我们可以自由地根据自己服务器的实际情况来做决定mage的缓存媒介。我用的是内存缓存,只有在首次访问时会慢一点点,因为在访问的本地机上也会做高命中地全站的内存缓存。
    这是nginx的优势之一,另,nginx的效率是apache的近10倍,用它来跑mage,只要你的服务器硬件够强悍,它就可以帮你把机能发挥到极致。

  24. 芳草苑主 Avatar

    nginx的快跟rewrite没多大关系吧,跟magento的缓存更没什么关系啦

  25. 于洋 Avatar

    楼主magento的数据库集群方向上有研究吗?

  26. 芳草苑主 Avatar

    没有大的研究,我在两台服务器上试过,挺好玩的。但我用不到群集。

  27. Magento小工 Avatar

    Nginx对静态文件html,js,css,图片的请求很快。速度慢瓶颈在magento自身上。在网上见过一种方式是:nginx或lighthttp做前端,处理静态内容请求,很快并可以节省cpu。apache做后端,专门处理动态内容。

    Magento是耗费cpu大户,我一个网站开始只能应付36个左右并发,加了个cpu后,并发数提高一倍。

    大并发量网站,还是要依靠集群。

  28. 芳草苑主 Avatar

    我觉得 Nginx 和 Apache 的请求并无快慢之分。如果说 Nginx 比 Apache 快,很多是不公平的比较,拿 Nginx 的默认配置状态与 Apache 的默认配置状态去比,当然是 Nginx 快。比如对 .htaccess 的处理,Nginx 里根本没有 .htaccess 之说,不处理 .htaccess 当然比处理要快,但怎么不想想 Apache 也可以配置成不处理任何 .htaccess,不想想 Apache 有 .htaccess 可以做 Nginx 做不了的用户级的设置 ?

    Nginx 比 Apache 的最大优势是占用内存少,在内存既定的服务器上可以支持更多的并发。我的内存有很多闲置,对我来说用 Nginx 不用 Apache 没有速度上的优势。这点结论是我从熟悉的 Apache 转投原本陌生的 Nginx 环抱后好久才总结出的。一直沿用 Nginx 是因为将来总有内存不够用的时候。

    Magento 虽是资源消耗大户,但也不至于 72 个并发就说要群集了——那什么服务器啊?赛扬 PC 都不至于如此不堪。难道是百万级的产品库?我倒没机会尝试。是不是有些基础配置没做好?在很一般的服务器上,并发 500 都应该很轻松的。

  29. Magento小工 Avatar

    Nginx比apache节省内存,很赞同你的见解。

    据说是由于apache 每个工作进程都加载了mod_php这个模块,而这个mod_php内置了php解析器,所以比较占内存。但Nginx的优点不仅仅在于节省内存,比较一致的说法是他采用更先进的网络i/o模型,支持的并发数大,特别对于处理静态文件优势更明显,用google可以详细了解。

    另外, 我没说“72个并发就要上集群”, 我的原话是“大并发量网站,还是要依靠集群”。

    我们的机器是1.5w左右的配置,也算很一般的服务器上,但实际用ab测试,并发100勉强,再提高并发的话,请求响应时间就达到2秒以上了,没什么意义。

    至于500的并发,估计要上什么full page cache才能达到。

    下面是一篇测试Magento . Apache . Nginx的文章,虽然测试不一定准确,但总的说来给了一个大致的比较。可做参考:
    yaozer.cn/apache-nginx%E6%80%A7%E8%83%BD%E6%AF%94%E8%BE%83-nginx%E5%AE%8C%E8%83%9C/

  30. magento 开发 Avatar
    magento 开发

    hi

    我使用了apc,但是效果不是很明显,主要是website 很大,里面的observer / rewrite 也不少。

    有没有什么好的 full page cache 的建议。我一直研究cache 这块,但是被动式 cache ,还不是太理想。

  31. 芳草苑主 Avatar

    只有自己写一个。我写了一个,自己用还可以,要发布的话要考虑到额外99种可能的情况,所以就没发布。

  32. pajamas Avatar

    刚买了Lunarpages的512内存的VPS,打算运行magento。一看这篇文章心凉了。我可能白买了

  33. 芳草苑主 Avatar

    当年我说得比较绝对,其实VPS也能跑出很好的Magento,Lunarpages的VPS好不好不好说,但512嘛,显然是不够的。Lunarpages价格好像还挺贵,在别的地方都可以买4G以上了。话说回来,稳定是最主要的,价格是其次。我遇到太多rubbish VPS providers,所以有此感慨。

  34. pajamas Avatar

    苑主用的是哪家的独服?

Leave a Reply

Your email address will not be published. Required fields are marked *