У меня проблема с производительностью Magento 2.1
В моем магазине у меня 90.000 товаров. Я добавил эти продукты в мыло. Когда я сделал это, потребовалось около 7 секунд для каждой статьи (продукта?) (Запрос> Ответ). Таким образом, для запуска всех продуктов потребовалось несколько дней.
Теперь все товары в магазине. Все несколько недель мне приходится обновлять некоторые вещи по статьям (продуктам). Когда я делаю это снова с мылом, это занимает столько же времени. Когда я делаю обновления, магазин становится непригодным для использования. Пример запроса и ответа здесь: https://pastebin.com/aqnMJk98 https://pastebin.com/UAh0h8Zz
Мой сервер имеет 12-ядерный процессор, 24 ГБ оперативной памяти и SSD. Это работает Ubuntu 16.04 с Apache2 PHP7-fpm и MYSQL.
Наблюдая за процессом обновления, я вижу, что 5 ядер с MySQL работают на 100%. PHP работает немного, а остальное бездействует. ОЗУ используется только в небольшом количестве iotop
говорит о том, что мой SSD скучно.
Я наблюдал за производительностью базы данных и увидел, что Magento запустил в процессе добавления тысячи команд в базу данных. Это нормально?
Когда я обновляю его с помощью импорта Magento CSV, это происходит намного быстрее.
Что я могу сделать, чтобы ускорить этот Magento2? В этой ситуации невозможно хорошо работать с этим магазином.
источник
Ответы:
Массовый импорт
ключ в том, чтобы использовать пакетный импорт, как вы сами упомянули:
Подумайте над тем, чтобы переосмыслить свой SOAP API и перевести его в режим массовой рассылки, например, вы можете создать промежуточное программное обеспечение, которое будет принимать данные вашего продукта и генерировать файл csv, который впоследствии можно будет передавать в Magento.
Есть некоторые расширения от третьих лиц, которые помогают с этим.
Общие рекомендации по производительности
Вы можете попробовать ускорить сам Magento, но вы получите ~ 1-10% прироста от каждого улучшения, когда вы сделаете несколько из них, выгода умножится:
В случае, если все вышеперечисленное выполнено и вам нужно больше производительности:
источник
Проблема в том, что SOAP-вызовы очень дороги. Если вы запускаете SOAP-запрос на добавление / редактирование / удаление продукта, Magento должен объединить множество таблиц, чтобы получить всю необходимую информацию. Такое поведение в сочетании с самим PHP замедляет количество продуктов или данных, которые вы хотите обработать.
Сам Magento рекомендует для управления трафиком кластер из 5 узлов (1 БД, 4 веб-сервера).
Я бы порекомендовал масштабировать по горизонтали, например, с помощью AWS. Это может оказать большее влияние на ваш бизнес, но ИМХО, вы не сможете настроить Magento для лучшей работы.
В AWS вы должны использовать функцию группы автоматического масштабирования, которая отвечает за количество запускаемых вами серверов. Каждый раз, когда вы добавляете данные, появляются новые серверы, которые справляются с нагрузкой. То же самое можно сделать с помощью AWS RDS (DB Service) очень просто и быстро.
В случае, если AWS вообще не подходит, вы можете попробовать настроить Magento и PHP. Я бы порекомендовал проверить настройки для:
источник
Эта ссылка объясняет, как настроить использование памяти MySQL. Поскольку у вас так много оперативной памяти, вы можете извлечь выгоду из выделения большего количества для MySQL. Это может быть более простым и менее затратным ($) решением, чем создание выделенного сервера базы данных.
Также вы можете найти полезную утилиту MySQL Workbench, которая поможет вам в этой настройке, а также в мониторинге того, что делает MySQL в целом. Утилита сделана Oracle / MySQL; это не какое-то случайное условно-бесплатное приложение.
источник