页面加载时间不一致


11

我非常接近完成一个大型的magento项目,并且将重点转移到提高magento的速度上。作为一个序言,我更像是一个前端开发人员,在内部完成这个大型项目,并在进行过程中弄清楚问题。

我在带有2GB内存的Media Temple专用虚拟服务器上具有开发magento。最近,我有多达600种产品,每种产品有约25种不同的属性(总共约300种独特属性),也许有50种类别。我删除了所有这些内容,以尝试排除15s左右的加载速度。

但是,我的加载时间仍然很长而且不一致。我用Firebug报告了500毫秒的响应时间,以重新加载我的主页,然后立即重新加载,结果报告为9秒以上。这是服务器问题还是Magento本身的问题?我该如何测试类似的东西?

Answers:


11

首先,您需要确定要测试的内容,无论是PHP渲染时间还是实际页面加载时间。

在这两种情况下,使用Firebug都不是可靠的方法-因为您的Internet连接本身可能是瓶颈或抖动的原因。

PHP渲染时间

如果您纯粹是想查看PHP渲染时间是否有所改善/更改,那么最准确的方法是使用Magento分析器的输出。

index.php,不加评论

Varien_Profiler::enable();

然后在

管理员>系统>配置>开发人员

确保启用了探查器。

您将在每个页面(前端和后端)的底部得到一个表格输出,以分解页面加载时间,从Mage::run()开始算起。第一行将指示总的PHP渲染时间(在Mage内)。

就确定您的PHP更改是否会影响页面加载时间而言,这将是您最准确的数字,更不用说,它将确定任何性能瓶颈。

PHP Web服务器渲染时间

下一种测试类型是考虑Web服务器本身的开销(但不包括最后一英里的连接)。因此,为了使此测试准确无误,且不受“互联网”本身的影响-您应该在Web服务器本身上运行它。

我们使用自己的实用程序mage-perftest(可在此处找到更多信息)-它可以测试纯PHP渲染时间,实际页面加载时间,甚至可以进行并发测试。

要仅测试PHP Web服务器的渲染时间,可以使用(相应地替换URL)

./mage-perftest -u me-s1.sonassihosting.com -b

该测试将给出页面加载时间的细分(仅针对页面的PHP元素,忽略任何JS / CSS / Images)。输出看起来像这样,

Test Summary
============
Total files:              1
Total downloaded:         4K
Avg. page weight:         4.00K

Total time:               0.035s
Min response:             0.035s
Max response:             0.035s
Avg. page response:       0.03s

Concurrency/Repeats:      1
Transactions/s            28.57
Test URL:                 me-s1.sonassihosting.com
Success rate:             1/1 (100.00%)

真实世界Web服务器渲染时间

测试的最终类型是下载整个页面所需的时间(PHP +静态内容)。再次,您可以mage-perftest用来执行此操作,例如。

./mage-perftest -u me-s1.sonassihosting.com

避免像瘟疫这样的在线测试服务

有一些在线速度测试工具,例如GTMetrix,Pingdom等。这些工具不会为您提供任何精确的粒度分析结果。

它们在测试外部网络连接方面有自己的位置,但是作为检查实际PHP性能的一种手段完全没有用。坚持为此进行服务器/本地测试。

其他注意事项

我们写了一篇有关远程测试以及为什么要避免使用它的文章, http://www.sonassi.com/knowledge-base/magento-kb/why-siege-isnt-an-accurate-test-tool-for-magento-性能/

在VPS中运行Magento是一个坏主意。其他人可能会不同意-但由于多种原因,它不是Magento商店的合适环境-我们已经沿着这个方向回答了很多问题,这里有一些


Perftest很棒-在Github上可以使用吗?
philwinkle

我只好跑perftest麻烦,但分析器提供了一些有趣的信息:mage::dispatch::routers_matchmage::dispatch::controller::action::predispatch似乎是一个瓶颈,虽然我不知道该解决方案有...搜索并没有想出很多。
andyjv 2013年

我一次打开的页面越多,magento花费的时间越多mage::dispatch::routers_match,占到28s页面加载的22s。在相同的负载下,还有mage::dispatch::controller::action::predispatch22s,CORE::create_object_of::Mage_Core_Model_Session21s和Mage_Core_Model_Session_Abstract_Varien::start/start21s。我确定正在发生某些父/子事件,但是routers_match由于时间最长,我假设这是其他20秒函数的父函数
andyjv

探查器的输出在层次上包含在内。就是 它显示了该函数中运行的所有内容的总和。因此Mage将花费最长的时间,因为它包括所有内容,Routers_Match基本上是它调用的下一个函数,其他所有东西都是从中产生的。它不是瓶颈,而是它所要调用的东西(向下看表)。如果要进行概要分析,请不要打开多个窗口-这将无济于事。
Ben Lessani-索纳西,

下面Routers_Match是:DISPATCH EVENT:controller_action_predispatch21.0710和OBSERVER: log21.0565
andyjv

3

这很可能是服务器问题,而不是Magento问题。根据您使用的服务器类型,您可以获得不到一秒钟的加载时间。您甚至可以在这里运行更复杂的测试:http : //www.magespeedtest.com/。您也可以在那里查看其他服务器提供商的速度。

我也建议您使用http://www.webpagetest.org/的瀑布报告,看看您的“缓慢”到底来自何处。它将分成多个部分(例如下载每个CSS,JS和图像文件需要花费多长时间),这可以帮助您提高速度。

话虽如此,即使您最大程度地优化了Magento代码,css,js,图像和内容,服务器也始终是最大的问题。我建议使用Magento托管服务提供商,因为它们的服务器已进行了微调以帮助Magento。就个人而言,我使用Nexcess,但我听到的其他好消息是Sonassi Hosting和Peer1。

有几篇有关如何提高速度的文章,我建议阅读Magento网站上的白页。

尽管它更适合企业,但您仍然可以从许多建议中受益。另外,请确保您保持Magento最新!从当前发行版开始,您不应落入两个以上的版本。


1
很高兴你在这里kab8609!:-)
Fabian Blechschmidt
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.