С появата на Magento 2 проучваме новата версия на най-популярната платформа за електронна търговия. Целта на Magento 2 е да осигури нов, модерен дизайн и да подобри потребителското усещане на посетителите в сайта, като подобренията са базирани на желанията на собствениците на Magento 1 сайтове във времето. Magento 2 също така се стреми да осигури усъвършенствана системна архитектура с по-добра производителност, мащабируемост и модулност.

След направени тестове, оценявахме ефективността на Magento като използвахме някои от най-типичните сценарии - средна база данни (12800 продукта), Amazon EC2 за уеб и база данни, кеширане на страниците. За да включим различни потребителски сценарии, използвахме Gatling. 

Въз основа на резултатите, показани по-долу, за малки и средни магазини не бихме препоръчали използването на Magento 2. Резултатите от тестовете ясно показват, че Magento 1 се представя много по-добре, когато работи на по-малък или средно голям сървър.

Хардуер

EC2 C4.XLARGE (CPU 4 ядра, RAM 8 Gb) - първи тестове. Ще го наречем E1.
EC2 C4.8XLARGE (CPU 36 ядра, RAM 60 Gb) - крайни тестове. Ще го наречем E2.
Първоначално използвахме E1, което се счита за достатъчно за планирания натоварващ сценарий с Magento 1.x и 60 едновременни потребителя. Очаквахме да видим най-малко същите, ако не и по-добри резултати за Magento 2.0. Въпреки това, по време на първия тест за натоварване получихме много лоши резултати за инсталирането на Magento 2.0, внедрено в тази инстанция E1. Тестът доказа, че Magento 2 изисква повече CPU да работи ефективно. Като решение преместихме и двете системи (Magento CE 1.9 и Magento 2.0) в по-мощната среда на сървъра на E2.

Софтуер

Операционна система: Amazon Linux AMI 2015.03
Уеб сървър: nginx / 1.8.0 + php-fpm
PHP: 5.5.30
Varnish: 3.0.5
Redis: 3.0.5
База данни: MySQL 5.6.27

Magento каталог

За да симулираме стандартен сайт на Magento, създадохме идентични бази за Magento 1 и Magento 2:

  • Начална страница - създадена е като статична CMS страница.
  • 8 водещи категории и подкатегории към тях - общо 88 категории на две нива.
  • 80 атрибута за продуктите: 20 филтриращи атрибута  и 20 нефилтриращи атрибута. Продуктите във всяка категория използват един и същ набор атрибути.
  • Цената за клиентските групи не беше създадена с набора от данни и логики, тъй като Magento 2 все още не поддържа тази функция.
  • 5000 конфигурируеми продукта с два конфигуриращи атрибута (създаване на варианти) и навсякъде от 5 до 20 подпродукта за всяка конфигурация.
  • Всеки от продуктите има от 1 до 4 изображения.
  • Всички атрибути на продукта от типа текст (заглавие, описание и т.н.) са уникални и имат действително съдържание.

Методика на тестване

Софтуерът Gatling беше използван за тестване на натоварването, което ни позволи да подражаваме на различни потребителски поведения. Конфигурираните сценарии поддържат изграждането на динамични заявки към сървъра (включително AJAX повиквания). Това е важно при тестване на ефективността на кеша на страници с динамични блокове (например кошница, списък на продуктите, сравнявани продукти и т.н.).

При тестовете искахме да измерим времето за отговор от сървъра за следните базови заявки, използвайки създадени набори от данни:

Отваряне на началната страница
Отваряне на  случайна категория
Отваряне на случайна категория с филтър за слоевете
Отваряне на страница с резултати от търсенето
Отваряне на следваща страница с резултати от търсенето
Отваряне на произволен прост продукт
Добавяне на произволен прост продукт към кошницата
Отваряне на произволен групиран продукт
Добавяне на произволен групиран продукт в кошницата за пазаруване
Отваряне на произволен конфигурируем продукт
Добавяне на произволен конфигурируем продукт в в кошницата за пазаруване
Отваряне на кошницата за пазаруване
Поръчка като клиент (влизане по време на Checkout)
Поръчка като нов клиент (Регистрация по време на Checkout)
Поръчка като гост

Сценарий

Сценарият за тестване беше създаден с типичното според нас поведение на потребителите и 10% процента реализация (10% потребители създадоха поръчки). Идеята на този подход е да има групи потребители, като всяка група следва някакво поведение. Списъкът по-долу е пълен списък с предварително дефинирани поведенчески групи, които бяха използвани по време на теста за натоварване:

40% изоставена кошница. Сценарият е фокусиран върху потребителите, които отпадат по пътя до завършване на поръчката, като използват следните стъпки:
Отваряне на началната страница
Отваряне на произволна категория
Отваряне на произволен прост продукт и добавянето му в количката
Отваряне на произволен конфигурируем продукт и добавянето му в количката
Отваряне на страницата за пазаруване
25% само разглеждат сайта. Това е групата на посетителите, които търсят продукти и не планират да извършат покупка. Този сценарий би могъл да се използва и в бъдеще, за да се тества по-внимателно ефективността на кешовете за натоварен сайт.
Отваряне на началната страница
Отваряне на произволна категория
Отваряне на произволен прост продукт
Отваряне на произволен конфигурируем продукт
25% разглеждат сайта, като използват филтрите в категориите. Само посетители, които преглеждат продукти, като използват навигацията с филтри.
Отваряне на началната страница
Отваряне на произволна категория
Отваряне на страница с филтрирана категория по отделен атрибут
Отваряне на произволен прост продукт
Отваряне на произволен конфигурируем продукт
10% Checkout. Това е групата на типичните купувачи. Те знаят какъв продукт искат, и завършат покупката.
Отваряне на началната страница
Отваряне на произволна категория
Отваряне на произволен прост продукт и добавянето му в количката
Отваряне на произволен конфигурируем продукт и добавянето му в количката
Отваряне на страницата за пазаруване
Извършване на плащане като гост
Страница за успешна поръчка

Резултати от теста

Тестът за натоварване е създаден за 60 посетители на даден сайт за 10 минути, използвайки различни поведенчески групи, както е посочено по-горе.

При сравняване на резултатите от двата сървъра трябва да се отбележи, че Magento 2 не може да работи на малък сървър (4 CPU ядра) и изисква много повече ресурси, за да работи правилно в сравнение с това, което считаме за достатъчно за Magento 1.

На по-малък сървър (E1) , Magento 1 работи почти 5 пъти по-добре от Magento 2. Нашият тест включваше 60 потребители, симулирани чрез сайта за 10 минути, и установихме, че разгръщането на M1 може да създаде почти пет пъти повече заявки за сайт с по-добро време за реакция. Ефективността на дадена страница, например страница с конфигуриран продукт, изисква по-задълбочен анализ на кодовата база на Magento 2, тъй като страниците / действията са много бавни.

Разликата в резултатите от изпълнението между M1 и M2 не е съществена, когато тестването на натоварването бе проведено на сървър (E2 - 36 CPU ядра). Все пак, на по-мощния сървър (E2 с 36 процесорни ядра), M1 производителността е по-добра в сравнение с M2. Разликата между тях вече не е толкова голяма - 60 потребители в рамките на 10 минути могат да създадат два пъти повече заявки към сайта чрез използване на M1.

Всеки, който желае да използва Magento 2, трябва да има предвид, че това изисква много повече ресурси на процесора в сравнение с това, което бихме могли да използваме, когато имаме оперативен сайт на Magento 1.

Въз основа на резултатите от теста за натоварване, Magento 1 се представя два пъти по-бързо в сравнение с Magento 2. Има обаче страници, където разликата в времето за отговор е много по-голяма и Magento 2 е много бавен. Например, на продуктовата страница или на страницата за плащане.

Заключение

В сравнение с Magento 1, Magento 2 работи по-бавно за същият сценарий на тестване на натоварването и същите набори от данни. Резултатите ясно показват, че Magento 2 трябва да работи на по-мощен сървър, за да работи правилно или да работи на същото ниво като Magento 1.

Дори когато е избран подходящ сървър, производителността на Magento 2 все още изостава в сравнение с Magento 1. Необходимостта от допълнителни ресурси на процесора ще увеличи цената за хостинга с 7X, тъй като представянето на Magento 1 на C4.XLARGE ($ 0.239 / h) е почти същото като представянето на Magento 2 на C4.8XLARGE ($ 1.675 / h).

За да бъдем точни и справедливи за Magento 2, ние сравняваме една фино настроена машина Magento 1, с всички възможни подобрения в производителността, създадени с течение на времето, с нов продукт, който има по-голяма и по-сложна кодова база за поддръжка на модулност и сигурност. Убедени сме, че Magento 2 ще се подобри с течение на времето.

Ако трябва да дадем съвет на читателите ни, то той е:

Все още е много рано да използвате Magento 2. Освен множеството нерешени бъг фиксове от ядрото на системата и във времената, когато бързината на сайта е една от най-важните предпоставки за добро класиране в търсачките, използването на Magento 2 ще ви донесе много повече минуси, отколкото плюсове.

Бъдещето със сигурност принадлежи на Magento 2, но това не е сега, нито ще е в близките 2 години. А дотогава - както знаем, бизнеса не чака, той иска да работи.

Тук прилагаме снимки от отчета "Gatling", които предоставят подробности за резултатите от тестовете за зареждане на Magento 1 и Magento 2 на хардуер E2 (процесор 36 ядра, RAM 60 Gb):

Magento 1