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
9 answers
Я перепробовал все, и единственное, что работает, - это виртуальная машина, предоставляющая bitnami. https://bitnami.com/stack/magento/virtual-machine
Серьезно, я не знаю, что у этой виртуальной машины, но она работает очень быстро. Я попытался создать свою виртуальную машину, используя новую установку Ubuntu, CentOS и т. Д. Но работает не так хорошо, как эта виртуальная машина.
Мой рецепт:
Используйте *nix в качестве основной операционной системы
Используйте docker с PHP 7 и Nginx
Используйте gulp для генерации css и js (быстрее, чем grunt)
Используйте redis и лак
Отключите только необходимые кэши
И самый ценный совет - вам действительно нужен SSD для работы с magento2, если вы все еще пытаетесь разрабатывать на жестком диске
P/s Magento 2 сложнее, чем Symfony/Laravel/CI ( Кстати, M2 состоит из Symfony) и не может быть таким быстрым, как чистые фреймворки
Обновление 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, и все готово.
В режиме "разработчик" все кэши были отключены.Вот почему 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, минимизацию JS и пакетирование JS (который работает только в производственном режиме).
Проверить официальная документация Magento 2 для настройки этой производственной конфигурации.
Попробуйте отключить синхронизацию с папкой 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
Здесь немного поздно, но я думаю, что ответ при работе над vagrant/docker в основном заключается в том, что ввод-вывод файлов ужасно медленный.
Моим решением было просто отключить всю общую папку и заменить ее удаленным проектом (sftp-соединением) в PhpStorm. Все файлы хранятся в виртуальной машине, и их не нужно синхронизировать каждый раз, когда страница нуждается в перезагрузке.
Главное преимущество, конечно, в том, что он удивительно быстр при работе в режиме разработчика.
Но также есть некоторые незначительные проблемы при работе с этой настройкой:
Вы не можете запускать команды прямо со своего терминала. Вы должны войти по ssh в свой vagrant для выполнения команд командной строки magento2.
После запуска обновлений composer вам, возможно, придется загрузить всю папку заново, потому что в PhpStorm удаленные изменения не загружаются автоматически.
Если вы работаете в режиме разработчика, вам необходимо отключить слияние 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';
Я сделал этот бродяга, который позволяет настраивать параметры монтирования и обладает отличной производительностью:
- монтирование nfs или обычное монтирование
- монтирование каталога
/var/www/magento/app
или всего проекта/var/www/magento
Https://github.com/zepgram/magento2-fast-vm
Вы можете работать над быстрой установкой magento и адаптировать параметры в зависимости от вашей практики работы и производительности вашего хост-компьютера.
Например, если ваш хост-компьютер не поддерживает опцию NFS и имеет плохие производительность вы можете смонтировать только каталог приложений, которого достаточно для разработки.