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


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

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

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

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

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

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

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

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

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

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

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

Подробности: Я перепробовал все с 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

Author: slayerbleast, 2016-10-13

9 answers

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

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

 2
Author: slayerbleast, 2017-07-28 07:09:31

Мой рецепт:

  • Используйте *nix в качестве основной операционной системы

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

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

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

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

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

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

 1
Author: bxN5, 2017-07-26 10:53:32

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

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

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

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

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

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

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

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

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

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

 1
Author: Henry's Cat, 2018-06-11 23:52:41

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

./bin/magento cache:enable

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

 1
Author: ndlinh, 2018-08-08 10:44:12

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

Вы должны использовать 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, минимизацию JS и пакетирование JS (который работает только в производственном режиме).

Проверить официальная документация Magento 2 для настройки этой производственной конфигурации.

 0
Author: Franck Garnier, 2016-10-13 15:24:52

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

 0
Author: Michail, 2017-02-03 23:11:58

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

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

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

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

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

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

 0
Author: tobias, 2018-04-06 07:34:43

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

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';
 0
Author: Igor Sydorenko, 2018-08-10 09:59:27

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

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

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

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

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

 0
Author: Benjamin Calef, 2018-09-10 12:55:57