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


11

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

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

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

Ответы:


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 в курсе! Вы не должны упасть больше, чем две версии из текущего выпуска.


1
Хорошо, что ты здесь kab8609! :-)
— Фабиан Блехшмидт
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.