web-dev-qa-db-ja.com

Magento 2がひどく遅くなる(開発者モード)

最近、magento 2プロジェクトの開発を始めました。

最初にWindowsでxamppを試してみましたが、それはめちゃくちゃでした...すべての更新ページは悪夢で、ページをロードするのに約30〜40秒かかりました。私はそれについて読んだ、Windowsシステムファイルはmagentoで動作するのが非常に遅いため、構造が大きいためであり、記事almmostはmagentoプロジェクトでの開発にLinuxを使用することを強制していました。

問題は、Windowsでのみ動作する別の会社のアプリにはWindowsが必要なことです。Virtualboxで仮想マシンをインストールしようとしましたが、少し改善されました...しかし、仮想マシンで作業しているという事実は、私を怒らせました...

次のソリューションと私が現在取り組んでいるのは、浮浪者を使用することです。さて、私はこの方法で開発するのは良い感じですが、ゆっくりと進み続けます... 15-20s ...

Vagrantの私の設定は5120MB(PCには8GBあります)で、私のPC 4コアをすべて使用します。

以前のプロジェクトでsymfony/Laravel/Codeigniterを使用して作業していたとき、私はこのように作業するのがとても気分が悪いです:

数行のコードを記述し、ブラウザにタブで移動し、F5キーを押して、変更を即座に確認します。

M2の場合:コード行をいくつか記述し、タブをブラウザーに表示し、F5キーを押します。お待ちください...お待ちください...さて、ページを更新しますが、読み込まれません。お待ちください...お待ちください...うーんほぼ...わかりました。変更はありませんが、キャッシュをクリーンアップしました...ああ、静的ファイルも削除する必要があったと思います。それのために行きます...もう一度待ってください...

神... M2が速くなる方法はありませんか?私は5sかそのようなものだけを求めています...それは私がただ画面をずっとずっと待っているのをとても愚かに感じているだけです...

明確にするために、私は開発モードだけを求めています、私は 試しました 物事をより速くテストするためにプロダクションモードで別のmagentoプロジェクトをインストールする必要があり、開発者モードと比べて大丈夫です。なぜなら、...ああ...注文ワークフローを何度も繰り返してみてください...

それだけです...私が試していない唯一のことは、コンピュータでLinux環境を使用することです...しかし、それはvagrantを使用することと同じです...わかりません...どのように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

19
slayerbleast

私は何でも試してみましたが、機能するのは、bitnamiを提供する仮想マシンだけです。 https://bitnami.com/stack/magento/virtual-machine

真剣に、私はこのvmが何であるかわかりませんが、本当に速くなります。私はVM UbuntuやCentOSなどの新規インストールを使用して作成しましたが、このVMのようにうまく機能しません。

2
slayerbleast

2018アップデート、Magento 2.2.4

Vagrant + Windows + Magento2 =災害。浮浪者+ Apple + Magento2 =災害。

Ubuntu + Magento2 =ガスで調理。

単純なモジュール。ウィジェットの場合、予想される2〜3時間よりも多くの日数がかかり、ページを開くのに1分かかる場合、特にキャッシュのクリア、コンパイル、アップグレードなどを行う必要がある場合は、何をしているのか思い出せません。それは何の時間もかかりません。

これは、オプションがMacまたはWindowsであるオフィスでの作業から直接経験しました。テンプレートディレクティブを変更しようとして丸1日を費やし、8時間で1つの構成変更を行うことに失敗した後、私はそれをLinuxボックスで試して、私が怒っているかどうか、またはこのVagrantの工夫がそれと同じくらい役立つかどうかを考えました。道に沿って公園で荒々しい寝ている酔っぱらいのお尻。

貧弱なRAM、古いSSD、在庫のApache、ファンシーキャッシュのない古いLinuxボックスは問題なくタスクを完了しました。開発者モードとプロダクションモードを簡単に切り替えることができ、数分で何もしなくて済むようになりました。

作業機械は第8世代i7で、Vagrantのセットアップは非常に誰かの赤ちゃんであり、獣の構築に多くの時間が費やされていました。しかし、構造プレートはより速く動きます。浮浪者と仮想化はファッショナブルかもしれませんが、M2開発には役に立ちません。実際、私はM2をインストールし、Vagrantボックスの構築よりも短い時間ですべてのdbおよびvhostセットアップを実行しました。

パフォーマンスに関しては、基本的なLinuxセットアップのM2は、不器用なVagrantの取り組みよりも10倍高速であるため、Magento 2の実際の速度の問題がどこにあるかを簡単に確認できます。 ChromeでLighthouseを起動すると、TTFBは完全に正常ですが、JS + CSSを縮小してマージするとパフォーマンスは半分になります。これは、M2にダウンロードするスクリプトのメガバイトがあるためです。これはパフォーマンスキラーです。Vagrantボックスで作業している場合、これが表示されることはなく、修正する速度もありません。修正することで、すべてのページにjQueryをロードするなど、意味のない適切なテーマを記述します。

本番環境では、通常の速度向上を実現できるようにスケーリングできるものが必要です。 Redis、オペコードキャッシング、ワニス、php-fpmの微調整、MySQL/MariaDBの微調整。 Linuxで開発している場合は、本番環境で問題なく動作することを確認して、これらをlocalhostでテストできます。あなたは仕事を終わらせる必要があるので、パフォーマンスの高いマシンを期待して祈っているので、Vagrantであるその忌まわしさで、時期尚早にこれらの最適化に手を出すでしょう。ただし、そうすることで、ネイティブの速度がないため、何も実行されません。

Linuxをインストールするための予備のマシンがない場合は、ローカルチップにアクセスし、任意のPCを入手してSSDを押し込むだけで問題ありません。

6
Henry's Cat

開発者モードで作業する場合は、JS/CSSマージを無効にし、xdebugを無効にして、opcacheを有効にする必要があります。開発DBで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';
2
Igor Sydorenko

私のレシピ:

  • * nixをメインOSとして使用する

  • PHP 7およびNginxでdockerを使用する

  • gulpを使用してcssとjsを生成する(gruntよりも高速)

  • redisとニスを使用する

  • 必要なキャッシュのみを無効にする

そして、最も価値のあるアドバイス-あなたは本当にSSDが必要 HDDで開発しようとしている場合、magento2で作業する

p/s Magento 2はSymfony/Laravel/CI(M2はSymfonyで構成されています)よりも複雑で、純粋なフレームワークほど高速ではありません。

1
bxN5

「開発者」モードでは、すべてのキャッシュが無効になりました。そのため、magentoが遅くなります。実行コマンドでキャッシュを有効にすることをお勧めします

./bin/magento cache:enable

ただし、キャッシュを消去する必要があります./bin/magento cache:clean xmlファイルまたは構成を変更するたび。

1
ndlinh

マウントオプションをカスタマイズすることができ、優れたパフォーマンスを持つこの浮浪者を作りました:

  • nfsマウントまたは通常マウント
  • ディレクトリマウント/var/www/magento/appまたはプロジェクト全体/var/www/magento

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

Magentoの高速インストールを行い、作業方法とホストマシンのパフォーマンスに応じてパラメーターを調整できます。

たとえば、ホストマシンがNFSオプションをサポートしておらず、パフォーマンスが悪い場合、開発に十分なappディレクトリのみをマウントできます。

0
Benjamin Calef

私は多くのマシンと多くの構成を試しました:

  • 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
0
Hicham Elh

わかりましたので、Magento 2.2.7を約6〜8か月間使用してきました。だからあなたが考慮すべきいくつかの注意事項があります:
1。use[〜#〜] ssd [〜#〜]ハードディスク(可能な場合)
2。magentoでgruntを設定します。それは確かにmagentoでフロントエンドの開発を高速にするのに役立ちます。 gruntはs:s:dコマンドを実行する必要なしに少ないファイルをコンパイルするのに役立ちます。
マジェントでうなり声

3。xdebugを有効にしないでください。
4。連続して何度もページをリロードする場合にのみ、キャッシュを無効にします。

0
Naveen Jain

開発者に柔軟性を与えるために、Magentoは多くのファイルを生成します。本番モードで実行する場合、最も遅い部分は、最適化できるディスク読み取りです。しかし、Magento 2を開発者モードで実行している間は、ディスクの読み取りおよび書き込み操作が遅くなりすぎます。

Magento 2アプリケーションの開発中にも同じことを経験していました。私の最初の提案はSSDに移行することです。しかし、それは誰もがいつでもできるわけではありません。また、RAM)とCPUパワーの高いハイエンドラップトップにSSDをインストールすることもできませんでした。

Redisキャッシュを使用するlocalhostでの開発がかなり速くなるような回避策を見つけました。キャッシュのクリーニングとウォーミングが非常に速くなり、変更を確認するまでの待ち時間が大幅に短縮されました。 Magento 2のlocalhostでRedisキャッシュを使用するための完全な記事です

0
AnkitK

デフォルトのvagrant同期フォルダーとの同期を無効にしてみてください(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

0
Michail

本番環境の場合:

キャッシュ、フルページキャッシュ、セッションのハンドルにはRedisを使用する必要があります( http://devdocs.magento.com/guides/v2.0/config-guide/redis/config-redis.html

Magentoに組み込まれているHTTPキャッシュにはVarnishを使用する必要があります( 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

検索エンジンにはEEのみでElasticSearchを使用する必要があります( http://devdocs.magento.com/guides/v2.1/config-guide/elasticsearch/es-overview.html

PHP 7を使用する必要があります

Magento 2でサポートされていない場合でも、MariaDBを使用できます。

CSSの縮小化、JSの縮小化、およびJSのバンドル(これはプロダクションモードでのみ機能します)を使用する必要があります。

このプロダクション構成をセットアップするには、公式のMagento 2のドキュメントを確認してください。

0
Franck Garnier

ここで少し遅れますが、vagrant/dockerで作業しているときの答えは、ほとんどの場合、ファイルのI/Oがひどく遅いということです。

私の解決策は、共有フォルダー全体を無効にして、PhpStormのリモートプロジェクト(sftp接続)に置き換えるだけでした。すべてのファイルは仮想マシン内に保存されるため、ページの再読み込みが必要になるたびに同期する必要はありません。

もちろん、主な利点は、開発者モードでの作業中に驚くほど高速であることです。

しかし、このセットアップで作業するときにいくつかのマイナーな問題があります:

  • 端末から直接コマンドを実行することはできません。 magento2 cliコマンドを実行するには、VagrantにSSHで接続する必要があります。

  • composerアップデートを実行した後、PhpStormではリモートの変更が自動的にダウンロードされないため、フォルダ全体を再度ダウンロードする必要がある場合があります。

0
tobias

これは、Magento 2.2および2.3のlocalhostでテーマ/モジュールを開発するための私のレシピです。

  • 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を除くすべてのキャッシュが有効です。構成ファイルなどを含む変更をテストする必要があるときはいつでも、DI変更のためにvar/cacheフォルダーまたはgenerated/codeフォルダーのコンテンツを手動で削除します。特にすべてを遅くするキャッシュタイプは構成キャッシュなので、有効にする必要があります。そうしないと、フロントエンド/バックエンドページの読み込みが非常に遅くなります。
  • 私は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は削除されたフォルダーの静的ファイルのみを再生成し、時間を大幅に節約します(静的ファイルを削除するたびにブラウザーでハードリフレッシュを実行してください)

それはまだ完璧なセットアップではありませんが、髪を抜かずに生産性を上げることがこれまでに見つけた最も速い方法です。

0

@ヘンリーの猫は正しいです。非Linux OS + Magento2 =災害。 XMLを使用していない場合は、magentoキャッシュbin/magento cache:enableをオンにして、これらのファイルで何かを変更するときにbin/magento cache:cleanを使用するか、特定のキャッシュタイプbin/magento cache:disable db_ddl full_pageを無効にしてください。 @Igor Sydorenkoは完全に正しいです。cssjsのマージ/最小化を無効にすると、LOT開発者モードのパフォーマンスが向上します。

0
Jean Paul CP