ここには 2 つの異なる質問があります。
- 要件: 探している統計は何ですか?
- 技術: 自分で設定した目標を達成しているかどうかをどのようにテストしますか?
(1) について: 完璧な世界では、対象顧客の範囲を分析し、システムを同時に使用する人数を把握できます。次に、そのうちのいくつが Web サイトで実際に (同時に) 応答をトリガーするかを理解し、それから、同時に処理する必要がある要求の数を理解します。
おそらく知りたいと思うもう 1 つの質問は、期待できるデータのサイズです。1,000,000 人のユーザーがいて、100 人に 1 人のユーザーが動画をアップロードすると、データベースには 10,000 件の動画が保存されます。したがって、その答えは、ユーザーの数とその行動に依存します。
ある種の市場調査を行って数字を出すことはおそらく可能ですが、リーンスタートアップの方法論では、これらの質問に対する答えは通常わからず、推測するだけで、通常は間違っていると述べています。
したがって、実際には何もわからないと仮定すると、任意の数の同時ユーザーと任意のサイズのデータをサポートできるようにシステムをスケーラブルにする方法を理解する必要があります。
しかし、おそらく現在使用しているインフラストラクチャに関する統計を知りたいと思うでしょう。これは (2) につながります。
JMeter は同時負荷をテストするための優れたツールです。サーバーの記述については言及していませんが、JMeter は Java を推奨しています。その場合、何よりもまず、メモリの制限とガベージ コレクションの時間を理解する必要があります。
ステートレス (または少なくともセッション スティッキー) 分散システムを想定すると、単一の「典型的な」サーバーをテストして、特定の数の同時要求に対する応答時間と障害をテストする必要があります。小さく始めて、結果が許容できる限り高くします (つまり、100 の同時要求の場合、50 ミリ秒の応答時間と 0 の失敗した応答が許容されます。1000 の同時要求では、300 ミリ秒の遅延と 5 つの失敗した応答が得られ、5000 では 500 ミリ秒になります)。 15 回の失敗した応答は、許容できると思われる遅延であり、許容できる限り多くの失敗があります)
上記の「標準」を変更して、異なるインフラストラクチャがどのように異なる結果をもたらすかを確認することをお勧めします。今日のクラウド サービスの優れた点は、EC2 に簡単にアクセスして、ほとんど投資せずにあらゆるタイプのインフラストラクチャを取得して、結果をテストできることです。そのため、何を購入する必要があるかがわかります (EC2 でホストされたままにしたくないと仮定すると)。また、EC2 を使用して JMeter インスタンスをホストすることもできます (これに関する記事を一度読んだことがありますが、場所は覚えていませんが、Google で検索しました)。多数の同時リクエストを 200 ドル/テスト未満で発行できます。