NGINXを使用してmagentoを提供することを検討しています-実装の詳細については心配していませんが、誰かがそれについて良い(または悪い)ことを言っているかどうかを知りたいです。また、特に興味深いのは、NGINXを使用してmagentoの負荷を分散することです。
NGINXを使用してmagentoを提供することを検討しています-実装の詳細については心配していませんが、誰かがそれについて良い(または悪い)ことを言っているかどうかを知りたいです。また、特に興味深いのは、NGINXを使用してmagentoの負荷を分散することです。
回答:
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が好きです。これは、パフォーマンスの問題に対する魔法の弾丸ソリューションではありませんが、考慮すべき堅牢で柔軟なオプションです。
Magentoを使用した場合のNginxのパフォーマンス上の利点は無視できると思います。アーロンが述べたイベントベースのIOの利点は、Apacheにも適用されます(イベントMPMを使用する場合)。
一般にMagentoについて言えば、ほとんどの処理(99%)はPHPとデータベースで行われるため、最初の1%を最適化してもほとんどメリットはありません。
ただし、MagentoにNginxを選択した理由は他にもあります。たとえば、メモリフットプリントの縮小、レート制限の改善、SPDYサポートなどです。
多くの.htaccessステートメントはNginxステートメントに直接マッピングされないため、Apacheで実行されている既存のMagentoサイトを変換する場合、Nginxには大きな欠点があります。たとえば、NginxはACLのホスト名をサポートしていません。