3

問題

2apache台のサーバーの応答時間は長いですが、CPU やメモリの上限はわかりません。

詳細

apacheクライアント用の静的コンテンツをサーバーで処理する2 つ のサーバーがあります。

  • この Web サイトには多くのトラフィックがあります。
  • トラフィックが多い場合、1 秒あたり最大 10 件のリクエスト (html、css、js、画像) があります。
  • 各 HTML は、js、css、および画像をロードするために、サーバーに対して 30 の他の要求を行っています。
  • Safari 開発者ツールは、html ページにアクセスするたびに 2MB が転送されていることを示しています
  • これらの 2 つのサーバーは、Amazon Web Service
  • どちらのインスタンスも m1.large (2 CPU、7.5 RAM) です。
  • 同じサーバーで画像を提供しています
  • サーバーは米国にありますが、多くのトラフィックはヨーロッパから来ています

私は試した

  • プリフォークからワーカーへの変更
  • 増加するプロセス
  • 増加するスレッド
  • タイムアウトの増加

(apachebench) でベンチマークを実行していますが、ab改善が見られません。

私の質問は次のとおりです。

  • 画像や js (400k) などの大きなリソースを提供すると、サーバーの速度が低下する可能性はありますか?
  • サーバーごとに 1 秒あたり 5 リクエストというのはトラフィックが多すぎて、私にできる調整がないので、サーバーを追加するしか解決策がないのでしょうか?
  • amazon web services帯域幅に問題がありますか?

新しい情報

ファイルが GlusterFS のマウントされたディレクトリから読み取られています

同じネットワーク上の EC2 インスタンスで実行される ab (Apache ベンチ) で収集されたメトリクス

Connections: 500
Concurrency: 200

Server with files on mounted directory (files on glusterfs)
    Request per second: 25.26
    Time per request: 38.954
    Transfer rate: 546.02

Server without files on mounted directory (files on local storage)
    Request per second: 1282.62
    Time per request: 0.780
    Transfer rate: 27104.40

新しい質問

マウントされたディレクトリ (NFS または GlusterFS) からリソース (html、js、css、画像) を読み取ると、Apache のパフォーマンスが劇的に低下する可能性はありますか?

ありがとう

4

2 に答える 2

3

大規模な静的リソースを提供すると、サーバーの速度が低下する可能性は絶対にあり得ます (実際にそうなる可能性があります)。これらの各コンテンツがダウンロードされている間、Apache ワーカー スレッドを常に開いておく必要があります。ファイルが大きいほど、ダウンロードに時間がかかり、スレッドを開いたままにする必要がある時間が長くなります。Apache に設定したメモリ制限に達する前に、最大スレッド制限に達している可能性があります。

まず、すべての静的コンテンツをサーバーから Cloudfront または同様の CDN に移動することをお勧めします。これにより、Web サーバーがプライマリ Web 要求のみを気にする必要がある場所になります。これにより、1 秒あたりのリクエスト (および関連する開いている Apache スレッドの数) が 10 リクエスト/秒から約 .3 リクエスト/秒に減少する可能性があります (プライマリ リクエストとセカンダリ コンテンツ リクエストの 30:1 の比率に基づく)。

処理するリクエストの数を 1 桁以上減らすと、サーバーのパフォーマンスが確実に向上し、単一のサーバーに減らすことができる可能性があります (または、複数のサーバーが必要な場合は、これは良い考えです)。あなたのサーバー。

基本的にすべての大量の Web サイトに共通していることの 1 つは、静的コンテンツを CDN に提供するビジネスを任せていることです。大量のサイトになったら、これを絶対に考慮する必要があります (または、少なくとも、Nginx、Lighty、または Apache よりも静的コンテンツの提供に適した他の Web サーバーを使用して、さまざまなサーバーから静的コンテンツを提供します)。

静的トラフィ​​ックをオフロードした後は、プライマリ リクエストを処理するように Web サーバーを調整することから始めることができます。その時点に到達したら、いくつかのことを知る必要があります。

  • 1 つのリクエスト スレッドの平均メモリ使用量
  • Apache に割り当てたメモリの量 (これが専用の Apache サーバーの場合、インスタンス メモリ全体の 70 ~ 80% になる可能性があります)
  • アプリケーションがリクエストに応答するのにかかる平均時間

それに基づいて、最大スレッド設定を調整するための良い出発点を作るのは非常に簡単な公式です.

次のものがあったとします。

Apache memory: 4000KB
Avg. thread memory: 20KB
Avg. time per request: 0.5 s

つまり、構成でリクエストのスループットを次のように処理できます。

100 requests/second = 4000kb / (20kb * 0.5 seconds/request )

各リクエストの平均は 0.5 秒であるため、このスループットを処理するには 50 のスレッドが必要であると想定できます。

明らかに、リクエストの急増などを考慮して最大スレッド数を 50 より大きく設定する必要がありますが、少なくともこれは開始するのに適した場所です。

于 2012-11-30T23:33:09.997 に答える
0
  1. インスタンスの開始/停止を試みます。これにより、別のホストに移動します。インスタンスが存在するホストに問題がある場合は、問題が軽減されます。
  2. システムの負荷数を確認するだけでなく、メモリ使用量、IO、および CPU 使用量を調べます。
  3. システム ログを調べて、現在の状況を説明する可能性のあるエラーが発生していないかどうかを確認します。

このスレッドで Eric J. の回答をチェックアウトAmazon EC2 Bitnami Wordpress Extreme Slow

于 2012-11-30T20:19:09.360 に答える