なぜMagentoはとても遅いのですか?[閉まっている]


138

Magentoは通常とてもひどく遅いですか?

これは私の初めての体験で、管理パネルは単に変更をロードして保存するのに時間がかかります。これは、テストデータを含むデフォルトのインストールです。

それがホストされているサーバーは、他の非Magentoサイトに超高速でサービスを提供します。Magentoが使用するPHPコードの処理速度を遅くする原因は何ですか?それを修正するために何ができますか?


12
どのハードウェアで実行していますか?私の経験では、Magentoは深刻なハードウェアバッキングを必要としています。
ジッタ

3
私はサポートを求めているのではなく、コードを求めています。私の希望は、誰かが過去にこれを経験し、そのような鈍い振る舞いを避けるためにコードを最適化したことでした。サイト全体に適用できるため、特定のコードスニペットはありません。私はその問題をさらに調査する必要があります。
mr-euro、

18
Magentoには6000以上のクラスファイルがあり、家庭用ではなく企業用にビルドされています。APCがなければ、イベントのインストールを考えないでください。小さなお店にはお勧めしません。
Elzo Valugi 2010年

1
あなたのフラグについて、@ Jonesome:この質問は非常に広範で、おそらくこの時点でおそらく日付が付けられています。とは言っても、Magentoの問題専用のサイト(Magento)ができました。セットアップを最適化しようとしている人にとっては、このサイトが良いリソースとなるでしょう。
Shog9 2013年

1
@ Shog9私は、magentoのアドオンを開発およびサポートするチームを管理しています。この正確な問題はほぼ毎日発生することを伝えることができます。Magentoは「通常の」ランプアプリではなく、非常に(非常に)リソースを消費します。このスレッドは重要です。それを閉じると、この一般的な会話がSOから強制的に取り除かれます。
Jonesome Reinstate Monica 2013

回答:


183

私は、Magentoのパフォーマンスの最適化に関与しているだけですが、システムが非常に遅い理由はいくつかあります

  1. Magentoの一部は、MySQLの上に実装されたEAVデータベースシステムを使用します。これは、単一の「もの」を照会することは、複数の行を照会することを意味することが多いことを意味します

  2. メモリ内に巨大なXMLツリーを構築し、それらの同じツリーに情報を「クエリ」することを含む、背後にある多くのこと(アプリケーション構成、システム構成、レイアウト構成など)があります。これには、メモリ(ツリーの保存)とCPU(ツリーの解析)の両方が必要です。これらのいくつか(特にレイアウトツリー)は巨大です。また、キャッシングがオンになっていない限り、これらのツリーはディスク上のファイル各リクエストで構築されます

  3. Magentoはその構成システムを使用して、クラスをオーバーライドできます。これは強力な機能ですが、モデル、ヘルパー、またはコントローラーがインスタンス化されるときは常に、元のクラスファイルまたはオーバーライドクラスファイルが必要かどうかを判断するために、追加のPHP命令を実行する必要があります。これは追加されます。

  4. レイアウトシステムの他に、Magentoのテンプレートシステムには多くの再帰的なレンダリングが含まれます。これは追加されます。

一般に、Magentoのエンジニアは、何よりもまず、可能な限り最も柔軟でカスタマイズ可能なシステムを構築し、後でパフォーマンスを心配するという任務を負っていました。

パフォーマンスを向上させるために最初にできることは、キャッシュをオンにすることです([システム]-> [キャッシュ管理])。これにより、MagentoがさまざまなXMLツリーを構築している間に発生するCPU /ディスクブロッキングの一部が軽減されます。

次に行うことは、ホストと運用チームがMagentoのパフォーマンスチューニングの経験を持っていることを確認することです。月額$ 7のプランを利用している場合は、それで頑張ってください。


10
豊富な説明ありがとうございます。Magentoは非常に強力でありながら、柔軟性を備えています。当初は、SQLの記述が不適切なためにDBの書き込みが停止しているだけだと思っていましたが、当初想定していたより多くのことが背後で起こっていることに気づきました。注:ショップのオーナーが商品を追加したため、キャッシュが無効になりました。キャッシュがオンのとき、ショップのセットアップ中にキャッシュを無効にするように強制されている製品が表示されないと彼は不満を述べました。専用サーバーでホストされていますが、Magentoを専用のボックスに移動する必要があるようです。
mr-euro、

4
少し前にXHProfでプロファイルを作成しました。XMLの解析には非常に長い時間がかかりました。このリストは適切だと思います。
モーガントッカー、

1
HagentでMagentoを実行すると、これがさらに良くなるのではないかと思っていました。最後に、HHVMがMagentoをサポートしていないことを確認しましたが、Magentoがサポートされている場合、それは役に立ちますか?
Bharadwaj Srigiriraju 2015年

1
これは多くのことを説明しています。知ることは戦いの半分です。これがどのように建設的であると考えられなかったかはわかりません。
flcoder

composerを使用する場合は、composerのオートローダーファイルを最適化することを忘れないでください(magentoパフォーマンスガイドラインを参照)。アプリケーションに全ページキャッシュの問題がない場合は、ワニスも非常に良いアイデアです。
Dmitri Sologoubenko

54

キャッシングに関するAlan Stormの推奨に加えて、キャッシングに関連して調査することを特にお勧めしたいことが2つあります。

-キャッシュがディスクではなくmemcachedにあることを確認してください。

私は2つのmagentoインストールを管理します。システムに何らかの負荷がかかると、memcachedのパフォーマンスが大幅に向上します。そして、それは簡単に変更できます(少なくとも他のmagentoのものに比べて!)

良い出発点はここにあります:http : //www.magentocommerce.com/boards/viewthread/12998/P30/-しかし、memcachedをまったく使用したことがない場合は、それに関する一般的な情報も確認する価値があります。

-テンプレート/ビューのキャッシュを有効にします。

これは良い記事です:http : //inchoo.net/ecommerce/magento/magento-block-caching/

Magentoサイト(Google Magentoブロックキャッシュ)にも良いものがありますが、現在はダウンしています。

私の2セントをブロックキャッシュに追加するには、/ app / code / localに独自のブロックを作成し、コアブロックを拡張してキャッシュパラメーターを定義し、xxx_Cac​​heという名前を付けてから、代わりにこれらのブロックを使用するようにレイアウトを更新することをお勧めしますコアのものの。これにより、magentoをアップグレードするときに、変更内容が失われたり、システムが破損したりするのを回避できます。


3
ポイントのThx。以前にプロダクションで使用したことがないmemcachedを見てみましょう。ブロックの複製についても良い考えです。
mr-euro、

3
私はbenlumbeyが言ったことの2番目に、windows serverを実行しているのでmemcachedを使用していませんが、/ varディレクトリをソリッドステートドライブに格納しているので、大きな違いがありました。
リックJ

@rickj-ええ、。/ varフォルダーを高速化するために何でも間違いなく役立ちます。memcachedの前にtmpfsを使用してみましたが、それもかなりうまくいきました。
benlumley 2009年

マルチノード環境のmemcachedよりオーバーヘッドが少ないように見えるので、単一のノードだけにapcキャッシュを使用するように追加します。
sbditto85

2
そうですね。ただし、PHPの実行方法によっては、いくつかの注意点があります。PHPプロセスごとに個別のAPCキャッシュが作成される可能性があります。これは、XリクエストごとにPHPプロセスを循環させると、最適性が低下します。
benlumley

23

MagentoとRackspaceが協力して、Magentoのパフォーマンスチューニングに関するホワイトペーパーを作成しました。それは素晴らしいです。 https://support.rackspace.com/whitepapers/building-secure-scalable-and-highly-available-magento-stores-powered-by-rackspace-solutions/

---編集---

新たに利用可能になったもう1つの優れたリソース(2011年10月)は次のとおりです。http//www.sessiondigital.com/assets/Uploads/Mag-Perf-WP-final.pdf

(これについてはAlan Stormに感謝します。)


更新をありがとう、私はそれを後で詳しく読むつもりです。
mr-euro

2
その2番目のリンクは現在無効です。
Laizer、2014年

1
最初のリンクも死んでいます。
エドワード

リンクが壊れています。ネル
ネル

1
Rackspaceのホワイトペーパーへの直接リンク(リンク#1)。
Levi Figueira

17

また、管理インターフェースが非常に遅い理由は、非常に明白ではない理由かもしれません。MagentoにはMage_AdminNotificationという名前のモジュールがあります。そのextを無効にしてみてください。それは、新しい更新メッセージをmagentocommerce.comにクエリするためです。それらのサーバーが遅い場合、管理ページは待機し、ネットワークラグと外部ニュースの読み込みのために実質的に遅くなります。ファイアウォールを介して送信サーバー接続を保護している場合、管理インターフェースはmagentocommerce.comに到達できないときにタイムアウトを待機するため、これはさらに苛立たしい場合があります。

これを無効にするには、[システム]-> [構成]に移動し、一番下までスクロールして、[詳細]セクションの[詳細]をクリックします。無効にMage_AdminNotificationして保存してください!


4
これにより、ローカルの開発環境でのパフォーマンスに大きな違いが生じました。これは、非常に高速な開発ボックスでの実行速度が常にイライラしていたからです。ありがとうございました!
random_user_name 2013

Magento2の場合:[ストア]-> [構成]-> [詳細]-> [詳細]をクリックし、無効にしMage_AdminNotificationます。
スコットCウィルソン

6

私はMagentoの表面的な経験しかありません。共有グリッドサーバーにインストールしたところ、ページの読み込みに5秒以上かかりました。ひばりで、CMS用に最適化された専用サーバーにそれをインストールしましたが、それは非常に非常に素早く感じました。

私の専用ホスティングは最大10 Joomlaを持っていました!サイトとVBullitinサイトが実行されています。

私の推測では、共有ホスティングではパフォーマンスが向上しないだけです。オーバーサブスクリプションでは、Magentoが正常に動作するための十分なリソースが許可されません。


6

私は会社での管理対象サーバーの最適化に深く関わっていますが、いくつかのヒントを紹介します。まず、Zendサーバーのコード追跡機能を使用して、コードをさらに詳しく見ることができます。汚れがいつどこで発生するかを確認できます。

キャッシュに関するベンラムリーの考慮事項を完全に共有します。私たちがホストするほとんどのサイトでは、ブロックキャッシュを有効にすることすらできません。このキャッシュは明示的に呼び出される必要があり、「想定」されません。したがって、コードがまだこのメカニズムに参加していない場合は、ぜひ試してみたいものです。EEバージョンをお持ちの場合は、全ページを表示して、最高の獣を手に入れることができます。

リバースプロキシも役立ちます。静的リソースをキャッシュし、フロントサーバーのphp解釈スタックへの圧力を大幅に軽減します。

セッションとMagentoキャッシュをRAMディスクに書き込むことを忘れないでください。これにより、確実に別のレベルのパフォーマンスが実現します。

ここで言うことはまだたくさんありますが、時間が足りません。2x5650 Xeon + 16 GB RAMサーバー上で実行され、Rproxyを上に配置した1.4.1 CEバージョンで適切にコーディングされた優れたサイトは、1日あたり最大50 000のユニークビジターを獲得でき、スムーズなページで誰にでもアクセスできることを知っておく必要があります。 。


5

ApacheからLiteSpeedへの切り替えは私たちに大いに役立ちました。それに加えて:MySQLの設定の編集、Fooman Speedster(jsファイルとcssファイルを圧縮/結合するモジュール)のインストール、およびAPCのインストール。Magentoは、エンタープライズエディションから最高のパフォーマンスを引き出す方法に関するホワイトペーパーも掲載していますが、他のバージョンにも同様に適用できます。http//www.magentocommerce.com/whitepaper/


4

Magentoのショッピングカートの動作が遅くなる理由はたくさんありますが、問題を回避してかなり速くするためのさまざまな方法があるという言い訳はありません。htaccessファイルを変更してGzipを有効にすることから始めます。foomanスピードスター拡張機能をインストールすることもできます。使用するサーバーのタイプも、ストアの速度を決定します。より多くのヒントとより良い説明はこちらhttp://www.interactone.com/how-to-speed-up-magento/


4

初めてインストールしたとき、ページの読み込みに30秒かかっていました。私のサーバーはRAMやプロセッサで限界に達していなかったので、どうしたらよいかわかりませんでした。firebugのネットパネルを見ると、ページごとに約100個のファイルが読み込まれており、各ファイルの接続に長い時間がかかりました。foomanスピードスターとhtaccessのgzipをインストールした後、私のサーバーの他のショッピングカートにあったように、時間は3秒に短縮されました。


3

データベースの設計があまり良くないため、Magentoは非常に遅くなります。コードは混乱しており、更新や最適化が非常に困難です。したがって、すべての最適化はコードではなくキャッシュを介して行われます。

一方。それはたくさんのツールを備えたウェブショップです。したがって、柔軟なWebショップが必要な場合は、非常に強力なサーバーを購入するだけで大​​丈夫です。


1
データベースの設計は実際には非常に優れており、柔軟性があります。
ブラック

3

また、機能性とパフォーマンスの関係にもなります。

生のパフォーマンスは、nginx、php-fpm、memcached、apc、および適切に設計されたサーバーを使用して得られます。

pleskやmagentoのパフォーマンスなどの機能は、magentoのパフォーマンスクラウドを設計するときに全体のインフラストラクチャを視野に入れて管理できます。

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