web-dev-qa-db-ja.com

ASP.Net / SQLServerアプリケーションの負荷見積もり

一般的なアプリケーションのサーバー要件を定義するためのヒューリスティックはありますか?内部開発から少数のユーザーに至るまで、これはインターネットアプリケーションの最初の展開です。内部的には、必要に応じて展開、監視、および行動するだけですが、予算が限られており、リモートで展開する必要があるため、より正確に見積もりを行う必要があります。

パラメトリック推定への入力ソースは次のとおりです。

テストの結果、次のようになりました。-トラフィック量-SQLリクエストの数

また、プロジェクト管理から、予想される合計ユーザー数と同時に接続されているユーザー数を取得します。

これらのパラメーターに適用できる経験則はありますか?

2
Oli

直面する負荷を決定するための簡単な数式はありません。負荷は、以下に基づいて劇的に変化する可能性があります。

  • クエリ-たとえば、カーソルを使用している場合は、セットベースの操作を使用する場合よりも多くの電力が必要になります。必要なのは、サーバーをひざまずかせるための1つの不適切に設計されたクエリです。
  • インデックス-優れたDBAは、アプリのパフォーマンスを速くするか遅くするかを区別できます。
  • 履歴データの量-アプリケーションが長期間使用されていない場合、より多くのデータを格納できます。これは、SQLServerがクエリ結果を返す速度に影響します。アプリが履歴をすばやく削除する場合、それはさらに優れています。
  • ハードウェアの微調整-たとえば、適切に調整されたSANは、正しく調整されていないSANよりもはるかに多くの負荷に耐えることができます。

キャパシティプランニングの方法についてはいくつかの考え方がありますが、いくつかの公式よりもはるかに複雑です。

2
Brent Ozar

考慮しなければならない変数は非常に多いため、これを行う簡単な方法はありません。 (ブレントオザールの優れたメモに加えて)考慮したいいくつかの事柄:

  • データセットの大きさはどれくらいですか?予想される成長率とパターンは何ですか?
  • これらのサービスはどのように分離されますか? WebサーバーとSQLサーバーを分離しますか?アプリケーションをそれぞれのファームに拡張できますか?
  • ほとんどの作業は、Web側のアプリによって行われていますか、それともSQLクエリによって行われていますか?

新しいアプリケーションの場合、展開する最善の方法は、予算を大幅に下回るスケーラブルなサーバーをいくつか購入することです。アプリケーションをできるだけゆっくりと展開します(つまり、自分でドッグフードを作成し、信頼できる顧客を数人入れてから、徐々に一般にベータ版を公開します)。

このプロセスの間、ボトルネックがどこにあるかを判断するために手に入れることができるすべてのパフォーマンスメトリックを注意深く監視してください。これらのボトルネックを解消するために、以前に節約したお金を使います。

このアプローチでは、1つの大きな嵐の中で立ち上げることはできませんが、後で多くの頭痛の種を避けることができます。

2
sh-beta

特効薬はありません。また、アプリケーションの性質によっては、より少ないユーザーでより多くの負荷が発生する場合があります。たとえば、サイト上の多くのAjaxは、WebサーバーとDBサーバーの負荷を大幅に増加させる可能性があります。

1GBあたり最大75の同時ユーザーRAMおよびWebサーバー上のシングルコアCPUは安全な見積もりであると聞いています。したがって、通常の8GB /クアッドコアサーバーは多くのユーザーを処理する必要があります。その時点まで、帯域幅も負荷に影響を及ぼし始める可能性があります。

SQL Serverの経験はあまりありませんが、同様の数値が当てはまると思います。

1
Nate

あなたのウェブ/データベースプラットフォームは何ですか?

IISおよびSQLServerを使用している場合、Microsoftは、Webサイトのストレステスト/容量テスト用のツールをいくつか作成しています。 IISツール

この記事 SQLServerをテストするための良いスタートのようです。

0
Jimmie R. Houts

アプリケーションがどのように実行されるかを知る唯一の方法がアプリケーションの実行方法を監視することであることを除いて、適用できる経験則はないと思います。

プロジェクトチームが予想する負荷の1.5〜2倍を対象とした負荷テストを必ず実行してください。この負荷をうまく処理できれば、負荷を増やし続けるので、ブレークポイントが何であるかがわかります。

0
JoshBerke