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

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

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

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

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

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

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

напишите несколько строк кода, вкладку в браузер, F5, мгновенно увидите изменения.

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

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

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

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

подробности: я пробовал все с vagrant, но не улучшаюсь, я в настоящее время на 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

9 ответов


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

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


мой рецепт:

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

  • используйте docker с PHP 7 и Nginx

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

  • используйте redis и лак

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

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

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


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

Бродяга + Windows + Magento2 = катастрофа. Бродяга + Яблоко + Magento2 = катастрофа.

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

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

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

старая коробка linux с анемичной оперативной памятью, старая SSD, stock Apache и No fancy cache выполнили задачу без проблем, я смог легко переключаться между разработчиком и производственными режимами и получить то, что заняло у меня несколько дней, чтобы не сделать это за считанные минуты.

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

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

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

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


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

./bin/magento cache:enable

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


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

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

вы должны использовать лак для кэша 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 minification и JS minification и JS bundling (который работает только на режим производства.)

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


попробуйте отключить синхронизацию с папкой синхронизации vagrant по умолчанию (просто комментарий config.виртуальная память.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


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

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

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

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

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

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


Если вы работаете в режиме разработчика, вам нужно отключить слияние 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';

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

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

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

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

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