Magento 2 идет ужасно медленно (режим разработчика)

Недавно я начал разрабатывать проекты magento 2.

Сначала я пробовал в Windows с xampp, и это был беспорядок... каждая страница обновления была кошмаром, около 30-40 секунд для загрузки страницы. Я читал об этом, что системные файлы Windows настолько медленны, что работают с magento, потому что у них есть большая структура, а статья almmost заставила вас использовать Linux для разработки проектов magento.

Проблема в том, что мне нужны Windows для других корпоративных приложений, которые работают только в Windows, я пытался установить виртуальную машину с Virtualbox, она немного улучшилась... но факт, что я работаю на виртуальной машине, разозлил меня...

Следующее решение, и я сейчас работаю, использует бродягу. Хорошо, я чувствую себя хорошо развиваться на этом пути, но он продолжает идти медленно... 15-20 с...

Моя конфигурация на Vagrant составляет 5120 МБ (ПК имеет 8 ГБ) и использует все мои 4 ядра.

Мне так плохо работать, как это... когда я работал над моими предыдущими проектами, с symfony/Laravel/Codeigniter, было похоже:

напишите несколько строк кода, вкладку в браузер, F5, МГНОВЕННО увидите изменения.

На M2: напишите некоторые строки кода, вкладку в браузер, F5, подождите... подождите... теперь обновляет страницу, но она не загружается, подождите... подождите... хммм почти... ладно. Изменений нет, но я очистил кеш... ohhh Думаю, мне пришлось также удалять статические файлы. Пойдите для этого... подождите снова...

Боже... Нет пути М2 быстрее? Я только спрашиваю 5s или что-то в этом роде... это просто я чувствую себя настолько тупым, глядя на экран, ожидающий все время...

Для aclarations, я только прошу о режиме разработки, я попытался установить еще один проект magento в режиме производства для тестирования вещей быстрее, а затем это нормально, как ад по сравнению с режимом разработчика... потому что... omg... просто попробуйте сделать рабочий процесс заказа снова и снова...

Хорошо, что все... Единственное, чего я не пробовал, - это использование среды Linux на компьютере... но это точно так же, как использование бродяг... Я не понимаю... как вы разрабатываете разработчиков M2? в специальных разработчиков интерфейса... Я не верю, что они работают так же, как я... жду 20 секунд для загрузки страниц + очистка кеша + удаление статических файлов и т.д.

Подробности: Я пробовал все с бродягой, но не улучшаюсь, я в настоящее время на Ubuntu 15.04, Apache 2.4, PHP 5.6 (я пробовал 7, но все тот же) mysql 5.6

Это вкладка сети: http://i.imgur.com/HG7mbeX.png http://i.imgur.com/HG7mbeX.png

Ответы

Ответ 1

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

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

Ответ 2

Обновление 2018 года, Magento 2.2.4

Vagrant + Windows + Magento2 = катастрофа. Vagrant + Apple + Magento2 = катастрофа.

Ubuntu + Magento2 = приготовление пищи на газе.

Простые модули, например виджет, занимают много дней больше ожидаемых 2-3 часов, и невозможно вспомнить, что вы делаете, если требуется открыть минуту, чтобы открыть страницу, особенно если вам нужно очистить кеши, скомпилировать, обновления или чего-либо еще, что должно занять все время.

Это я испытал из первых рук, работая в офисе, где есть варианты Mac или Windows. Проведя целый день, пытаясь изменить директиву шаблона и не сумев сделать одно изменение конфигурации за 8 часов, я подумал о том, чтобы дать ему возможность поехать в ящик linux, чтобы увидеть, сошел ли я с ума или если это уступка Vagrant так же полезна, как и пьяная задница, спящая в парке по дороге.

Старинный Linux-модуль с анемией RAM, старый SSD, запасы Apache и никакие причудливые кешированные вещи не справились с задачей без проблем, я смог легко переключаться между режимами разработчика и производства и получать то, что заняло много дней, чтобы не делать за считанные минуты.

Рабочим машином было 8-е поколение i7, установка бродяг была очень кем-то ребенком, и много времени было потрачено на создание зверя. Однако тектонические плиты движутся быстрее. Бродяга и виртуализация могут быть модно, но это бесполезно для разработки M2. На самом деле я установил M2 и сделал для него все настройки db и vhost за меньшее время, чем требуется для создания блока Vagrant.

Что касается производительности, так как M2 на базовой установке linux в 10 раз быстрее, чем некоторые неуклюжие усилия Vagrant, легко увидеть, где проблемы с реальной скоростью Magento 2. Если вы запустили Lighthouse в Chrome, вы увидите, что TTFB абсолютно прекрасен, но половинки производительности, если вы минимизируете и объединяете JS + CSS. Это связано с тем, что M2 имеет мегабайт сценариев для загрузки. Это убийца производительности. Если вы работаете над коробкой Vagrant, вы никогда не увидите этого и не сможете быстро исправить это. Исправить это я имею в виду написать правильную тему, которая не имеет бред, такой как загрузка jQuery на каждую страницу.

Для производства вам нужно что-то, что масштабируется, поэтому вы можете получить нормальные улучшения скорости, например, Redis, кеширование кода операции, Varnish, tweaked php-fpm, tweaked MySQL/MariaDB. Если вы разрабатываете Linux, вы можете протестировать эти вещи на локальном хостинге, зная, что они будут отлично работать на производстве. С этой мерзостью, которая является бродягой, вы будете избегать этих оптимизаций преждевременно, потому что вы надеетесь и молитесь за машину-исполнитель, потому что вам нужно выполнить работу. Однако при этом и с отсутствием собственной скорости вы ничего не добьетесь.

Если у вас нет запасной машины для установки Linux, тогда просто зайдите на локальный совет, зайдите на любой компьютер, засуньте SSD в него, и вам хорошо идти.

Ответ 3

мой рецепт:

  • Используйте * nix в качестве основной ОС

  • Используйте докер с PHP 7 и Nginx

  • используйте gulp для генерации css и js (быстрее, чем хрюкать)

  • использовать redis и лак

  • отключить только необходимые кеши

И самый ценный совет - вам действительно нужен SSD для работы с magento2, если вы все еще пытаетесь разработать на жестком диске

p/s Magento 2 сложнее, чем Symfony/Laravel/CI (кстати, M2 состоит из Symfony) и не может быть так быстро, как чистые фреймворки

Ответ 4

В режиме "разработчик" все кеши были отключены. Вот почему пурпурный стал медленным. Я предлагаю включить кеши командой execute

./bin/magento cache:enable

Тем не менее, вам необходимо очистить кеш ./bin/magento cache:clean каждый раз при изменении файлов или конфигураций xml.

Ответ 5

Если вы работаете в режиме разработчика, вам нужно отключить слияние JS/CSS, отключить xdebug и включить opcache. Не стесняйтесь запускать MySQL-запросы на ваш Dev DB и кеш-флеш. Это увеличит производительность сайта в режиме разработчика.

UPDATE core_config_data SET value = '0' WHERE path = 'dev/css/merge_css_files';
UPDATE core_config_data SET value = '0' WHERE path = 'dev/css/minify_files';
UPDATE core_config_data SET value = '0' WHERE path = 'dev/js/merge_files';
UPDATE core_config_data SET value = '0' WHERE path = 'dev/js/minify_files';
UPDATE core_config_data SET value = '0' WHERE path = 'dev/js/enable_js_bundling';
UPDATE core_config_data SET value = '0' WHERE path = 'dev/static/sign';

Ответ 6

Для производственной среды:

Вы должны использовать Redis для кэша дескрипторов, полного кэша страниц и сеанса (http://devdocs.magento.com/guides/v2.0/config-guide/redis/config-redis.html)

Вы должны использовать Varnish для HTTP-кеша, встроенного в Magento (http://devdocs.magento.com/guides/v2.1/config-guide/varnish/config-varnish.html)

Вам необходимо настроить режим Magento. (http://devdocs.magento.com/guides/v2.1/config-guide/bootstrap/magento-modes.html)

Вы должны использовать ElasticSearch для поисковой системы, только для EE (http://devdocs.magento.com/guides/v2.1/config-guide/elasticsearch/es-overview.html)

Вы должны использовать PHP 7

Вы можете использовать MariaDB, даже если он не поддерживается Magento 2.

Вы должны использовать минимизацию CSS и JS-классификацию и JS-соединение (которое работает только в режиме производства).

Проверьте официальную документацию Magento 2, чтобы настроить эту конфигурацию производства.

Ответ 7

Попробуйте отключить синхронизацию с папкой синхронизации vagrant по умолчанию (просто комментируйте config.vm.synced_folder в VagrantFile и перезагрузите) - она замедляется, когда нужно работать с большим количеством файлов...

Также в режиме разработчика будет полезно создавать статические файлы: bin/magento setup:static-content:deploy и гарантировать, что все кеши включены: bin/magento cache:status

Если это не поможет вам попробовать инструмент Magento DevBox на основе Docker: http://devdocs.magento.com/guides/v2.1/install-gde/docker/docker-over.html

Ответ 8

Немного поздно, но я думаю, что ответ во время работы с бродягой/докером в основном заключается в том, что ввод-вывод файлов ужасно медленный.

Мое решение просто отключило всю общую папку и заменило его удаленным проектом (sftp-соединение) в PhpStorm. Все файлы хранятся на виртуальной машине, и их не нужно синхронизировать каждый раз, когда страница нуждается в перезагрузке.

Главное преимущество, конечно, в том, что он работает очень быстро, работая в режиме разработчика.

Но также есть некоторые незначительные проблемы при работе с этой настройкой:

  • Вы не можете запускать команды прямо с вашего терминала. Вы должны ssh в ваш бродяга для запуска команд magento2 cli.

  • После запуска обновлений композитора вам, возможно, придется снова загрузить всю папку, потому что в PhpStorm удаленные изменения не загружаются автоматически.

Ответ 9

Я сделал этот бродяга, который позволяет настраивать параметры монтирования и обладает высокой производительностью:

  • Крепление nfs или обычное крепление
  • каталог mount /var/www/magento/app или весь проект /var/www/magento

https://github.com/zepgram/magento2-fast-vm

Вы можете работать с быстрой установкой magento и адаптировать параметры в зависимости от вашей рабочей практики и вашей главной машины.

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

Ответ 10

Это мой рецепт разработки тем/модулей в localhost для Magento 2.2 и 2.3:

  • MacBook Pro
  • Valet Plus (Nginx, MySQL 5.7, PHP7.1 и 7.2 - вы можете легко переключаться между версиями PHP с valet use 7.1 или valet use 7.2) https://github.com/weprovide/valet-plus
  • memory_limit установлен в 4G
  • Убедитесь, что Magento установлен в режим разработчика: php bin/magento deploy:mode:set developer
  • Все кэши включены, кроме FPC. Всякий раз, когда мне нужно проверить изменения, связанные с файлами конфигурации и т.д., Я вручную удаляю содержимое папки var/cache или generated/code папки generated/code для изменений DI. Тип кеша, который особенно замедляет все, - это кеш конфигурации, поэтому он должен быть включен, иначе страницы внешнего интерфейса и бэкэнда будут загружаться мучительно медленно.
  • Я использую Grunt Watch и расширение Livereload Chrome, чтобы увидеть свои изменения в файлах .less без необходимости развертывания статических файлов при каждом изменении. https://devdocs.magento.com/guides/v2.3/frontend-dev-guide/css-topics/css_debug.html
  • Всякий раз, когда я меняю файл JS, я перехожу к pub/static/[adminhtml/frontend]/[theme]/[locale]/и удаляю ТОЛЬКО папку, в которой живет статический файл, соответствующий файлу JS, который я изменил. Это мешает мне необходимость развертывания ВСЕХ статических файлов. Magento сгенерирует только статические файлы для удаленной папки, сэкономив МНОГО времени (обязательно делайте жесткое обновление в вашем браузере каждый раз, когда вы удаляете статический файл)

Это все еще не идеальная установка, но это самый быстрый способ, который я нашел до сих пор продуктивным, не вырывая мои волосы.

Ответ 11

@Генри Кэт прав. Non linux os + Magento2 = катастрофа. Если вы не усердно работаете с xmls, вы можете включить magento cache: bin/magento cache:enable и использовать bin/magento cache:clean при изменении чего-либо в этих файлах или лучше просто отключить определенные типы кэша bin/magento cache:disable db_ddl full_page, @Игорь Сидоренко абсолютно прав, отключение css js слияния/минификации улучшит производительность в режиме разработчика.

Ответ 12

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

Я также испытывал то же самое при разработке приложений Magento 2. Мое первое предложение - перейти на SSD. Однако, это не всегда возможно для каждого. Я также не смог установить SSD на свой высококлассный ноутбук с большим количеством оперативной памяти и мощности процессора.

Я нашел работу, которая значительно ускорила мою разработку в localhost с использованием кэша Redis. Очистка и нагрев кэша стали чрезвычайно быстрыми, что резко сократило мое время ожидания, чтобы увидеть изменения. Вот полная статья об использовании кэша Redis в localhost с Magento 2.

Ответ 13

Итак, я работаю с Magento 2.2.7 примерно с 6-8 месяцев. Итак, есть некоторые замечания, которые вы должны рассмотреть:
1. использовать SSD Hard Disk (если это возможно)
2. настроить grunt в magento. это, безусловно, поможет сделать разработку интерфейса в magento быстрой. потому что grunt помогает компилировать меньше файлов без необходимости выполнения команды s: s: d.
хрюкать с пурпурным

3. не включайте xdebug.
4. отключайте кеш, только если вы перезагружаете страницу слишком много раз подряд.