web-dev-qa-db-ja.com

Nginxはなぜそんなに速いのですか?

ランブラーのようなサイトはどのようにして動的コンテンツを非常に高速に提供しますか? Yahoo(私の国-SEアジアにサーバーがありますが、ランブラーはありません)よりも高速です。

これは純粋にNginxの機能ですか?そのような機能について学ぶにはどこを調べればよいですか?

ここではかなり初心者ですが、Nginxから提供された場合のserverfault.comは、IIS 7(両方の場合でdbアクセス時間が同じであると仮定)の方がはるかに高速になると思います。これは公平ですか?仮定?

編集:

IIS7の前に Nginxを使用してKarlから投稿します

31
Quintin Par

Nginx内部の概要については this のプレゼンテーションを参照してください。主な違いは、Apacheのようにスレッドを使用するのではなく、リクエストの非同期処理です。 このドキュメント もご覧ください。

26
Maxwell

ランブラーのようなサイトはどのようにして動的コンテンツを非常に高速に提供しますか? ...これは純粋にNginxの機能ですか?そのような機能について学ぶには、どこを調べればよいですか?

これは、使用するWebサーバーとはほとんど関係ありません-nginx、IISおよびApacheは「十分に高速」であり、一般にミリ秒以内に作業を行います。nginxはApacheよりはるかに高速ですが、これは単に、サイト所有者がWebサービス部分に必要なサーバーの数が少なくなることを意味します。nginxはデータをより速く転送しません。

それほど重要ではない部分は、サーバー側の速度、つまり、HTMLの作成にかかる時間です。 より重要な部分は「フロントエンド」のパフォーマンスです。つまり、HTML、CSS、Javascript、画像、これらの数、サイズこれら、およびこれらの適切な配信(HTTP圧縮、キャッシング)。

もちろん、サーバー側の速度は依然として重要です。無視する必要があるとか、それが問題ではないと言っているわけではありません。しかし、通常、これはエンドユーザーの速度の中で知覚される最も小さな部分です。サーバー側の作業は、多くの場合500ミリ秒未満で行われますが、ページは3,000〜5,000ミリ秒が経過するまで準備ができていません。この時間の大部分は、フロントエンドリソース(CSS、JavaScript、画像)のダウンロードに費やされます。

Steve Souders Yahooでオリジナルの仕事をし、現在はGoogleで働いています。 彼の最初の本「高性能Webサイト」 は、高速Webサイトの作成についてさらに学ぶための最良の出発点です。彼の本にあるものと同じ資料が このビデオトークこれらのデザインルール にあります。しかし、その本は読みやすく、理解しやすいと思います。

WebPageTest.orgのテスター -を介してサイトを実行できます。これにより、これらのサイトのフロントエンド部分に良い感触が与えられ、なぜそれらが速いか遅いかがわかります。

Nginxから提供された場合、serverfault.comの方がはるかに高速になると思いますIIS 7(両方のケースでdbアクセス時間が同じであると仮定)これは公正な仮定ですか?

いいえ、それは誤解です。 :-)

21
Jesper M

Nginxは、完全なサーバーとして使用されるよりも、他のアプリケーション/サーバーの負荷分散や静的コンテンツの提供によく使用されます。

たとえば、多くのpythonフレームワークの1つを使用してアプリを作成し、nginxをその多くのインスタンスのフロントエンドにすることができます(おそらく複数のマシンに分散しています)。この場合、nginxサーバー2つの目的:画像やスタイルシートなどの静的コンテンツのリクエストを直接処理し(その設計によりveryをすばやく実行します)、すべてのインスタンス間で負荷を分散してアプリケーションに動的リクエストを渡しますこれはRuby on Railsコミュニティでも)で非常に人気のある構成です。

RamblerがローカルのYahooサービスよりも高速に表示される理由は2つ考えられます。まず、ローカルのYahoo PoPは、迅速に取得するリクエストの数を処理するのに十分なリソースがない可能性があるため、ハードウェアを追加するだけで(ソフトウェアがこのように適切にスケーリングされていると想定して)、速度が向上します(ただし、おそらく違いはありません)追加のキットを維持するためのコストに見合う価値があるか、またはYahooがこれを実行したでしょう。もう1つの大きな違いは、Webサーバーではなくバックエンドにある可能性があります。2つのサービスでは、データベースの配置が大きく異なることは間違いなく、そうでない場合でも、まったく同じ種類のクエリ(およびデータベースアーキテクチャ専用のハードウェアにも大きな影響があります)。

あるサービスが別のサービスよりも高速である理由を分析しても(通常または特定の状況で)、単一の単純な答えは得られません-それぞれ数千人のユーザーにスケールアウトすることを目的としたアプリを設計するには、多くの方法があります独自の利点、問題、妥協、そして各サイトでこれらの違いをすべて考慮しても、ユーザーベースのダイナミックは異なります。さらに、設計者の制御が及ばないネットワークの問題もあります。

18
David Spillett

nginxは静的コンテンツサーバー/動的コンテンツジェネレーターの前に合理的な負荷分散を備えたスケーラブルなアーキテクチャです。本当に素晴らしいエンドユーザー体験を得たい場合は、おそらくコンテンツを「眼球」に近づける必要があります。CDNを使用してください。

あなたが主題に興味があるなら-チェックアウト thisthat と..よく-グーグル;-]

3
pQd

最高のサイトは、ZeusのZXTMなどのアプリケーションアクセラレータを使用しています。多くの場合、動的応答をキャッシュできるため、明らかに大きなメリットがあります。

2
Chopper3

これは良い説明です: http://www.aosabook.org/en/nginx.html

1
VBart

私はルート上ですでにEUで瞬時にページをロードしているため、serverfaultがはるかに速く(SOはトラフィックが原因でロードの問題が発生する可能性がありますか?)それはほとんどのローカルニュースサイトなどよりもはるかに高速で応答性が高いです。

ロード時間とレイテンシに関する明らかな問題のほとんどは、サーバーとエンドユーザーimoの間の問題であり、実際のサーバーパフォーマンスではありません(誰かがサイズを変更したり、何かを設計した場合を除きます)。さまざまなサイトがさまざまな方法でルーティングされる可能性があり、国別のローカルサイトのレイテンシが地球全体のレイテンシよりも大きい可能性が非常に高い-すべての要素に依存しているため、サービスだけでは解決できないとは言えない特定の用途(r)の問題がそこにあることがわかっていない限り、アップグレード/切り替え...

明らかに、サーバー上でのさまざまな種類のキャッシングは大きな違いを生みますが、これらのサイトはすべて、私が知る限りすでにそうしています。

0
Oskar Duveborn