噛みます。
Webサーバーからの最初の応答は、英国では200ミリ秒未満である必要が
あります。現時点では、サイトへのフロントエンドはありません。スタイルもイメージもありません。
VarnishまたはFPC(あるいはその両方)の助けがなければ、これらの数値を達成することはできません。私は確かに、(あなたがそれを追加することに決めたときはいつでも)静的コンテンツを含める必要がないことを望みます-達成することはほぼ不可能であるため(images / js / cssがほとんどまたはまったくない)。
私たちは800msで来ています。
それは、ワニスと一緒 にNginxでも実行されています。
Varnishの設定が間違っています。
Varnishのインストールを適切に構成すると、ページの読み込み時間が100ミリ秒未満になります(10ミリ秒近くになります)。
実際、Magentoの場合、このようなものが表示されることを期待してください。
顧客がログインしていないとき...
すなわち。一意のセッションを作成していない(カート/ウィッシュリストに追加、ログインなど)
--1.2s--------0.8s-----------------0.6s----------------0.1s--------------0.08s----
Uncached Mage default cache Partial FPC cache Total FPC cache Varnish
顧客がで...ログインしている場合は
すなわち。一意のセッション(ログイン、カート内のアイテムなど)を作成した。この時点で、ニスはオフになりそうです。また、ESIを使用することを選択した場合(リバースコールに応じて、FPCキャッシュと同様のページ読み込み時間を維持できます(ブートストラップのオーバーヘッドにより))、または実際にページの読み込み時間をキャッシュ解除よりも長くします。
--1.4s--------0.8s-----------------0.6s--------------
Uncached Mage default cache Total FPC cache
Varnishをチューニングする場合ではなく、「実際には何もキャッシュしていない」場合です。
理想的なMagentoサーバー構成ファイル
まったくありませんが、まったくありません。
さまざまなサイズと容量の400を超えるサーバー(すべてMagentoストア)を運用しています。そして、あるファイルにある設定ファイルが他のファイルと一致することはまれです。それは、すべての企業が同じではないためです。
ボトルネックは、さまざまな理由で発生する可能性があります。
- 多数の訪問者の同時実行、アクティブなセッション
- 「悪い」クロールボットの犠牲者、必要な貴重な負荷を生成
- 階層化されたナビゲーションヒットの割合が高い
- 多数の検索クエリ
- 1時間あたりの大量のトランザクション
- 貧弱に構築されたテンプレート
- サードパーティの拡張機能が多すぎる/遅い/かさばる
- 古くなったインバウンドリンクが404ヒットの割合が高い
- ネットワークインターフェイスの容量が制限されています
- 大規模/複雑なカタログ(製品/カテゴリ/属性のロット)
そのため、このスペクトル全体の店舗では、それぞれが最適なパフォーマンスを実現するための異なるアプローチを採用しています。
上記の問題を解決するには。「より良い/より良いハードウェア」と述べることを意図的に避けます。
- ワニスを超えたFPCを使用する
- ネットワークエッジでの不正なボットのフィルタリング/ブロック-またはCookieの状態/ URLに関係なく、すべてのリクエストをVarnishにリダイレクト
- ストックレイヤーナビゲーションをSOLRに変更し、レイヤーナビゲーションフィルターを依存させる
- 在庫検索をSOLRに変更
- MySQLの負荷をマスター/スレーブ構成全体に分散します-これは、閲覧負荷がVarnish / FPCによって吸収されることが保証されている場合にのみ行います
- テンプレートを再構築する
- それらを取り除きます
- アクセスログを継続的に監視し、配信前にNginx / VarnishでURLを書き換えます。Nginxレベルで実行する場合-Varnishが301/302リダイレクトをキャッシュしていることを確認してください。
- 静的コンテンツをCDNに分割するか、接続を改善します
- ハードウェアを追加します(まあ、ある時点でそれを言わなければなりませんでした)
したがって、これを念頭に置いて、同じNginx構成ファイル、PHP fcgiプール構成ファイル、MySQL構成ファイル、またはVarnish構成ファイルが存在することはおそらくないでしょう。それをハードウェアの変更自体と組み合わせてください。使用可能なメモリ、I / Oパフォーマンス(HDDおよびネットワーク)、CPU-微妙なバリエーションがあり、希望する400%のパフォーマンス向上につながりますが、オンラインで簡単に答えられるものはありません。
Peer 1がスポンサーしたMagentoのパフォーマンスに関するホワイトペーパーをコピーして貼り付けることができます(お勧めしません)。設定が利用可能なメモリ、スレッド制限、TCP / IP状態、I / O容量を超えないようにし、通常のApache / mod_php構成よりもパフォーマンスが低下することを願っています。
続けましょう。
理想的なMagentoサーバースタック
これにより、より現実に近づくことができます。これを実証する良い例は、専用のMagento OSがどのように構成されているかを示すことです。MageStack
個別のサブコンポーネントを使用すると、Magentoストアを実行するために適切に構成された場合に最も最適/重要なソフトウェアのリストが得られます。特に:
ファイアウォール、DOSフィルター、ロードバランサー、ワニス、Nginx、PHP、Redis、Memcached、MySQL
あなたが尋ねるとき:
最高のMagento Serverセットアップとは何ですか?
正確にあなたの目標は何ですか?
- 高可用性
- 信頼性
- 管理のシンプルさ
- 性能
- 拡張性
十分な講義、それをどうするか
サーバー障害に関する回答を部分的にミラーリングするには、同様の方法で行います。3台のサーバーを自由に使用できます。最初に可能な限り最適な方向に向けてください。高可用性ソリューションはこの回答の範囲をはるかに超えているため、回避します。
マルチサーバー構成に必要なサブコンポーネントは次のとおりです。
- ファイアウォール
- ロードバランサー
- Webサーバー
- MySQLサーバー
- 共通ストレージ
そこで、いくつかのシステムを多目的にします。PCI-DSS準拠により、各サーバーの役割が決まります。したがって、5つのロールと3つのサーバーを使用すると、すぐに侵害されます。MageStackは、仮想化を使用してこれを回避します。同じことを行うこともできます。
サーバー1:ロードバランサー+ Webサーバー
サーバー2:Webサーバー
サーバー3:データベースサーバー
低レイテンシーおよび大きなネットワーク帯域幅(> 1Gbps、<125µs)なしで、共通のストレージを使用するのではなく、各マシンにストアルートディレクトリを保存し、リアルタイムで使用ionotify
または経過したデータを複製する方が良いcron
仕事。繰り返しますが、NFSのようなネットワークファイルシステム、またはGlusterやDRBDのような複製されたブロックデバイスは、大規模な調整と適切なネットワーク帯域幅が必要なため、避けます。
ワニスは、できる限り正面に近づけて座る必要があります。ただし、ワニスはSSLを解読できません。SSLターミネーターと組み合わせてください。Nginx、Pound、Stunnel、Studなど。Varnishに組み込まれているロードバランサーは素晴らしいものではありませんが、2台のサーバーをセットアップするには十分でしょう。
Nginx + PHP-FPMは問題ありませんが、Nginxのクールエイドを飲みすぎないでください。これは、従来のApache / mod_php構成とほぼ同じように動作します。ここでは、なぜNginxを使用しないのかについての良い読み物があります。Nginxは優れた、非常に優れた事実ですが、Magentoストアのボトルネックではありません。複雑さとネイティブのMagentoサポートがないためです。ほとんどの初心者のシステム管理者は、Apache / mod_phpを他の何よりも使用することで恩恵を受けるでしょう。これはPHP-FPMを使用するよりも古くからの推奨事項のように思えますが、パフォーマンステストでは、適切に構成されている場合、Nginxソリューションを使用した場合のパフォーマンスは最大で7%しか向上しませんでした。高性能で信頼性の高いNginx / PHP-FPMのセットアップに必要なチューニングと経験は、Apache / mod_phpをアウトパフォームするためにはかなり膨大です。どちらを使用するかは、あなたの電話です。
データベースサーバーはシンプルなMySQLです。ただし、前述のように、コンバージョン率の高いサイトがある場合は、マスター/スレーブ構成をお勧めします。このアプローチに従うべきかどうかは、この記事を読むことで判断できます。
次に、周辺機器のバックエンドキャッシュであるMemcachedとRedis。小規模なストアでは、セッションを1つのMemcacheインスタンスに保存し、高速バックエンドキャッシュを別のインスタンスに保存すると、パフォーマンスが向上します。キャッシュタグを遅いバックエンドに保存することは推奨しません-それが与えるよりも多くの問題を引き起こすからです。したがって、Memcachedのセットアップでは、キャッシュのタグ付けを放棄する必要があります。代わりに、このような構成を使用します。
RedisはMagentoのネイティブではありませんが、Colin Mollenhourの拡張機能(Memcacheよりも優れたソリューション)により、キャッシュタグ、セッションストレージ、さらには永続キャッシュストレージまでサポートされ、Memcacheほど揮発性ではありません。ただし、欠点もあります。私たちは、上で見つけた大規模な(キャッシュ(とタグ)という(30Kユニーク/時間>、> 500回の注文/時間)を生産店は非常に迅速に埋めることができ、彩度のポイントがヒットされた後、LRUメカニズムは、多少失敗しますさまざまな設定にもかかわらず)、すぐに大きなボトルネックを引き起こします。そのため、古いレコードを定期的に手動で整理するのが賢明です。
それで、何のためにどんなハードウェアを使うべきでしょうか?
Webサーバー:最も高速なCPU、ほとんどのCPUコア、2GB RAM /コア
DBサーバーの比率:高速なCPU、最も高速なディスクI / O、ほとんどのRAM
したがって、3台のマシンを多目的に使用する場合、最適なレイアウトは次のとおりです。
サーバー1:SSLターミネーター->ワニス-> Nginx / Apache> PHP
サーバー2:Nginx / Apache> PHP、Redis、(MySQLスレーブ)
サーバー3:MySQL
各アプリケーションの特定の構成について。それは、ハードウェアの仕様、店舗の複雑さ、訪問者のタイプと性質、そして訪問者の膨大な量にかかっています。