Підтримка та навантажувальне тестування інтернет-магазину 5WATT

В рамках підтримки інтернет-магазину https://5watt.ua/ потрібна оцінка продуктивності та можливостей платформи та сервера.

Клієнту важливо було зрозуміти, чи здатні CMS PrestaShop та поточна конфігурація «заліза» нормально витримувати потік відвідувачів.

Щоб отримати реальні дані для підвищення продуктивності та прискорення сайту, команда «Червоного хамелеону» провела тестування навантаження.


Переглянути проєкт

Сервіси для проведення тестів

  • https://loader.io/
  • https://frugaltesting.com/
  • https://www.joedog.org/siege-home/
  • https://gatling.io/open-source/

Існує маса сервісів для тестування навантаження сайту. Починаючи від безкоштовних онлайн-сервісів (loaddy.com, loader.io) та додатків (gatling.io, Grinder, Apache Bench, siege, Apache Jmeter) і закінчуючи платними (k6.io, loadview-testing.com, loadninja.com).

Ми для тестування навантаження використовуємо Gatling. Він поєднує в собі гнучкість налаштувань, широкі можливості тестування з використанням сценаріїв і легке налагодження, можливість побудови графічних звітів для аналізу.

Микола Саранюк,

Засновник веб-агентства Червоний хамелеон,
що спеціалізується на розробці інтернет-магазинів з 2013 року

Умови проведення тестування навантаження

  • Платформа: CMS PrestaShop.
  • Підключено CDN Cloudflare.

Етапи тестування

  1. Первинне тестування за допомогою кількох інструментів.
  2. Контрольні тести після додаткових установок сервера.

Перший етап навантажувального тестування сайту

loader.io

Протягом десяти хвилин запустили чотири тести за допомогою loader.io.

У перших трьох тестах протягом однієї хвилини сайт відвідувало 250, 500 та 1000 користувачів:

100

перший тестовий сценарій

500

другий тестовий сценарій

1000

третій тестовий сценарій

Час відповіді був стабільно хороший:

навантажувальне тестування інтернет-магазину

При тестуванні на 1000 користувачів сервер був завантажений лише на 5-10%.

Під час четвертого тесту на сайті було вже 100 користувачів на секунду протягом 1 хвилини.

четвертий тестовий сценарій

Час відгуку також був стабільно добрий. Був помітний стрибок через швидко збільшену кількість користувачів.

Завантаження сервера досягло 30%.

навантаження на сервер

frugaltesting.com

Перший тест тривав 3 хвилини при навантаженні 20 користувачів на секунду.


тест з використанням FrugalTesting
приклад навантажувального тестування


Завантаження сервера

максимальне навантаження на сервер


Під час тесту на сайт зайти не вдалося. Навантаження на сервер відзначив адміністратор та змінив налаштування PHP.

Повторно запустили аналогічний тест після виправлень вже на 10 хвилин.

На цей раз сторінки сайту відкривалися, працювала фільтрація, перехід у картку товару, оформлення замовлення.

Siege

Далі запустили тест Siege: 1 хвилина та 10 одночасних користувачів, режим бенчмарку.

Відмінність цього тесту в тому, що сервіс ходив сторінками фільтрів, пошуку та інших протягом хвилини.

Завантаження сервера досягло 100%.

тест за допомогою Siege


Результат тесту:

результат тестування в Siege


Для порівняння цей же тест лише на головній сторінці дав навантаження лише 20%.

А тест із 5 одночасними користувачами – 50 %.

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

Gatling

Після цього були запущені сценарії Gatling:

  1. 10 користувачів за хвилину
  2. 100 користувачів за хвилину
  3. 2 користувача в секунду протягом 1 хвилини (всього 120 користувачів)
  4. 5 за секунду протягом 1 хвилини (300 користувачів)
  5. 10 за секунду протягом 1 хвилини (600 користувачів)
  6. 20 за секунду протягом 1 хвилини (1200 користувачів)
  7. 5 за секунду протягом 5 хвилин (1500 користувачів)
  8. 10 за секунду протягом 5 хвилин (3000 користувачів)

У результаті тестування за допомогою Gatling дійшли таких висновків:

  1. У тесті на 20 відвідувачів за секунду вдалося досягти відмов.
  2. Сервер стабільно тримає до 100 запитів за секунду (це 500 користувачів одночасно на сайті), при більшій кількості перестає справлятися.
  3. Сервер здатний тримати навантаження 10 користувачів за секунду протягом однієї хвилини, далі починаються відмови.
  4. Навантаження 5 користувачів в секунду при конфігурації, що існувала, ресурс витримав 5 хвилин (тобто витримає і довше).
  5. Якщо підтягнути показники сервера, інтернет-магазин зможе без проблем тримати велике навантаження.

Перший етап тестування закінчився виявленням низки проблем із продуктивністю, а також відповіддю на основне питання клієнта про здатність PrestaShop тримати навантаження.

У поточній конфігурації платформа (з урахуванням підключеного Cloudflare) здатна витримувати необхідну кількість відвідувачів і відмовлятися від CMS через продуктивність потреби немає.

Другий етап тестування навантаження інтернет-магазину

Протягом наступного тижня вносилися редагування в конфігурацію сервера, після чого провели повторні тести.

Для контрольної перевірки використовували тільки Gatling із такими сценаріями:

5 користувачів на секунду протягом 5 хвилин (всього 1500 користувачів) – клікабельно

тестування за допомогою Gatling


10 користувачів за секунду протягом 5 хвилин (всього 3000 користувачів) – клікабельно

другий етап навантажувального тестування


В обох звітах помітні явні поліпшення.

Незважаючи на те, що відмови у другому тесті збереглися, помітно зменшилася їхня кількість з 11700 до 7000.

Крива активних користувачів у першому сценарії раніше збільшувалася, а після зміни конфігурації сервера перестала наростати. Це означає, що сервер встигає обробляти всі запити, а не накопичує їх.

Було

тест продуктивності сервера


Стало

підвищення ефективності сервера


Також значно покращився час відповіді.

Було

більший час відповіді сервера

Стало

менший час відповіді сервера


Розподіл часу відповіді виглядав так:

Було

розподіл часу відповіді сервера

Стало

розподіл навантаження на сервер


Навантажувальне тестування інтернет-магазину 5watt дозволило визначити граничні показники завантаження сервера та CMS, виявити та оперативно виправити слабкі місця, щоб суттєво підвищити продуктивність ресурсу. У результаті досягли сильного зниження відмов, а також коректного розподілу навантаження на "залізо", що зменшило середній час відповіді сервера.

Сумніваєтеся чи ваш сайт тримає навантаження?