2009-06-16 3 views
6

誰もが次のような性質の質問にどのように近づくのか興味があります。アプリケーションA(eコマースサイトなど)を作成する必要があります。それは技術B(例えばjava)を使用するでしょう。 C(例えば200)人の同時ユーザーをサポートしなければならない。どのような種類のハードウェアが必要ですか?Xユーザー/トランザクションをサポートするために必要なハードウェアの見積もり方法は?

ハードウェア仕様には、必要なCPUの数と基本的な応答のためのメモリ容量が含まれます。

私の例を単純化するために、私はJava技術を私の質問に固執しますが、私は本当にテクノロジーに中立なアドバイスをしたいと思います。

私は、このような質問にはさらに多くの要素が含まれることを理解しています。例えば、Wicket vs Struts vs Spring、純粋なEJB J2EEアーキテクチャ、多数の分散層(1つのボックス設定または3つの層設定)などがあります。

ただし、特定のテクノロジに関する事前の経験がない(または、必要なハードウェアが何であるかを調べるための負荷テストを行う機会がない)可能性があり、そのような質問は常に最初のプロジェクトのディスカッション(そして、答えは前進するためのベースラインとして不可欠です)、どうやって答えを出すのですか?

私は、ユーザーセッションごとにメモリ量を見積もることでメモリの問題を解決することを考えましたが、フレームワーク/仮想マシンのオーバーヘッドが確実に発生します。

しかし、一般に、私はこの質問に常に良い解決策を出すように思えません。負荷テストは間違いなくそれを解決するのに役立ちますが、その時点でプロジェクトはすでに準備が整っています。これはクライアントが通常プロジェクトにコミットする前に回答を望む質問です。

コミュニティがこれに対する良いアプローチについてアドバイスできることを祈ってください。

ありがとうございました。

答えて

3

あなたは、同時ユーザーの初期の負荷テストされていない見積もりを作成するために、実際にユーザーエクスペリエンスについていくつかの仮定を行う必要があります。まず、ユーザーセッションに関するいくつかの前提から始めてください。まともな球場の仮定は(これはあなたのサイトの複雑さや単純さに応じて、保持していない場合があります)次のようになります。

  • 各ユーザーは新しいページに当たるか(AJAXyを仮定した場合)、5秒ごと
  • リソース各要求は平均をとります処理するのに200ms。
  • スパイクを許可する容量の25%、スパイクが大きくなる可能性があるソーシャルネットワークサイトでは平均使用率がさらに高いのが一般的です。

次に、あなたが言う:

200人のユーザー(200msのの/の5S)(25%負荷用)=> 8つのCPU平均必要* 4 => 32個のCPU。

私はこれが特に言語中心ではないと思います。メモリは高価ではなく、十分である。

1

個人的には、この問題の一般的な解決策があることをあなたに伝える人は皆、あなたに嘘をついていると思います。ハードウェアベンダーの場合は特にそうです。

予想される負荷と同様の負荷に基づいて、このような推定を行うことができます。あなたは実際の負荷が実際に見積もりとして使用した "類似の"負荷に似ていないので、間違っていたことを後で知ります。

うまくいけば、あなたはそれから学び、次回より良い見積もりをします。

1

正直言って、私はサンプル負荷テストを行うのに妥当な見積もりを得る良い方法がないと思っています。ハードウェア(メモリアーキテクチャ、CPUの数、ディスクアーキテクチャ)、ソフトウェア(実装の詳細、オペレーティングシステム、仮想マシン(存在する場合)、データベースシステムなど)、環境(ネットワーク、冷却)その他。

これは基本的にパフォーマンステストの特別なアプリケーションです。主題の最も賢い人々はあなたが数を得る必要があることを繰り返して明らかに述べてきました。私が与えることができる最高のアドバイスは、可能な限り早い段階でプロトタイプを作成する必要があるため、という数字を時間の経過とともに変更する予定であるため、すべてのチェックポイントでプロトタイプや作業バージョンをプロジェクトのタイムラインに沿って再テストする。

あなたの早い見積もりではおそらく最終的な数字にはほとんど似通っていませんが、修正の予定が残っていないことを認識するために、

0

ハードウェア要件の定量化方法を尋ねています。

しかし、私は別の観点からアプローチします。アプリケーションをスケールアウトできるようにデザインします(すべての層で)。そこから、ハードウェアの反復#1を展開します。その上でパブリックベータを実行してください。実際の生命数を収集してください。さらに、パフォーマンスメトリックを満たすようにシステムを再構成します。繰り返す。

0

必要なハードウェアは、ソフトウェアの複雑さと高品質によって、ユーザー数やトランザクション負荷によって支配されるよりはるかに大きく左右されます。そうでないと主張する唯一の人々は、ハードウェアベンダーです。

関連する問題