Magento 2非常慢(开发者模式)

时间:2016-10-13 10:10:08

标签: php magento vagrant e-commerce magento2

最近我开始开发magento 2项目。

首先,我尝试使用xampp进行Windows操作,这是一个烂摊子...每个刷新页面都是一场噩梦,加载页面大约需要30-40秒。我读到它,Windows系统文件使用magento是如此之慢,因为它具有大型结构,并且文章almmost强迫您使用linux在magento项目上进行开发。

问题是我需要Windows用于另一个仅适用于Windows的公司应用程序,我尝试使用Virtualbox安装虚拟机,它改进了一点......但我在虚拟机上工作的事实很生气我离开......

我现在正在使用的下一个解决方案是使用vagrant。好吧,我觉得这种方式很好,但它一直很慢...... 15-20s ......

我在Vagrant上的配置是5120MB(pc有8GB)并使用我所有的4个核心。

我感觉这么糟糕......当我在以前的项目中工作时,使用symfony / Laravel / Codeigniter,就像是:

编写一些代码行,选项卡到浏览器,F5,立即查看更改。

在M2上:写一些代码行,选项卡到浏览器,F5,等等......等等......好吧现在刷新页面,但是没有加载,等等......等等......嗯几乎......好吧。没有变化,但我清理了缓存...哦,我想我也必须删除静态文件。去吧......再等一下......

上帝...... M2没有办法加速吗?我只是问5s或类似的东西......只是我感觉如此愚蠢,看着屏幕一直在等待...

对于夸大其词,我只是要求开发模式,我尝试必须在生产模式下安装另一个magento项目,以便更快地测试事物,然后再进行测试好吧流畅的地狱与开发者模式相比......因为... omg ...只是尝试一次又一次地做订单工作流程......

那就是全部......我唯一没有尝试过的就是在电脑上使用Linux环境......但它与使用流浪汉的情况完全相同......我不知道#39;了解......你是如何开发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

14 个答案:

答案 0 :(得分:4)

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,Vagrant设置非常有人的宝贝,并且花了很多时间来建造野兽。然而构造板块移动得更快。流浪和虚拟化可能很时尚,但它对M2的开发毫无用处。事实上,我安装了M2并为它完成了所有的db和vhost设置,所花费的时间比构建Vagrant盒的时间短。

至于性能,由于基本的Linux设置上的M2比一些笨拙的Vagrant工作速度快10倍,因此很容易看出Magento 2真正的速度问题在哪里。如果你在Chrome中启动Lighthouse,你会看到TTFB绝对没问题,但如果你缩小并合并JS + CSS,性能会减半。这是因为M2有一个兆字节的脚本要下载。这是性能杀手。如果您正在使用Vagrant盒子,那么您将永远不会看到这一点而没有速度来修复它。通过修复它我的意思是写一个没有废话的正确主题,例如每页上加载jQuery。

对于制作而言,您需要能够进行缩放的内容,以便您可以获得正常的速度增强功能,例如: Redis,操作码缓存,Varnish,调整php-fpm,调整MySQL / MariaDB。如果您正在Linux上进行开发,那么您可以在localhost上测试这些东西,因为他们知道它们可以在生产中正常工作由于令人憎恶的是Vagrant,你会过早地涉足这些优化,因为你希望并为一台高性能机器祈祷,因为你需要完成工作。但是,在这样做的情况下,并且由于缺乏原生速度,您将无法完成任何工作。

如果您没有备用机器来安装Linux,那么只需转到本地提示,获取任何PC,将SSD推入其中,您就可以了。

答案 1 :(得分:2)

我尝试了一切,它唯一有效的是提供bitnami的虚拟机。 https://bitnami.com/stack/magento/virtual-machine

说真的,我不知道这个vm是什么,但是真的很快。我尝试使用全新安装的Ubuntu,CentOS等来创建我的虚拟机。但是这样的虚拟机没有那么好用。

答案 2 :(得分:2)

如果您在开发人员模式下工作,则需要禁用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';

答案 3 :(得分:1)

我的食谱:

  • 使用* nix作为主要操作系统

  • 使用docker with PHP 7和Nginx

  • 使用gulp生成css和js(比grunt快)

  • 使用redis和varnish

  • 仅禁用所需的缓存

最有价值的建议 - 如果你仍然想在硬盘上开发,你真的需要SSD 与magento2一起使用

p / s Magento 2比Symfony / Laravel / CI更复杂(M2包括Symfony 顺便说一下)并且不能像纯框架那么快

答案 4 :(得分:1)

在“开发人员”模式下,所有缓存均被禁用。这就是为什么magento变慢的原因。 我建议通过执行命令

启用缓存

./bin/magento cache:enable

但是,每次修改xml文件或配置时,您都需要清除缓存./bin/magento cache:clean

答案 5 :(得分:0)

对于生产环境:

您必须使用Redis来处理缓存,整页缓存和会话 (http://devdocs.magento.com/guides/v2.0/config-guide/redis/config-redis.html

您必须将Varnish用于Magento内置的HTTP缓存 (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

即使Magento 2不支持MariaDB,也可以使用MariaDB。

您必须使用CSS缩小和JS缩小以及JS捆绑(仅适用于生产模式)。

检查官方Magento 2文档以设置此生产配置。

答案 6 :(得分:0)

尝试禁用与默认流浪汉同步文件夹的同步(只需在VagrantFile中注释config.vm.synced_folder并重新加载) - 当需要处理大量文件时,它会变慢...

在开发人员模式下,生成静态文件也很有用: bin/magento setup:static-content:deploy并确保已启用所有缓存:bin/magento cache:status

如果它没有用,您可以尝试基于Docker的Magento DevBox工具:http://devdocs.magento.com/guides/v2.1/install-gde/docker/docker-over.html

答案 7 :(得分:0)

这里有点晚了,但我认为在处理vagrant / docker时的答案主要是文件的I / O非常慢。

我的解决方案就是禁用整个共享文件夹并将其替换为PhpStorm中的远程项目(sftp连接)。所有文件都存储在虚拟机中,每次页面需要重新加载时都不必同步。

当然,主要的好处是,在开发人员模式下工作时速度惊人。

但使用此设置时也存在一些小问题:

  • 您无法直接从终端运行命令。你必须ssh到你的流浪汉运行magento2 cli命令。

  • 运行作曲家更新后,您可能需要再次下载整个文件夹,因为在PhpStorm中不会自动下载远程更改。

答案 8 :(得分:0)

我做了这个无业游民,使您可以自定义安装选项并具有出色的性能:

  • nfs安装或常规安装
  • 目录安装/var/www/magento/app或整个项目/var/www/magento

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

您可以进行快速的magento安装并根据您的工作习惯和主机性能来调整参数。

例如,如果您的主机不支持NFS选项并且性能不佳,则只能安装足以进行开发的应用目录。

答案 9 :(得分:0)

这是我在本地环境中为Magento 2.2和2.3开发主题/模块的方法:

  • MacBook Pro
  • Valet Plus(Nginx,MySQL 5.7,PHP7.1和7.2-您可以使用valet use 7.1valet use 7.2轻松地在PHP版本之间切换)https://github.com/weprovide/valet-plus
  • memory_limit设置为4G
  • 确保将Magento设置为开发人员模式:php bin/magento deploy:mode:set developer
  • 已启用所有缓存(除了FPC)。每当我需要测试涉及配置文件等的更改时,我都会手动删除var/cache文件夹或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只会为删除的文件夹重新生成静态文件,从而节省大量时间(请确保每次删除静态文件时都在浏览器中进行硬刷新)

这仍然不是一个完美的设置,但这是迄今为止我发现不脱头发的最快方法。

答案 10 :(得分:0)

@亨利的猫是对的。非linux操作系统+ Magento2 =灾难。 如果您不努力使用xml,则可以打开magento缓存 bin/magento cache:enable 并在修改这些文件中的内容时使用bin/magento cache:clean 或更好的方法是禁用某些缓存类型bin/magento cache:disable db_ddl full_page。 @Igor Sydorenko绝对正确,禁用CSS js合并/最小化将改善很多开发人员模式的性能。

答案 11 :(得分:0)

为了给开发人员带来灵活性,Magento生成了大量文件。如果它以生产模式运行,则最慢的部分是可以优化的磁盘读取。 但是在开发人员模式下运行Magento 2时,磁盘读取和写入操作使它变得太慢。

我在开发Magento 2应用程序时也遇到了同样的情况。我的第一个建议是转向SSD。但是,不可能每次都每个人都如此。 我也无法在具有大量RAM和CPU功能的高端笔记本电脑中安装SSD。

我找到了一种解决方法,该解决方案使使用Redis缓存的localhost中的开发变得相当快。缓存清理和加热变得非常快,这极大地减少了我等待更改的等待时间。 Here is the full article to use Redis cache in localhost with Magento 2

答案 12 :(得分:0)

好的,所以我大约从6-8个月开始使用Magento 2.2.7。因此,您应该考虑一些注意事项:
1。(如果可能)使用 SSD 硬盘
2。。在magento中配置grunt。它肯定会有助于使magento的前端发展迅速。因为grunt无需执行s:s:d命令即可帮助编译较少的文件。
grunt with magento

3。。请勿启用xdebug。
4。。仅当您连续重新加载页面太多次时,才禁用缓存。

答案 13 :(得分:0)

我尝试了许多机器和许多配置,例如:

  • Windows 10-流浪者机器debian
  • Windows 10-流浪者机器debian-docker
  • Windows 10-无业游民的机器ubuntu-docker
  • Windows 10-无所不在的机器ubuntu

bitnami机器的问题:不太容易为Xdebug配置

在我的经验中,最好的是为那些想要在Windows上工作的人提供的无所事事的机器: https://app.vagrantup.com/certiprosolutions

因此,请在您的Vagrant文​​件上使用此配置:

  config.vm.box = "certiprosolutions/ubuntu-lnmp"
  config.vm.box_check_update = false

  # box modifications, including memory limits and box name. 
  config.vm.provider "virtualbox" do |vb|
     vb.name = "Magento 2.3.3 ubuntu ngnix"
     vb.memory = 8240
     vb.cpus = 2
     #vb.customize [ "modifyvm", :id, "--uartmode1", "disconnected" ]
  end

优势:

  1. 您可以在许多PHP配置之间切换 (5.6,7.0,7.1,7.2,7.3)
  2. 在同一环境中处理多个版本的Magento

一点注释。要使xdebug正常工作,您应该将xdebug的配置更改为:

[XDEBUG]
zend_extension=xdebug.so
xdebug.default_enable = 1
xdebug.remote_enable = 1
xdebug.remote_connect_back = 1
xdebug.remote_autostart = true
xdebug.remote_handler = dbgp
xdebug.remote_port = 9001
xdebug.remote_host=127.0.0.1
xdebug.remote_log="/tmp/xdebug72.log"
;xdebug.max_nesting_level = 1000