Невідповідні часи завантаження сторінки


11

Я дуже близький до виконання великого проекту 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

У мене виникли проблеми з перфтест, але профайлер подав цікаву інформацію: mage::dispatch::routers_matchі, mage::dispatch::controller::action::predispatchздається, це вузьке місце, хоча я не впевнений, яке там рішення ... пошук не придумає багато.
andyjv

Чим більше сторінок я відкриваю одразу, тим більше часу витрачає магенто 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.