100 ユーザー向けのサーバー構成

100 ユーザー向けのサーバー構成

次のシナリオ (実際の状況) にどのサーバーを近似するかに関する問題があります。

サーバー上で実行されている Web アプリケーションからアクセスできるビデオをいくつか保存するサーバーがあります。このサーバーを使用するユーザーは約 100 人 (同時) です (通常はタブレットまたは電話経由ですが、PC も含まれます)。

このサーバーのハードウェア構成の構築について、ご意見をいただけますか? このサーバーで実行される OS は Linux になります。

前もって感謝します。


編集I:

私が使用している Web サーバーは Apache HTTP ですが、Javaサーバー (もちろんこのマシンにインストールされています) のプロキシとして機能する可能性が非常に高くなります。

このサーバー上で実行される他のアプリケーションは次のとおりです。

  • 認証の申請
  • 管理の申請。

このサーバーも継続的に(24時間365日)稼働します。

答え1

あなたの説明からすると、サーバーの主な使用例は 100 台のクライアントにビデオをストリーミングすることのようです。

これを踏まえると、サーバーの最も重要な 2 つのサブシステムは次のようになります。

  1. ネットワーク接続
  2. ストレージシステム

パフォーマンスに合わせてサイズを決定するには、必要な帯域幅を把握する必要があります。これは、配信するビデオの品質によって異なります。ビデオが 1 MB/秒であると仮定すると、100 人のユーザーに対して、ネットワーク システムとストレージ システムの両方が 100 MB/秒 (ネットワークの場合は 800 MB/秒) のデータを提供できる必要があります。

ネットワーク帯域幅接続が単一のリンクで処理できる範囲を超えており、リンク速度を上げる余裕がない場合 (つまり、1GbE から 10GbE/40GbE に移行する場合)、リンクを追加してレイヤー 2 で集約するか、複数の IP アドレス (リンクごとに 1 つ) を使用してアプリケーションを通じて接続を分散することができます。また、サーバーからクライアントへのデータ パスが容量を処理できることを確認する必要があります。ネットワークの他の場所にボトルネックがある場合、サーバーが 10Gbps を提供できても意味がありません。

ストレージ システムについては、データを提供するための帯域幅と IOPS (1 秒あたりの IO) 数の両方を処理できることを確認する必要があります。上記の計算から、ストリーミング読み取りには 100 MB/秒が必要ですが、ユーザーが 100 人いるため、ストレージ システムは少なくとも 100 IOPS を処理できる必要があります。ユーザーがビデオをナビゲートすると予想される場合は、パフォーマンスを維持するためにさらに多くの容量が必要になります。ハード ドライブは競合がない場合には優れたストリーミング パフォーマンスを提供できますが、同時アクセスの数が増える場合は SSD を検討することをお勧めします。

これらの基本的なパフォーマンス特性に加えて、ネットワーク接続とストレージ システムの信頼性も考慮する必要があります。リンク障害やハード ドライブ障害が発生した場合はどうなるでしょうか。サービスの提供を継続するには、複数のリンクと復元力のあるストレージ構成 (RAID またはアプリケーション/ファイル システム レベルでのデータ レプリケーション経由) が必要です。

ストレージ システム用の RAM は、ビデオをキャッシュし、ストレージ システムの負荷を軽減するのに役立ちます。そのため、多くの人が同じビデオを視聴することが予想される場合は、通常、RAM を増やすと効果的です。ただし、ワーキング セット (よくアクセスされるデータ) のサイズがシステムの RAM の量より大きい場合は、大きな改善が見られなくても驚かないでください。

システムの大部分は IO 経由でデータを配信するため、CPU パワーはそれほど必要ありません。そのため、最新のマルチコア CPU であれば十分でしょう。ただし、NUMA アーキテクチャで複数の CPU を使用する場合は、CPU 相互接続に過負荷がかからないように注意する必要があります。

ハードウェアを入手したら、ベンチマークを行ってパフォーマンスを確認する必要があります。ストレージシステムについては、フィオこのツールを使用すると、100 人の同時リーダーによるストリーミング読み取りなどのシナリオを具体的にテストできます。

上で述べたことすべてを踏まえて、希望するベンダーに相談し、推奨される構成を確認してください。要件を RFP の一部にすると (特に、特定の IO プロファイルを提供する機能などの厳格な要件を含める場合)、後でパフォーマンスの欠陥を解決しやすくなります。

これらのシステムを設計するときは、データがシステム内をどのように移動するか、どこに制限があるのか​​を検討してみてください。

最後に、トラフィックの増加とピークの両方に対応できるように、余裕のある容量でシステムを設計してください。

答え2

同時ユーザーの数に応じて正確なサーバー構成を提供するのは困難です。コードとデータベースの最適化にも依存します。基本的には、アプリケーションとサーバーのベンチマークを実行する必要があります。そのため、次のような多くのオープンソースツールが利用可能です。

フルベンチマークとスタックベンチマークの両方が実行できます

次のようなツール

  1. アブ
  2. http_load
  3. システムベンチ
  4. unixベンチマーク

などが利用可能です。

答え3

このサーバーのハードウェア構成の構築について、ご意見をいただけますか? このサーバーで実行される OS は Linux になります。

はい。ダブルサイズをご利用ください。</irony>

いいえ、この段階では不可能です。4 コア、4 GB RAM のマシンかそれ以上でもかまいませんが、これは実際にそのマシンで何をするかによります。ファイルシステムからダウンロードを提供するだけであれば、小型のマシンでも問題ありませんが、Java などのベンチマークとなると、それは無理です。


もっと具体的にするには、あなた自身ももっと具体的にする必要があります。

  • どのウェブサーバーですか?
  • サーバーはダウンロード専用ですか?
  • CMS などの追加の Web ベース ソフトウェアはありますか?
  • 完全な LAMP スタックですか?
  • 24時間365日必要ですか?

主な目的がビデオの配信であり、Java アプリケーションのリバース プロキシとして機能する場合は、nginx をお勧めします。 Apache よりもはるかに軽量で、必要なシステム リソースが少なく、より多くの同時接続を処理できます。

ダウンロード セクションでは、Web アプリケーションを避けて、リバース プロキシから直接ファイルを提供するようにしてください。これにより、全体的な必要なパフォーマンスが低下します。

nginxにはビデオ用の静的サーバーとして機能する優れたモジュールがいくつかあることに注意してください。


24時間年中無休に関して:確保する24 時間 365 日の運用が必要ですか? その場合は、フェイルオーバー設定が必要になります。

関連情報