localhost開発でのMagento2の実行が非常に遅い


25

最近、magento2の新しい拡張機能またはカスタマイズの開発を開始しましたが、最初の印象は悪夢でした。変更するたびに20〜30秒ほど待たなければなりませんか?本当に?

私は開発モードについて話しているのですが、キャッシュが有効になっている実稼働環境では、Webサイトがスムーズになることがわかっています。しかし、拡張機能やレイアウトの問題を扱っているときは、静的ファイルを削除したり、キャッシュをクリアしたりする必要があります。

私の質問は、すべてのM2開発者がどのように働くのかということです。ページを更新するのに20〜30秒待たなければならないとは思わないからです...

私の環境:私のPCは8GB RAMを搭載した「良い」i5です。Windowsで作業する必要があるため、vagrantを使用します。

  • 4コアすべてのCPUの使用
  • 5120MBのRAMを使用
  • Ubuntu / trusty64-Ubuntu 14.04
  • PHPバージョン7.0.12-1 + deb.sury.org〜trusty + 1
  • MariaDB-10.1.18-MariaDB-1〜信頼できる
  • Magento 2.1.2は、sampledataのみでインストールされます(モジュールはインストールされません)
  • (詳細を知りたい場合は私に尋ねてください)

正確に何が起こっているのですか? 通常、M2はページをロードするのに5〜10秒ほど大丈夫、遅いが大丈夫、と応答しますが、時々(通常よりも)永久にスタックすることがあります!最初のページである場合もcss、js、htmlファイルである場合もありますが、常に問題はTTFBにあります。

セットアップウィザードにも問題が発生しました。angular.jsでは、これらのファイルは永久に残ります...

これらの2つの写真は、セットアップウィザード内の移動に関するものです。

http://imgur.com/Izoyuhj http://imgur.com/Vs5q8eT

次に、フロントエンドカタログをナビゲートする別のもの: http://imgur.com/oXYC52D

私は正確に何を求めていますか? これは正常ですか?あなたはこのタイミングで動作しますか?私はこれを何人かの同僚とコメントしましたが、私たちは信じられません。私は時々スクリーンを見ながらずっと待ち続けているのに絶望しています...

誰かが私にテストを見せてほしいと頼んだら、新しい製品を作成したり、ただ驚かせるようなものを...新しい注文を作成し、フィールドを埋め、すべてのフィールドに5-6秒間続くjsを実行します...

わからないが、このようなものを開発するのはとても気分が悪い...


magento 2をプレイする機会はありませんでしたが、パフォーマンスの問題のほとんどは、あなたの浮浪者の環境に起因すると想定しています。vagrantまたは何かでvirtualboxを使用しますか。virtualboxで複数のコアを使用すると、パフォーマンスが低下します。Vagrantの共有フォルダーからmagentoを実行しますか?magentoは、パフォーマンスの問題が発生する同じ共有にファイルを書き込みます。
オリTyynelä16年

また、システムのメモリが不足している可能性があります。これにより、迷惑な5gigsを与えると、ホストでスワップを使用することになります。実際に必要な場合にのみ量を増やしてください。
オッリTyynelä

あなたの問題の大部分は、あなたがWindows上にいるということです。私は何年もWindowsを使用していましたが、Vagrant / Magentoで非常に遅くなりました。これは、ファイル同期モードのためであり、nfsと同等ではありません。Ubuntuデスクトップへのデュアルブートを開始し、私のmagentoサイトは非常に高速でした。その後、NFSを使用するMacを手に入れましたが、これも非常に高速です。
ショーンエイブラムソン

はい、virtualboxで放浪しています。より多くのコアを使用するとパフォーマンスが低下するのはなぜですか?VMにすべてのリソースを与えるのは「my pc」のほうが遅いかもしれませんが、VMの方が速いかもしれません...そして、使用しているフォルダーは/ var / wwwです(共有フォルダーを使用しようとしませんでした。今)。失敗したものをどのように確認できますか?top、またはそのようなコマンドを実行できます。...を解釈する方法がわからない
...-slayerbleast

@ShawnAbramsonうん...それを試すためだけにデュアルブートをインストールすることをお勧めしました。なぜなら、M2開発者が現在のように働いているとは思わないからです
...- slayerbleast

回答:


8

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

真剣に、このvmが何を持っているのかわかりませんが、本当に速くなります。Ubuntu、CentOSなどの新規インストールを使用してVMを作成しようとしました。しかし、このVMほどうまく動作しません。


このVMの仕様との大きな違いはmemcacheですか?これは、私のWindows上で(少なくともPHP 7には、ことはできません)
MackieeE

6

CSS / JSのマージと縮小を無効にします。

Stores > Configuration > CSS Settings (Javascript Settings) > Merge CSS (Merge JS) > NO

Stores > Configuration > CSS Settings (Javascript Settings) > Minify CSS (Minify JS) > NO

Magento 2のパフォーマンスを向上させる方法については、このガイドも参照してください。


1
デフォルト設定にはすでにこれらの値があります。そして、これは影響しませんので、多くの...
slayerbleast

それでは、オンラインサーバーでマージは便利でしょうか?ダウンロードではなく、処理に対するオーバーヘッドが増えますか?
モハメッドジョレイド

なぜあなたは無効にCSS / JSは、マージと縮小化だろう、それは文字通りの速度が増加するためのオプションですが、これは足で自分自身を撮影するように私には思われる
ジョン・

4

開発者モードではすべてが無効になることがわかりました-これはやり過ぎです。翻訳など、キャッシュしたい特定の側面があります。ありがたいことに、env.php特に使用するキャッシュを設定できます:

'cache_types' => 
      array (
        'config' => 1,
        'layout' => 0,
        'block_html' => 0,
        'collections' => 1,
        'reflection' => 1,
        'db_ddl' => 0,
        'eav' => 1,
        'customer_notification' => 1,
        'target_rule' => 1,
        'full_page' => 0,
        'config_integration' => 1,
        'config_integration_api' => 1,
        'translate' => 1,
        'config_webservice' => 1,
        'compiled_config' => 1,
      ),

これは、フロントエンドであるため、Checkoutでの開発中にキャッシュすることを選択したものです。レイアウトをキャッシュしないことにしました。ブロックとフルページで変更を確認します。


感謝万円!Magento2を新しいバージョンにアップグレードし、新規インストールを行ったため、この問題が発生しました。どうやらそれは私のenv.phpを上書きしていたため、際限なく遅くなりました。このenv.phpの修正により修正されました。再度、感謝します!
コディガ

4

この質問への回答後に投稿されたMagentoからの提案。他の回答を読むこの情報は参考になると思います

http://devdocs.magento.com/guides/v2.2/extension-dev-guide/build/optimal-dev-environment.html

最適な構成

以下は、ローカル開発マシンで行うことができる最適化のリストです

  • Magentoでは、パフォーマンスを向上させるために、サポートされている最新バージョンのPHP 7をインストールして使用することをお勧めしています。
  • MySQLデータベースをPerconaに置き換えます。
  • PHP OPcacheをインストールして有効にしてください。
  • Xdebugはデフォルトではオフです。この機能は大量のメモリを必要とし、パフォーマンスを低下させるため、必要な場合にのみ有効にしてください。Magentoの場合、xdebug.max_nesting_level構成を200以上に設定する必要があります。Xdebugをオンにすると、PHPで使用できるメモリを増やしてパフォーマンスを向上させることができます。
  • サンプルデータが必要な場合は、composerを使用するか、リポジトリのクローンを作成してインストールできます。
  • フロントエンドの開発を高速化するには、CSSとJavaScriptのマージをオフにします。
  • キャッシュがオンになっていることを確認してください(これはデフォルトの動作です)。一般に、開発時にはページキャッシュとブロックキャッシュのみをオフにし、テスト時には再びオンにする必要があります。
  • 開発では、opcacheタイムスタンプの検証を常にオンにしておく必要があります。PHPの変更にはキャッシュのリセットが必要になるため、opcacheをオンにして再検証をオフにすると開発は不可能です。

私にとっては、Opcacheがそのトリックをしました。読み込みが非常に高速になりました。
アミット・シン

私が遭遇したもう1つのことは、デフォルトでXdebugを有効にできることです。これもパフォーマンスに影響します。/usr/local/etc/php/conf.d/docker-php-ext-xdebug.iniを確認してください。変更後、コンテナドッカーを再起動する必要があると思います{web-container-name}
XantekのIan

1

キャッシュをオンにします。

<your magento 2 directory>/binこのコマンドに移動して実行しmagento cache:enableます。

フロントエンドを編集するときにキャッシュを消去して、編集内容を確認します。

<your magento 2 directory>/binこのコマンドに移動して実行しmagento cache:cleanます。

私のリファレンス

私もmagento 2が初めてです。キャッシュが無効になっていても、誰かがmagento 2を高速にする方法を持っていることを願っています。


1
これが実行可能なソリューションかどうかわからない...開発モードでキャッシュを無効にするように言われているところはどこでも
...-slayerbleast

6
もちろん、キャッシュを有効にすると、サイトは速くなります...しかし、すべての変更はキャッシュを消去する必要があります...それでも時間の無駄だと思います
...-slayerbleast

1

LESS編集のフロントエンド開発用の Ubuntu 16.10でのセットアップ:

  1. 開発者モードを設定します。

    php bin/magento deploy:mode:set developer

  2. すべてのキャッシュを有効にします。

    php bin / magento c:enable

  3. サーバー側のコンパイルに設定されたフロント開発ワークフロー

  4. 少ないファイルでの変更の実行後

    うっとりする

(最後に始めるのが私です-ライブブラウジングでうっとりする時計とその素晴らしい)


0

個人的な経験を共有したいだけです。MagentoはPhpの上位バージョンと完全に互換性がないため、Xamppをphpバージョン7.0でインストールすることでした。答えにリストされているBitnami Imageを試しましたが、Xampp 7.0.23のダウンロードリンクが期待されていたので機能しませんでした


本当に?xamppでうまく機能していますか?何回も試してみましたが、ひどいものでした。たぶん、彼らは今回のパフォーマンスをいくらか修正しました。もう一度やります。そして、なぜBitnami Imageが期待どおりに機能しないのですか?
slayerbleast

私は、Magentoの2.1とXAMPPは7.0リンクiが簡単かつ迅速にXAMPPを発見したXAMPP 7.0にBitnamiの画像を比較すると、上記追加されてい
user3127648

0

memory_limitphp.iniファイルでPHP を増やすと、大きな違いが生まれます。ただし、非常にスムーズにはなりません(ただし、時間は節約されます)。

デフォルト値は512Mです。ローカルマシンでは、これを「-1」(無制限)に設定し、読み込み時間を改善しています。

推奨値は、ここに記載されている memory_limit = 2G です

Magentoは重く、SSDのような高性能ハードウェアがスムーズに必要です:(


memory_limitパフォーマンスとは何の関係もありません。ディレクティブの名前から明らかです。
ダニラヴェルシニン

@DanielV。私もそれについて疑問に思っていましたが、それからこれを見つけました:devdocs.magento.com/guides/v2.2/install-gde/prereq / ...ここで推奨値として2Gと書かれています
Binod-GoFundMonica

1
繰り返しますが、独自の理由で推奨されます。パフォーマンスとはまったく関係ありません。メモリ制限は、一部のPHPスクリプト(またはこの場合はMagentoモジュール)がすべてのサーバーRAMを使い果たした場合にシステムを完全に停止しないようにするためのものです。値の設定が低すぎたり高すぎたりしても、パフォーマンスへの影響はまったくありません。システムをよりフェイルセーフにするための単なる予防指令です。そして、私は人々が盲目的に、より多くのメモリを与えることは、このディレクティブによってパフォーマンスが達成されることを意味すると思い込んでいることに驚いています。それはありませんし、決してありません。
ダニラヴェルシニン

興味深い点、ダニエル。私は盲目的に実際にそれを仮定しました。これをどのように実証できますか?私がこれを体験できるように、あなたが私を導くことができるポインターはありますか?
Binod-GoFundMonica

設定値が低すぎると(たとえば、M2には十分ではない16MBなど)、致命的なエラーでPHPが失敗します。できるだけ多くのモジュールをインストールし、高すぎる値(4GBなど)に設定すると、サイトの訪問者が少なくなり、サーバーが確実にメモリ不足状態になるまで問題なく動作します。そのディレクティブのドキュメントを読むだけなら、これらの実験は必要ありません。PHPは常にメモリ内で実行されます。ディスクにスワップしたり、そのような面白いことをしたりしません。
ダニラヴェルシニン

0

Vagrantボックスでの設定に問題がある場合、ほぼ確実にフォルダが共有されます。NFSで共有する必要があります。

さまざまなボックスをいじくり回した後、構成でNFSを設定したにもかかわらず、実際には動作せず、標準のVirtualBox共有システムが引き継いでいることに気付きました。

基本に戻り、簡単なLEMPボックスをセットアップして、このプラグインをインストールしました。

https://github.com/Learnosity/vagrant-nfs_guest

NFSが機能し、すべてが順調であることを確認しました。


0

ローカルサーバー上または一般的にサーバー環境でMagento 2のセットアップを高速化できるもの。

  1. JSとCSSを縮小する
  2. RedisやMemcachedなどのキャッシュアプ​​リケーションを使用します。
  3. Magento 2が提供するblock_html、layout、page_cacheなどのすべてのキャッシュを有効にします。
  4. CSSとJSを統合する
  5. フラットな製品とカテゴリを有効にします。

現在、開発環境では、キャッシュ全体をフラッシュするのではなく、必要なキャッシュのみをフラッシュして、キャッシュ全体の再構築を防ぎます。


0

magento2が開発者モードで遅い主な理由は、その場で生成された何千もの静的ファイルとコンパイル済みファイルに関連しています。

これには3つの解決策があります。

  • NFSを使用してディレクトリ全体をマウントします(SSDは引き続き必須です)。

  • アプリディレクトリのみ(ハードウェアが正常に動作する場合)をマウントしますが、ホストマシンの/ vendorディレクトリにアクセスできなくなります。

  • rsyncでプロジェクト全体をマウントし、ファイルが生成されるディレクトリ(pub / static、generated / codeなど)を除外します。

私はその作品を作り、試してみました:https : //github.com/zepgram/magento2-fast-vm/

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.