Три рішення щодо зменшення навантаження для интернет-магазину на Magento 2

31 Січня 2023

наступна стаття
В'ячеслав Нагнибіда

PR

В'ячеслав Нагнибіда
Три рішення щодо зменшення навантаження для интернет-магазину на Magento 2

Що потрібно кожному інтернет-магазинові, окрім товарів для продажу, привабливого дизайну та зручних інструментів управління? Звісно ж — відвідувачі, задля яких цей сайт і було створено. Адже кожен, хто зайде на вашу інтернет-чторінку, є потенційним покупцем. Тому чим більша їхня кількість — тим вищі шанси отримати нових клієнтів та збільшити прибуток. Саме тому власники інтернет магазинів так полюбляють різні маркетингові ходи: сезонні чи тематичні знижки, події, рекламні розсилки тощо. Однак в гонитві за більшою кількістю лідів часто забувають про одну з головних рис сайту — продуктивність, та одну з головних проблем — пікові навантаження. Якщо ви обрали Magento 2 та досвідчену команду розробників, як Авіві, то шанси вашого сайту не витримати навантаження різко скорочуються. Але для протидії піковим навантаженням потрібно використовувати різні методи, тому сьогодні ми розкажемо про три реалізовані проекти, де ці задачі були пріоритетними. 

Що таке критичне навантаження та коли його чекати?

Кожен сайт розрахований на певний ліміт звернень від зовнішніх користувачів, що він здатний обробити за визначений проміжок часу. Багато в чому ця здатність залежить від сервера, на якому розміщений ресурс, але саме зараз ми не будемо заглиблюватися у це питання та вважатимемо, що у нас найкращий з можливих серверів. Тому наступна на черзі відповідальності у нас CMS-система. Magento 2 має цілу низку переваг над своєю попередницею Мадженто 1: глибокі зміни в архітектурі дозволяють їй витримувати значні навантаження, що особливо цінне для створення інтернет магазинів. Однак сама по собі ЦМС не всесильна, тому без належного налаштування чи впровадження рішень неодмінно настане момент, коли кількість звернень до сайту перевищує можливості системи. Що тоді? Вебсайт перестає відповідати і на певний час стає недоступним для відвідувачів аж поки розробники відновлять його працездатність. Не варто й говорити, що на час важливих подій та активних продажів це найгірше, що може бути в економічному плані. 

Найчастіше подібне стається під час підвищеної маркетингової активності: перед святами, на “Чорну П’ятницю” чи Різдво, коли люди починають масово шукати подарунки — це сезонні пікові навантаження. Також можливі спонтанні сплески, коли пропонований товар різко здобуває попит через події у світі: приміром, антисептичні засоби на початку пандемії. До слова, з поширенням Civid-19, загальне навантаження на вебсайти у світі помітно зросло, оскільки локдауни підвищили частку віртуальної діяльності користувачів. Ще одним чинником росту навантаження може бути DoS-атака, але це вже цілеспрямований недружній вплив, що має на меті нашкодити сайтові та майже завжди добивається свого. Тому наразі ми говоримо лише про органічні навантаження, бути готовим до яких потрібно будь-якому інтернет-магазину, що прагне заробити більше грошей. 

Рішення комплексних індивідуальних налаштувань

Найпершим наша команда може назвати рішення, засноване на тонких кастомних налаштуваннях системи практично без залучення третіх програм. Це насправді може бути дієвим, якщо ваш сайт розвивається плавно та планомірно. В такому разі Magento 2 забезпечить вам надійну протидію піковим навантаженням за умови правильного використання компонентів системи. Для визначення продуктивності та пошуку слабких місць розробники застосовують Apache JMeter™ — кросплатформене програмне забезпечення з відкритим кодом, що дає змогу імітувати пікові навантаження. Зазвичай набір сценаріїв тесту передбачає:

  • Перегляд головної сторінки;

  • Пошук товару за текстом;

  • Додавання товару в кошик;

  • Оформлення замовлення;

  • Реєстрація користувача. 

За потреби розробники можуть зімітувати будь-які необхідні умови. Варто зауважити, що в реальній ситуації користувачі не роблять запити до сайту безперервно. Інструменти тестування це також враховують, тому HTTP(S) Test Script Recorder застосовує затримку часу, аби умови тестування були максимально наближені до реальності. 

За результатами тестування практично завжди можна знайти слабкі місця сайту на Magento 2, але наша команда завжди проводить додаткову ручну перевірку. Із досвіду ми знаємо, що база даних — це завжди вразлива частина, хоча автоматичне тестування може і не виявити проблем у цьому розділі. Декілька разів ми пропонували клієнтам протидіяти навантаженням вирішенням проблем з кешуванням даних. Замість стандартного для Magento 2 Full Page Cache ми рекомендуємо інструмент Varmish Cashe. Цей софт встановлюється перед сайтом та перевіряє наявність кешованої копії потрібної сторінки для користувача. Якщо вона є, запит не передається у Magento 2, що знижує загальне навантаження.  

Далі спеціалісти Авіві перевіряють роботу модулів Magento 2, особливо, якщо це не продукти з маркетплейс, а кастомні рішення від інших розробників. Але в будь-якому разі пам’ятайте: додатковий модуль завжди впливає на продуктивність, а “дорожче” не значить “краще”. Тож якщо ви вже витратили на додатковий компонент, скажімо, декілька тисяч доларів, це не гарантує, що це програмне забезпечення за замовчуванням не буде перевантажувати систему. 

Одним з останніх важливих кроків є перевірка редіректів. Кожен з них це додатковий запит до сервера. Тож навіть 1 редірект на сайті фактично подвоює кількість запитів від 1 користувача. 

Рішення з використанням Redis

Якщо ви власник великого інтернет-магазину, що сформував обширний каталог, чи одразу кількох сайтів на одній платформі, простих налаштувань буде недостатньо. Головна причина можливих відмов сайту через перевантаження криється у стандартному Zend_Cache_Backend_File системи Magento 2. Такий файл цілком може зрости до 15 мільйонів записів за 1 добу, а це вже значний розмір, що може спричинити проблеми з MySQL. Інша проблема — TwoLevels backend, що одночасно використовує два сервери та спричиняє додаткове навантаження. Тому спеціалісти Авіві реалізували проект заміни Zend_Cache_Backend_File на технологію Redis. 

Рішення здатне скоротити використання ресурсів одразу в кілька разів. Redis  можна використовавати в якості сховища для PHP-сесій, що виключає використання memcashed, для якого завжди існують певні обмеження. Крім того рішення індексує теги файлів, тому додаткове сканування всіх закешованих файлів не потрібне. Також Redis зберігає metadata та  cashe record в одному файлі, що скорочує кількість операції для їхньої перевірки. 

Отож правильні налаштування Redis для Magento 2 суттєво знижують навантаження на платформу й дозволяють без страху розвивати одразу декілька інтернет-магазинів. Рішення працює стабільно, однак його встановлення та налаштування потребує роботи досвідчених спеціалістів. Тому за потреби інтеграції з Redis можете звертатися до розробників Авіві. 

Рішення з використанням RebbitMQ

Ще одним методом подолання пікових навантажень може бути упорядкування черги звернень від користувачів. Принцип простий: якщо велика кількість відвідувачів звертаються до сайту одночасно, це спричиняє сплеск активності. Але якщо розробити правила, за якими відвідувачі вишикуються до вашого інтернет-магазину розподіленою чергою, система знатиме обсяги запитів та не прийме одночасно більше, ніж зможе. Тут варто зрозуміти, що людина не відчує різниці, коли вона буде в черзі на першому місці чи на 1101 — ми говоримо про долі секунди. Однак для системи таке впорядкування стане практично рянівним колом. 

Розробники Авіві мали справу з платформою RabbitMQ ще раніше та в проектах з іншою CMS. Тоді рішення стало ефективним для міжнародного сервісу доставки товарів. Тому коли аналогічна потреба постала для інтернет-магазину на Magento 2, ми без вагань звернулся до перевіреного інструменту. 

RabbitMQ виконуює роль менеджеру черг та забезпечуе асинхронний обмін даними. Це можуть бути елементи однієї системи чи абсолютно різних. Для збереження даних формуються черги, до яких система може звертатися на будь-якому етапі. Це забезпечує збереження інформації в разі неочікуваної відмови елементів, надає можливість обчислення ресурсів, потрібних для виконання операції. 

Для інтеграції Magento 2 та RabbitMQ потрібно набагато менше зусиль, ніж для більшості інших сторонніх програм. Контролювати формування потоків можна за допомогою плагіна Management. До слова, установку RabbitMQ можлива як на той самий сервер, де й Magento 2, так і на довільний інший. 


У підсумку хочемо сказати, що протидіяти піковим навантаженням на сайт, особливо якщо це інтернет-магазин, потрібно завчасно, аби у вирішальний момент відмова системи не стала для вас прикрою несподіванкою. Спеціалісти Авіві мають досвід впровадження різних рішень, тому ми завжди готові допомогти вашому бізнесові розвиватися та отримувати все більше клієнтів.


Схожі статті
Записатись на консультацію

Ми зв'яжемось з Вами протягом 10 хвилин