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
Ответы
Ответ 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. отключайте кеш, только если вы перезагружаете страницу слишком много раз подряд.