Чому Magento 2 надзвичайно повільний?


31

Я використовував Magento 1.9, і це було нормально. Це було не так швидко, як простий сайт Joomla, але у мене було багато клієнтів, що не мали проблем.

Тепер я хотів оновити свій сайт до Magento 2, я купив новий хост (такий самий, як у мене зараз) і встановив Magento 2 без зразкових даних та його болю для використання. Не просто адміністратор, але порожня домашня сторінка також займе хвилин завантажуватися, і коли я намагаюся створити обліковий запис, я отримую помилку, що я "Досягнуто обмеження ресурсу"

Я спробував у Facebook FlashCache, OptimumCache та Cloudflare, але нічого не змінилося, хоча творці сказали, що Magento 2 набагато швидше, ніж перша версія.

Я хотів би зрозуміти, чому вони не можуть це виправити через стільки років і чому так багато людей використовують його?

Чи є якийсь спосіб застебнути його?

ОНОВЛЕННЯ:

Раніше я використовував mgt-commerce, і це було надзвичайно швидко, завантажувалося менше 2 секунд, але це коштувало занадто дорого: AWS Ціна + 199,00 €

Вони запропонували php7 / HHVM, Varnish, Redis, CDN, NGINX за замовчуванням, я здогадуюсь, чому це було швидко.

Мені довелося купити обліковий запис Amazon WS, я не знаю, чому я здогадуюсь, що мій сайт насправді розміщувався Amazon.

Я шукаю ту ж швидкість за нижчою ціною. Приклад постачальника послуг VPS

Я озирався, але виявив, що кожен хостинг-провайдер стверджує, що у них Magento хостинг. Siteground, Mochahost, Hostgator, Fastcomet тощо

Можливо, є хостинг-провайдер, який би встановив ці кеші, щоб перемогти конкурентів.

PS: Вибачте, якщо моя публікація здається нерозумною для програмістів, я, на жаль, вибрав економіку, комерцію та маркетинг в університеті :(


Чи можете ви пояснити, що ви спробували з Facebook FlashCache, OptimumCache та Cloudflare?
mbalparda

1
Схоже, проблема з його оточенням. На моєму vm відкрито cms / домашню сторінку без FPC <0.1s та з FPC <0.01s
KAndy

відключити css / js об'єднання магазинів> конфігурація> розширений> розробник дивіться тут мій коментар magento.stackexchange.com/questions/150073/…
Костянтин Герасимов

2
Я починаю з M2 і дуже засмучений його продуктивністю також. Якщо для вашого програмного забезпечення потрібна тисяча кеш-пам'яті для одного користувача, щось не так. Я сподіваюся, що скоро передумаю.
Рікардо Мартінс

@KAndy Ви можете написати, який vm ви використовуєте? Якщо ви використовуєте бродячий, чи можна було б поділитися сценарієм забезпечення? Я спробував кілька VM, але всі вони не спрацювали. Установка Magento успішна, але тоді сторінки не завантажуються.
Алан

Відповіді:


24

Для покращення продуктивності Magento 2 доступні кілька ресурсів, і всі вони досить добре зафіксовані.

Режим: Magento 2 ввів режими, будучи за замовчуванням самим повільним. Спробуйте режим розробника і завжди запускайте свій живий магазин у виробничому режимі. Більше інформації тут .

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

Redis: Redis - це необов'язкове рішення кешбек для заміни Zend_Cache_Backend_File, яке використовується в Magento 2 за замовчуванням. Його можна використовувати для зберігання сеансів та кешування сторінок.

Memcache: Memcached - це запам'ятоване значення ключових значень пам'яті для невеликих фрагментів довільних даних (рядків, об'єктів), отриманих за результатами викликів бази даних, викликів API або візуалізації сторінки. У Magento 2 його можна використовувати для сеансів .

PHP 7: Magento 2 сумісний із PHP 7 поза коробкою. Існує багато досліджень про те, як PHP 7 впливає на продуктивність назавжди.

Це лише початок, ви повинні мати можливість налаштувати веб-сервер та сервер баз даних, але це буде сильно залежати від конкретного випадку використання.

Якщо ви не знаєте, як це зробити самостійно, існує багато компаній, що спеціалізуються на хостингу Magento.

Для досить міцного середовища для розробників мої особисті рекомендації - це « Безробітний Паліаруш» або ВМ, який я отримав від Магенто на курси. Офіційне зображення докера незабаром.


9

Magento працює досить добре навіть у режимі розробника. Однак для цього потрібна початкова конфігурація.

Спочатку переконайтесь, що Magento правильно налаштований, припускаючи, що ви працюєте на Ubuntu:

Використовуйте останню збірку, оскільки Magento 2.2+ підтримує php 7.1 http://devdocs.magento.com/guides/v2.2/install-gde/prereq/php-ubuntu.html

sudo apt-get install php7.1 php7.1-imap php7.1-xml php7.1-dom php7.1-intl

Якщо для ваших кількох версій php встановлено значення 7.1 за замовчуванням через

sudo update-alternatives --set php /usr/bin/php7.1

На Маженто

  1. Встановіть розробника, якщо ще немає php -f bin/magento deploy:mode:show

    php -f bin/magento deploy:mode:set developer

  2. Перевірте, чи кеш Magento увімкнено

    php -f bin/magento cache:status

Якщо не ввімкнено (серія 1-х)

php -f bin/magento cache:enable

Увімкнути пакет JS / CSS

Магазини> Конфігурація> Додатково> Розробник

* Зверніть увагу, що наведений вище пункт меню відображається лише в режимі розробника

Налаштування шаблонів

  • Мінімізуйте HTML = Так

Налаштування Javascript

  • Об'єднання файлів JS = Так

  • Увімкнути пакет JS = Так

  • Мінімізуйте файли JS = Так

Налаштування CSS

  • Об’єднати CSS = Так
  • Мінімізуйте CSS = Так

Зробіть кеш-пам'ять звідси вперед після кожного кроку, змийте кеш, це ваша основна лінія для спроб покращити час завантаження.

php -f bin/magento cache:flush

Розширена група

Цей пост сам по собі слід дотримуватися вказівок magento devdocs про те, як це ввімкнути, це може додатково збільшити завантаження JS-інтерфейсу, зробивши його в 3 рази настільки швидко.

Використовуйте Redis

sudo apt-get update
sudo apt-get install build-essential tcl8.5
sudo apt-get install make
wget http://download.redis.io/redis-stable.tar.gz
tar xvzf redis-stable.tar.gz
cd redis-stable
make
cd utils/
sudo ./install_server.sh

Редагувати /www/project/app/etc/env.php

'cache' => 
  array (
    'frontend' => 
    array (
      'default' => 
      array (
        'backend' => 'Cm_Cache_Backend_Redis',
        'backend_options' => 
        array (
          'server' => '127.0.0.1',
          'database' => '0',
          'port' => '6379',
        ),
      ),
      'page_cache' => 
      array (
        'backend' => 'Cm_Cache_Backend_Redis',
        'backend_options' => 
        array (
          'server' => '127.0.0.1',
          'port' => '6379',
          'database' => '1',
          'compress_data' => '0',
        ),
      ),
    ),
  ),

Використовуйте PHP-FPM

apt-get install php7.1-fpm
a2enmod proxy_fcgi setenvif
a2enconf php7.1-fpm
sudo service php7.1-fpm restart
sudo service apache2 restart

Увімкніть опкаш в PHP

Редагувати /etc/php/7.1/apache2/php.ini знайти opcache.enable

opcache.enable=1

Я також рекомендую використовувати хмарний БД, такий як AWS RDS або інше, це позбавить вас головних болів від налаштування mysql.

Якщо тепер увімкнено режим виробництва php -f bin/magento deploy:mode:set production

ви повинні виявити, що вона працює досить добре.

Додавши його сюди, ви можете додати лак, переключившись на Nginx, додати CDN для статичних файлів.


2

У мене ця проблема була і на Macbook Pro (кінець 2016 року) з MAMP.

Що я хотів зробити, це створити тему Magento 2. Я деактивував усі кеші, і для того, щоб перезавантажити сторінку (фронтенд і бекенд), потрібно було 30-х років.

Я активував усі кеші командою "кеш phent magento: enable" і сайт завантажується дуже швидко. Я все ще можу працювати з Grunt і LESS, не вимикаючи кеш-тип.


1

Magento 2 за замовчуванням не повільний. Вам потрібно виконати наступні кроки, щоб зробити це швидко:

  1. Вимоги до сервера та системи

  2. Оновити версію Magento

  3. Увімкнути кеш лаку

  4. Налаштування пам’яті

  5. Увімкнути плоскі категорії та продукти

  6. Оптимізуйте Javascript та CSS

  7. Мережа доставки вмісту

  8. Використовуйте легку тему

  9. Розширення з помилками

  10. Зображення повинні бути повністю оптимізовані


22
Я перепрошую, але якщо у вас є , щоб додати кілька рівнів кешування для додатка, то це повільно за замовчуванням.
Роберт Еггінтон

Роберт: Чувак, додавання кешу в кілька шарів багатошарової системи - це правильний вид архітектури. Ми не говоримо про кеш-пам'ять про кеш ...
-o-

Використання кешів під час розробки насправді не є оптимальним рішенням. Очищення кешу кожного разу, коли вноситься зміна, більше схоже на розвиток компільованої мови, а не PHP.
Алан

0

Як ви вважаєте, що Magento 2 повільний? Мій сайт, який використовує дуже важку тему, набрав солідних 93/100 за швидкість сторінки та час завантаження - 2 секунди. Я б сказав, отримати кращий хост для Magento, оскільки ваш веб-сервер відіграє важливу роль у роботі вашого сайту. Що стосується режиму "за замовчуванням", який є найповільнішим і зовсім не відповідає дійсності. Я керував своїм магазином у режимі за замовчуванням, поки я не був готовий перейти на виробничий режим, і він набрав 91/100 у режимі за замовчуванням і лише перейшов на 93/100 після переходу у виробничий режим.

Отримайте кращий хост і кращий веб-сервер, якщо ви дійсно хочете використовувати Magento 2.


Після magento cache:disableзакінчення часу завантаження понад 30 секунд.
Том Андерсон
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.