Magento2 працює так повільно на локальному розвитку хостів


25

Нещодавно я почав розробляти нові розширення або налаштування на magento2, і моє перше враження було кошмаром. Я повинен зачекати приблизно 20-30 років на кожну зміну, яку я вніс? справді?

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

Моє запитання: як ви працюєте всі розробники M2? тому що я не вірю, що вам доведеться чекати 20–30-х років, щоб оновити сторінку ...

Моє середовище: Мій ПК - «i5» i5 з 8 ГБ оперативної пам’яті. Мені потрібно працювати з Windows, тому я використовую бродячий:

  • Використання всіх 4 ядер CPU
  • Використовуйте 5120 Мб оперативної пам’яті
  • Ubuntu / trusty64 - Ubuntu 14.04
  • PHP Версія 7.0.12-1 + deb.sury.org ~ довірчий + 1
  • MariaDB - 10.1.18-MariaDB-1 ~ довірливий
  • Magento 2.1.2 встановлюється лише із зразками даних (більше модулів не встановлено)
  • (Запитайте мене, чи хочете ви знати більше

Що саме відбувається? Зазвичай M2 відповідає нормально, повільно, але добре, близько 5-10 секунд для завантаження сторінок, але іноді (частіше, ніж іноді) він просто застрягає назавжди! іноді це перша сторінка, а іноді файли css, js, html, але завжди проблема полягає в TTFB.

Я побачив проблему, що буде також мастер налаштування ... з angular.js ці файли тривають вічно ...

Ці 2 малюнки стосуються навігації майстра налаштування.

http://imgur.com/Izoyuhj http://imgur.com/Vs5q8eT

Потім ще одна навігація по каталогу фронту: http://imgur.com/oXYC52D

Що я точно запитую? Це нормально? Ви, хлопці, працюєте з цим часом? Я коментував це з деякими колегами, і ми просто не віримо, я повинен працювати так? Я часом відчайдушно чекаю весь час перегляду екрана ...

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

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


У мене не було шансів пограти з магенто 2: але я припускаю, що більшість питань щодо продуктивності відбувається з вашого бродячого середовища. Чи використовуєте ви віртуальну скриньку з бродяжкою чи чимось іншим. Використання декількох ядер з virtualbox погіршує продуктивність. Якщо ви запускаєте магент із загальної папки на бродячому> magento записує файли назад у ту саму спільну частину, у вас виникають проблеми з продуктивністю.
Olli Tyynelä

Також у вас може не вистачати пам'яті у вашій системі, що призводить до використання swap на хості, якщо ви даєте бродячим 5-тигральним символам. збільшуйте суму лише в тому випадку, якщо вона вам справді потрібна.
Olli Tyynelä

Велика частина вашої проблеми полягає в тому, що ви перебуваєте в Windows. Я був у Windows протягом багатьох років, і це було дуже повільно з бродяжником / магенто. Це пов’язано з режимом синхронізації файлів, він не відповідає рівню nfs. Я почав подвійне завантаження на робочий стіл Ubuntu, і мої сайти magento були дуже швидкими, потім через деякий час я отримав mac, який використовує NFS, і це також дуже швидко.
Шон Абрамсон

Так, це віртуозно з virtualbox. Чому використання більше ядер має погіршити продуктивність? Я припускаю, що надання всіх ресурсів для VM може бути повільним "мій ПК", але швидше мій VM ... І папка, яку я використовую, / var / www (я намагався не використовувати спільну папку, це лише "Linux", що працює зараз). Як я бачу, що не працює? Я можу виконувати такі зверху чи такі команди .... але не знаю, як інтерпретувати ...
slayerbleast

@ShawnAbramson Так ... ми запропонували встановити подвійний завантажувач просто для того, щоб спробувати його, тому що, як я вже сказав, ми не віримо, що розробники M2 працюють так, як я зараз роблю hehe ...
slayerbleast

Відповіді:


8

Я спробував усе, і єдине, що працює, - це віртуальна машина, яка забезпечує бітні. https://bitnami.com/stack/magento/virtual-machine

Серйозно кажучи, я не знаю, що має цей vm, але йде дуже швидко. Я спробував створити свій VM, використовуючи свіжу установку Ubuntu, CentOS тощо.


Я думаю, що головна відмінність специфікації цього VM - це мембрана? Що в моїх Windows (на PHP 7 принаймні неможливо)
MackieeE

6

відключити об'єднання та мінімізацію CSS / JS:

Stores > Configuration > CSS Settings (Javascript Settings) > Merge CSS (Merge JS) > NO

Stores > Configuration > CSS Settings (Javascript Settings) > Minify CSS (Minify JS) > NO

Також дивіться це керівництво про те, як покращити продуктивність Magento 2.


1
У налаштуваннях за замовчуванням вже є ці значення. І це не так сильно впливає на ...
вбивство найменш

То чи було б об'єднання корисним на веб-сервері? Більше накладних витрат на обробку та не завантаження?
Мохаммед Джораїд

Чому б ви відключили об'єднання та мінімізацію CSS / JS, це буквально варіант, щоб збільшити швидкість, мені здається, це як стріляти собі в ногу
Джон

4

Я виявив, що режим розробника відключає все - що було зайвим. Я хочу кешувати певні аспекти, такі як переклад. На щастя, env.phpви все ще можете встановити, які кеші використовувати конкретно:

'cache_types' => 
      array (
        'config' => 1,
        'layout' => 0,
        'block_html' => 0,
        'collections' => 1,
        'reflection' => 1,
        'db_ddl' => 0,
        'eav' => 1,
        'customer_notification' => 1,
        'target_rule' => 1,
        'full_page' => 0,
        'config_integration' => 1,
        'config_integration_api' => 1,
        'translate' => 1,
        'config_webservice' => 1,
        'compiled_config' => 1,
      ),

Це було вище, що я вирішив кешувати, розвиваючись під час оформлення замовлення, оскільки це було сильно передовим. Я вирішив не кешувати макет; Блоки та повна сторінка, щоб побачити зміни.


Завдяки мільйонів! У мене була ця проблема, тому що я модернізував Magento2 до нової версії та зробив нову інсталяцію. Мабуть, це перезаписало мою env.php, що зробило це нескінченно повільним. Ця корекція до env.php виправлена. Знову дякую!
кодига

4

Пропозиції Magento, розміщені після відповіді на це питання. Читаючи інші відповіді, я думаю, що ця інформація може стати корисним доповненням

http://devdocs.magento.com/guides/v2.2/extension-dev-guide/build/optimal-dev-environment.html

Оптимальна конфігурація

Далі наведено список оптимізацій, які можна зробити на вашому локальному апараті розвитку

  • Magento рекомендує встановити та використовувати останню підтримувану версію PHP 7 для підвищення продуктивності.
  • Замініть свою базу даних MySQL на Percona.
  • Переконайтесь, що ви встановили та включили PHP OPcache.
  • Xdebug вимкнено за замовчуванням. Увімкніть цю функцію лише тоді, коли вона вам потрібна, оскільки їй потрібно багато пам'яті та погіршує продуктивність. Для Magento конфігурація xdebug.max_nesting_level повинна бути встановлена ​​на 200 або більше. Ви можете збільшити пам'ять, доступну для PHP, щоб збільшити продуктивність при включенні Xdebug.
  • Якщо вам потрібні зразкові дані, ви можете встановити їх за допомогою композитора або клонуючи сховища.
  • Щоб пришвидшити розробку передньої частини, вимкніть об’єднання CSS та JavaScript.
  • Переконайтесь, що кешування включено (це поведінка за замовчуванням). Як правило, лише кеш сторінок і кеш-пам'ять блоку повинні бути відключені для розробки та ввімкнені під час тестування.
  • Перевірка часової мітки Opcache завжди повинна бути розроблена. Розвиток неможливий із ввімкненням опкаш і повторної перевірки, оскільки будь-яка зміна PHP потребує скидання кешу.

Для мене Opcache зробив свою справу. Зараз його завантаження відбувається досить швидко.
Аміт Сінгх

Ще одна річ, з якою я стикався, це те, що Xdebug може бути включений за замовчуванням, що також має ефективність. Перевірте /usr/local/etc/php/conf.d/docker-php-ext-xdebug.ini Після зміни я думаю, вам потрібно перезапустити перезапуск докер-контейнера {web-container-name}
Ian в Xantek

1

Увімкніть кеш.

Перейдіть до <your magento 2 directory>/binі виконайте цю команду magento cache:enable.

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

Перейдіть до <your magento 2 directory>/binі виконайте цю команду magento cache:clean.

Моя довідка

Я теж новачок у Magento 2. Я сподіваюся, що у когось є спосіб зробити magento 2 швидким, навіть якщо кеш вимкнено.


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

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

1

Моя настройка на Ubuntu 16.10 для розробки інтерфейсу для менших редагувань :

  1. Встановити режим розробника:

    php bin/magento deploy:mode:set developer

  2. Увімкнути всі кеші:

    php bin / magento c: увімкнути

  3. Fronted Development Workflow - компіляція на стороні сервера

  4. Після будь-яких змін у меншій кількості файлів запустіть

    бурчить чистий

(Востаннє я запускаю почати - бурхливий годинник із переглядом у прямому ефірі та його чудовим)


0

Просто хочу поділитися своїм особистим досвідом. Я придумав рішення встановити Xampp з php версією 7.0, оскільки Magento не повністю сумісний з більш високою версією Php. Я спробував зображення Bitnami, вказане у відповіді, але не спрацювало так, як я очікував на Xampp 7.0.23 Посилання для завантаження


Дійсно? З xampp добре працює? Я так багато разів пробував, і було страшно ... Яка версія Magento? Можливо, за цей час вони виправили якусь виставу. Я спробую ще раз. І чому зображення Bitnami не працює так, як ви очікували?
вбивство,

У мене вище було додано посилання Magento 2.1 та Xampp 7.0, Порівнюючи зображення Bitnami з Xampp 7.0, я знайшов xampp легше та швидше
user3127648

0

Підвищення PHP memory_limitу файлі php.ini матиме хороші відмінності. Однак це не зробить це дуже гладко (Хоча це заощадить час).

Значення за замовчуванням - 512М. На своїй локальній машині я встановив це на "-1" (необмежено), і це дає кращий час завантаження.

Рекомендоване значення - пам'ять_limit = 2G, згадане тут .

Magento важкий і для забезпечення гладкості потрібне високопродуктивне обладнання, як SSD :(


memory_limitне має жодного відношення до продуктивності. Це видно з назви директиви.
Данила Вершинін

@DanielV. Мені був також цікавий про це , але потім я знайшов це: devdocs.magento.com/guides/v2.2/install-gde/prereq / ... , де він говорить , 2G , як рекомендоване значення
Бінод - GoFundMonica

1
Знову ж таки, рекомендується з власних причин. Які абсолютно не мають відношення до продуктивності. Обмеження пам’яті існує лише для того, щоб не зупинити вашу систему повністю у випадку, якщо деякі сценарії PHP (або в цьому випадку модулі Magento) закінчують їсти всю серверну оперативну пам’ять. Немає абсолютно ніякого впливу на продуктивність від встановлення значення занадто низького або занадто високого. Це просто превентивна директива зробити систему більш небезпечною. І я здивований, що люди сліпо припускають, що давати більше пам’яті на це означає, що завдяки цій директиві досягається продуктивність. Цього немає і не буде.
Данила Вершинін

Цікавий момент, Даніель. Я наслідок припустив, що насправді. Як ми можемо це продемонструвати? Будь-які покажчики, якими ви можете мене керувати, щоб я міг це пережити?
Binod - GoFundMonica

Встановіть його занадто низько (наприклад, 16 Мб, що, звичайно, недостатньо для M2), і PHP вийде з ладу з фатальною помилкою. Встановіть стільки модулів, скільки зможете, і встановіть їх занадто високо (наприклад, 4 ГБ), і все буде нормально працювати, поки ви не отримаєте ще декілька відвідувачів сайту, що, безумовно, призведе до того, що ваш сервер вийде із стану пам'яті. Вам не знадобляться ці експерименти, якщо ви просто читаєте документи для цієї директиви. PHP працює в пам'яті весь час. Він не міняється на диск і не робить подібні смішні речі.
Данила Вершинін

0

Якщо у вас виникли проблеми з налаштуванням на вікно Vagrant, майже напевно буде спосіб спільного використання ваших папок. Їх слід ділити через NFS.

Розгубившись з великою кількістю різних ящиків, я зрозумів, що, хоча я встановив NFS у конфігурації, він насправді не працює і стандартна система спільного використання VirtualBox переймає.

Я повернувся до основ і встановив просту коробку LEMP і встановив цей плагін:

https://github.com/Learnosity/vagrant-nfs_guest

Підтверджено, NFS працювала, і все було добре.


0

Те, що може зробити ваш Magento 2 швидким налаштуванням на вашому локальному сервері або взагалі на будь-якому сервері.

  1. Мінімізуйте JS та CSS
  2. Використовуйте програму кешування, наприклад Redis або Memcached.
  3. Увімкніть весь кеш, як block_html, макет, сторінку_cache тощо, наданий Magento 2.
  4. Об’єднайте CSS та JS
  5. Увімкніть плоскі продукти та категорії.

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


0

Основна причина, чому magento2 повільний у режимі розробника, пов’язана з тисячами статичних та скомпільованих файлів, що генеруються на льоту.

Для цього є 3 рішення:

  • Змонтуйте весь каталог за допомогою NFS (SSD залишається обов'язковим).

  • Монтуйте лише каталог додатків (хто б не працював), але ви втрачаєте доступ до каталогу / постачальника на своїй хост-машині.

  • Змонтуйте весь проект за допомогою rsync та виключіть каталоги, де генеруються файли (pub / static, generated / code тощо).

Я зробив цю роботу, спробуйте: https://github.com/zepgram/magento2-fast-vm/

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