Несогласованное время загрузки страницы

11

Я очень близок к завершению крупного проекта magento и сосредоточился на улучшении скорости magento. Как своего рода предисловие, я больше сторонний разработчик, делающий этот большой проект собственными силами и выясняющий все на ходу.

У меня есть разработка magento на выделенном виртуальном сервере Media Temple с 2 ГБ оперативной памяти. Недавно у меня было целых 600 товаров и около 25 различных атрибутов на каждый товар (всего около 300 уникальных атрибутов) и, возможно, 50 категорий. Я удалил все это в попытке устранить неполадки со скоростью загрузки около 15 с.

Однако мои времена загрузки все еще длинные и противоречивые. Я перезагружаю свою домашнюю страницу с Firebug, сообщая 500 мс для ответа, и я немедленно перезагружаюсь, и он сообщает через 9 с. Это проблема с сервером или что-то с самим Magento? Как мне проверить что-то подобное?

andyjv
источник

Ответы:

11

Сначала вам нужно решить, что вы тестируете, будь то время рендеринга PHP или реальное время загрузки страницы.

В любом случае использование firebug не будет надежным, так как само ваше интернет-соединение может стать узким местом или причиной дрожания.

Время рендера PHP

Если вы просто хотите посмотреть, улучшилось ли / изменилось ли время рендеринга в PHP - тогда самый точный способ - использовать выходные данные профилировщика Magento.

В index.php, раскомментировать

Varien_Profiler::enable();

Затем в

Администратор> Система> Конфигурация> Разработчик

Убедитесь, что профилировщик включен.

В итоге вы получите табличный вывод внизу каждой страницы (передний и задний), разбивающий время загрузки страницы, измеренное с момента Mage::run()запуска. Самая первая строка будет указывать общее время рендеринга PHP (в пределах Mage).

Это будет ваш самый точный показатель с точки зрения определения, если ваши изменения PHP влияют на время загрузки страницы, не говоря уже о том, что он выявит любые узкие места производительности.

Время рендеринга PHP веб-сервера

Следующий тип теста должен учитывать накладные расходы самого веб-сервера (но не подключение последней мили). Таким образом, чтобы этот тест был точным и не зависел от самого «Интернета» - вы должны запустить его на самом веб-сервере.

Мы используем нашу собственную утилиту mage-perftest(более подробную информацию можно найти здесь ), которая может тестировать чистое время рендеринга PHP, реальное время загрузки страницы и даже тестирование параллелизма.

Чтобы проверить только время рендеринга веб-сервера PHP, вы должны использовать (соответственно заменить 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%)

Время рендеринга веб-сервера реального мира

Последний тип теста - это время, необходимое для загрузки всей страницы (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- производительность/

Запуск Magento в VPS - плохая идея. Другие могут не согласиться - но это не подходящая среда для магазина Magento по ряду причин - и мы ответили на МНОГИЕ вопросы по этой теме, вот несколько

Бен Лессани - Сонасси
источник
Perftest потрясающий - это на Github, так что я могу его разветвить?
Philwinkle
У меня были проблемы с запуском perftest, но профилировщик предоставил некоторую интересную информацию: mage::dispatch::routers_matchи mage::dispatch::controller::action::predispatchкажется, что это узкое место, хотя я не уверен, какое есть решение ... поиск не дает много.
andyjv
Чем больше страниц я открываю одновременно, тем больше времени тратит magento mage::dispatch::routers_match, что составляет 22 секунды при загрузке страницы 28 секунд. На той же нагрузке есть также mage::dispatch::controller::action::predispatchв 22, CORE::create_object_of::Mage_Core_Model_Sessionв 21 и Mage_Core_Model_Session_Abstract_Varien::start/startв 21 с. Я уверен, что происходит какая-то родительская / дочерняя вещь, но routers_matchпоскольку она самая длинная, я предполагаю, что это родитель других 20 секундных функций
andyjv
Выход профилировщика является иерархически включенным. То есть. Показывает общее значение для всего, что выполняется внутри этой функции. Таким образом Mage, потребуется больше всего времени, поскольку он включает в себя все, Routers_Matchв основном это следующая функция, которую он вызывает, из которой все остальное порождается. Это не узкое место, а то, что он называет (смотрите дальше по столу). Не открывайте более 1 окна, если вы профилируете - это ничего не даст.
Бен Лессани - Сонасси
Ниже Routers_Matchесть: DISPATCH EVENT:controller_action_predispatchв 21.0710 и OBSERVER: logв 21.0565
andyjv
3

Скорее всего, это проблема сервера, а не проблема Magento. В зависимости от того, какой тип сервера вы используете, вы можете получить время загрузки менее секунды. Вы можете даже выполнить более сложное тестирование здесь: http://www.magespeedtest.com/ . Вы также можете проверить скорость у других провайдеров серверов.

Я бы порекомендовал также использовать отчет о водопаде с http://www.webpagetest.org/ и посмотреть, откуда именно может исходить ваша «медлительность». Он разбит его на части (например, сколько времени потребуется для загрузки каждого файла CSS, JS и изображения), что может помочь вам повысить скорость.

При этом, даже если вы оптимизируете код Magento, CSS, JS, изображения и контент в полной мере, сервер всегда будет самой большой проблемой. Я бы порекомендовал использовать хостинг-провайдера Magento, так как их серверы более точно настроены для помощи Magento. Лично я использую Nexcess, но о других хороших вещах, о которых я слышал, это Sonassi Hosting и Peer1.

Есть несколько статей о том, как улучшить скорость, я бы порекомендовал прочитать белые страницы на сайте Magento.

Несмотря на то, что он больше ориентирован на Enterprise, вы все равно можете воспользоваться многими советами. Кроме того, убедитесь, что вы держите Magento в курсе! Вы не должны упасть больше, чем две версии из текущего выпуска.

kab8609
источник
1
Хорошо, что ты здесь kab8609! :-)
Фабиан Блехшмидт