Magento2 работает так медленно при разработке localhost


25

Недавно я начал разрабатывать новые расширения или настройки для magento2, и мое первое впечатление было кошмаром. Я должен ждать около 20-30 секунд для каждого изменения, которое я делаю? действительно?

Я говорю о режиме разработки , я знаю, что в работе с включенным кэшем и другими вещами сайт может быть гладким. Но когда я работаю с проблемой расширения или компоновки, мне нужно удалить статические файлы, очистить кеш и т. Д.

Мой вопрос, как вы все разработчики M2 работают? потому что я не верю, что вам нужно ждать 20-30 лет, чтобы обновить страницу ...

Мое окружение: мой компьютер "хороший" i5 с 8 ГБ ОЗУ. Мне нужно работать с Windows, поэтому я использую vagrant:

  • Использование всех 4-х ядерных процессоров
  • Используйте 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 с ...

Я не знаю, но я так плохо развиваюсь с этим материалом ...


У вас не было возможности поиграть с magento 2: но я предполагаю, что большинство проблем с производительностью связано с вашей бродячей средой. Используете ли вы virtualbox с vagrant или что-то еще. Использование нескольких ядер с virtualbox снижает производительность. Запускаете ли вы magento из общей папки на vagrant> magento записывает файлы обратно в ту же общую папку, в которой возникают проблемы с производительностью.
Олли Тайнеля

Кроме того, у вас также может быть нехватка памяти в вашей системе, что приводит к использованию свопа на хосте, если вы дадите бродяги 5 гигов. только увеличивайте сумму, если вам это действительно нужно.
Олли Тайнеля

Большая часть вашей проблемы в том, что вы работаете в Windows. Я был на Windows в течение многих лет, и это было очень медленно с vagrant / magento. Это из-за режима синхронизации файлов, он не соответствует номиналу nfs. Я начал двойную загрузку на рабочий стол Ubuntu, и мои magento сайты были очень быстрыми, затем через некоторое время я получил mac, который использует NFS, и он тоже очень быстрый.
Шон Абрамсон

Да, это бродит с VirtualBox. Почему использование большего количества ядер должно ухудшать производительность? Я предполагаю, что предоставление всех ресурсов ВМ может быть медленным «моим ПК», но быстрее моей ВМ ... И папка, которую я использую, - / var / www (я пытался не использовать общую папку, это только «linux», что работает в настоящее время). Как я могу увидеть, что терпит неудачу? Я могу выполнять top или подобные команды .... но не знаю, как их интерпретировать ...
slayerbleast

@ShawnAbramson Да ... мы предложили установить двойную загрузку, просто чтобы попробовать, потому что, как я уже сказал, мы не верим, что разработчики M2 работают так, как я сейчас хе-хе ...
slayerbleast

Ответы:


8

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

Серьезно, я не знаю, что это за ВМ, но идет очень быстро. Я попытался создать свою виртуальную машину, используя новую установку Ubuntu, CentOS и т. Д. Но не работает так хорошо, как эта виртуальная машина.


Я думаю, что основным отличием от спецификации этой виртуальной машины является memcache? Что, на моей 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
Настройки по умолчанию уже имеют эти значения. И это не так сильно влияет ...
slayerbleast

Так было бы полезно объединение на онлайн-сервере? Больше накладных расходов на обработку, а не загрузку?
Мухаммед Джорайд

Почему вы отключили 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,
      ),

Это было выше, что я выбрал для кеширования при разработке на Checkout, так как это был сильно фронтенд. Я решил не кэшировать макет; Блоки и полная страница, чтобы увидеть мои изменения.


Бесконечно благодарен! У меня была эта проблема, потому что я обновил Magento2 до более новой версии и сделал новую установку. Очевидно это переписывало мой env.php, что делало его бесконечно медленным. Это исправление в env.php исправило это. Еще раз спасибо!
codiga

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 выключен по умолчанию. Включайте эту функцию только тогда, когда вам это нужно, потому что она требует много памяти и снижает производительность. Конфигурация xdebug.max_nesting_level должна быть установлена ​​на 200 или выше для Magento. Вы можете увеличить объем памяти, доступной PHP, чтобы увеличить производительность при включенном Xdebug.
  • Если вам нужны примеры данных, вы можете установить их с помощью composer или путем клонирования репозиториев.
  • Чтобы ускорить разработку интерфейса, отключите объединение CSS и JavaScript.
  • Убедитесь, что кэширование включено (это поведение по умолчанию). Как правило, только кэш страниц и кеш блоков должны быть отключены для разработки и включены при тестировании.
  • Проверка временных меток Opcache всегда должна быть включена для разработки. Разработка невозможна при включенном opcache и повторной проверке, потому что любая модификация PHP потребует сброса кэша.

Для меня Opcache сделал свое дело. Его загрузка довольно быстро сейчас.
Амит Сингх

Еще одна вещь, с которой я столкнулся, это то, что Xdebug может быть включен по умолчанию, что также снижает производительность. Проверьте /usr/local/etc/php/conf.d/docker-php-ext-xdebug.ini После изменения я думаю, что вам нужно перезапустить перезапуск докера контейнера {web-container-name}
Ян на 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 для разработки внешнего интерфейса для LESS :

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

    php bin/magento deploy:mode:set developer

  2. Включить все кэши:

    php bin / magento c: включить

  3. Фронтальный рабочий процесс разработки установлен на стороне сервера компиляции

  4. После любых изменений в меньшем количестве файлов запустите

    хрюкать чисто

(В прошлый раз мне удается начать - ворчать смотреть с просмотра в реальном времени и его здорово)


0

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


В самом деле? С xampp нормально работает? Я пробовал так много раз, и это было ужасно ... Какая версия Magento? Может быть, они исправили некоторые показатели в этот раз. Я попробую еще раз. И почему Bitnami Image не работает так, как вы ожидали?
Slayerbleast

У меня есть ссылка на Magento 2.1 и Xampp 7.0, добавленная выше, сравнивая изображение Bitnami с Xampp 7.0, я обнаружил, что xampp проще и быстрее
user3127648

0

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

Значение по умолчанию 512M. На моей локальной машине я установил «-1» (неограниченно), и это дает лучшее время загрузки.

Рекомендуемое значение memory_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 box, это почти наверняка будет, как ваши папки являются общими. Они должны быть доступны через NFS.

После того, как я возился с множеством различных блоков, я понял, что, хотя я настроил NFS в конфигурации, он на самом деле не работал и стандартная система разделения VirtualBox вступала во владение.

Я вернулся к основам, настроил простую коробку LEMP и установил этот плагин:

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

Подтвердил, что NFS работает, и все было хорошо.


0

Вещи, которые могут сделать вашу установку Magento 2 быстрой на вашем локальном сервере или вообще на любой среде сервера.

  1. Сократить JS и CSS
  2. Используйте приложение для кэширования, такое как Redis или Memcached.
  3. Включите весь кеш, такой как block_html, layout, page_cache и т. Д., Предоставляемый Magento 2.
  4. Объединить CSS и JS
  5. Включить плоские продукты и категории.

Теперь, когда вы работаете в среде разработки, очищайте только необходимый кеш, а не сбрасывайте весь кеш, чтобы предотвратить полное перестроение кеша.


0

Основная причина, почему magento2 работает медленно в режиме разработчика, связана с тысячами статических и скомпилированных файлов, сгенерированных на лету.

Для этого есть 3 решения:

  • Смонтировать весь каталог с помощью NFS (SSD по-прежнему является обязательным).

  • Смонтируйте только каталог приложения (с любым оборудованием), но вы потеряете доступ к каталогу / vendor на вашем хост-компьютере.

  • Смонтируйте весь проект с помощью rsync и исключите каталоги, в которых сгенерированы файлы (pub / статические, сгенерированные / code и т. Д.).

Я сделал эту работу, попробуйте: https://github.com/zepgram/magento2-fast-vm/

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.