NGINXを使用するパフォーマンスの利点


16

NGINXを使用してmagentoを提供することを検討しています-実装の詳細については心配していませんが、誰かがそれについて良い(または悪い)ことを言っているかどうかを知りたいです。また、特に興味深いのは、NGINXを使用してmagentoの負荷を分散することです。


NginXを備えた専用サーバーで2つのショップを運営しています。NginXはリクエストをより適切に処理し、Magentoにより多くのリソースを残すため、トラフィックの多いショップには確実にメリットがあります。交通量の少ない店では、利益があるかどうかわからない
サンダーマンジェル

回答:


15

Nginxは、Magentoをホストするのに間違いなく良い選択であり、サイトのパフォーマンスを改善するのに役立つ多くの素晴らしい(しかし小さな)利点があります。

NginxとApacheの主な違いは、NginxはノンブロッキングイベントIOを使用し、Apacheはマルチスレッド/処理のみを使用することです。違いは何ですか、なぜ重要なのですか?さて、Apacheの場合、5つのスレッドがあるとすると、いつでも5つのリクエストを処理できます。これらのスレッドの1つが完了するまでに時間がかかる場合、それ以降の着信要求を処理するために残っているスレッドは4つだけです。5つのスレッドすべてがロックされると、着信要求は1つが終了するまで処理できません。

スレッドが何かに対するリクエストを受信すると、イベントIOにより、イベントが発生し、次のリクエストに直接進みます。イベントがコールバックすると、関連するクライアントに応答を渡します。

これは、非同期JavaScriptの動作とほぼ同じです。AJAXリクエストを実行し、コールバックを取得するまで続行します。

この最新のアプローチは、大量のスレッドまたはワーカーシステムプロセスを生成するオーバーヘッドなしで、多数の小さな静的ファイルを提供するのに適しています。

Nginxのもう1つの利点は、メモリフットプリントが小さいことです。Apacheは多くのものをサポートしており、そのために高いメモリと計算フットプリントを持っています。あなたはそれを元に戻すことができますが、Nginxはメモリの観点から無駄のないようにゼロから設計されています。

違いはそれほど大きくありませんが、数千のリクエストにスケールアップすると、それらの小さな違いが全体として大きな違いを生みます。

ここで、Magentoアプリケーションの最大のパフォーマンスボトルネックはPHPコードの実行であることを覚えておくことが重要です。ここでは、ApacheとNginxのパフォーマンスの違いは基本的に無視できます。重要なことは、PHP-FPMとApacheでワーカーMPMを使用することです(そしてprefork / mod-phpを絶対に避けてください)。主な理由は、PHPコードを実行する必要がある場合にのみPHPインタープリターを呼び出すことであり、APCのようなop-codeキャッシングソフトウェアを効果的に使用できることです(そして、これが唯一の最大のパフォーマンス向上です)。

最後のポイント:一部のモジュール/アプリケーションはApacheの使用を想定しており、ドキュメントはModRewriteの使用または.htaccessファイルの使用を対象としています。NginxにはModRewriteスタイルのサポートがありますが、ディレクトリごとの.htaccessスタイルソリューションのサポートはありません。

個人的には、Nginxは静的コンテンツを効率的に提供し、PHP-FPMのセットアップが非常に簡単であり、その構成構文が非常に気に入っているため、Nginxが好きです。これは、パフォーマンスの問題に対する魔法の弾丸ソリューションではありませんが、考慮すべき堅牢で柔軟なオプションです。


1
Magento、Inc.の調査結果に裏付けられた素晴らしい回答:magentocommerce.com/whitepaper
ベンマーク

そうです、Aaron 100%に同意します。Apacheと比較して静的コンテンツをより高速に処理し、より多くの同時リクエストを処理できるため、私たちもほとんどのMagento展開にNginxを使用しています。Nginxで出会った唯一の欠点は、プロジェクトの1つにあります(サーバーの負荷が非常に低い場合でも)504ゲートウェイタイムアウトエラーをランダムにスローします。私たちはまだこの問題を解決していません。さまざまなフォーラムで説明されているソリューションのほとんどは、あまり役に立ちませんでした。
ヴィンチルーファス

1

Magentoを使用した場合のNginxのパフォーマンス上の利点は無視できると思います。アーロンが述べたイベントベースのIOの利点は、Apacheにも適用されます(イベントMPMを使用する場合)。

一般にMagentoについて言えば、ほとんどの処理(99%)はPHPとデータベースで行われるため、最初の1%を最適化してもほとんどメリットはありません。

ただし、MagentoにNginxを選択した理由は他にもあります。たとえば、メモリフットプリントの縮小、レート制限の改善、SPDYサポートなどです。

多くの.htaccessステートメントはNginxステートメントに直接マッピングされないため、Apacheで実行されている既存のMagentoサイトを変換する場合、Nginxには大きな欠点があります。たとえば、NginxはACLのホスト名をサポートしていません。

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