(57)【要約】【課題】  サーバ負荷に対応するユーザの数を決定するための方法、コンピュータ・プログラム、およびシステムを提供する。【解決手段】  本発明では、ネットワークに結合されたテスト・コンピュータ・システムにおける１つまたは複数個の仮想ユーザがシミュレートされる。１つまたは複数個のクライアント要求が、１つまたは複数個の仮想ユーザから、ネットワークに結合されたサーバ・コンピュータ・システムにおいて実行されるサーバ・アプリケーションに送られる。サーバ・コンピュータ・システムにおける負荷を表わすメトリックが測定される。メトリックは所定値に比較され、メトリックが所定値の所定範囲内になるまで、１つまたは複数個の仮想ユーザの数がメトリックと所定値との間の差に基づいて変更される。【選択図】  図２
2010244528.tif 000002
【特許請求の範囲】
【請求項１】
サーバ負荷に対応するユーザの数を決定するための方法であって、
ネットワークに結合されたテスト・コンピュータ・システムにおける１つまたは複数個の仮想ユーザをシミュレートするステップと、
前記１つまたは複数個の仮想ユーザの各々から、前記ネットワークに結合されたサーバ・コンピュータ・システムにおいて実行されるサーバ・アプリケーションに、１つまたは複数個のクライアント要求を送るステップと、
前記サーバ・コンピュータ・システムにおける負荷を表わすメトリックを測定するステップと、
前記メトリックを所定値に比較するステップと、
前記メトリックが前記所定値の所定範囲内になるまで、前記メトリックと前記所定値との間の差に基づいて前記１つまたは複数個の仮想ユーザの数を変更するステップと
を含む、方法。
【請求項２】
前記メトリックは、前記サーバ・コンピュータ・システムの１つまたは複数個のプロセッサにおける負荷を表わす、請求項１に記載の方法。
【請求項３】
前記メトリックを測定するステップは、前記メトリックを周期的に測定するステップおよび各測定結果をメモリに格納するステップを含む、請求項１に記載の方法。
【請求項４】
前記メトリックを測定するステップは、
前記メトリックの稼動平均を計算するステップと、
ロー・パス・フィルタを前記メトリックに適用するステップと
のうちの１つまたは複数個を含む、請求項３に記載の方法。
【請求項５】
前記メトリックを測定するステップは、
前記サーバ・コンピュータ・システムにおいて実行される Windows Management Instrumentationサービスと、
前記サーバ・コンピュータ・システムにおいて実行される rstat.d パフォーマンス測定サービスと、
前記サーバ・コンピュータ・システムにおいて実行されるカスタム測定ツールと
のうちの１つまたは複数個によって提供されるメトリックを測定するステップを含む、請求項１に記載の方法。
【請求項６】
前記１つまたは複数個の仮想ユーザの数を変更するステップは、前記メトリックと前記所定値との間のパーセンテージ差の少なくとも一部分に基づいて、前記１つまたは複数個の仮想ユーザの数を変更するステップを含む、請求項１に記載の方法。
【請求項７】
サーバ負荷に対応するユーザの数を決定するためのコンピュータ・プログラムであって、前記コンピュータ・プログラムは、複数の命令を格納されたコンピュータ可読媒体上に存在し、プロセッサによって実行されるときに前記プロセッサにオペレーションを遂行させ、
前記オペレーションは、
ネットワークに結合されたテスト・コンピュータ・システムにおける１つまたは複数個の仮想ユーザをシミュレートするステップと、
前記１つまたは複数個の仮想ユーザの各々から、前記ネットワークに結合されたサーバ・コンピュータ・システムにおいて実行されるサーバ・アプリケーションに、１つまたは複数個のクライアント要求を送るステップと、
前記サーバ・コンピュータ・システムにおける負荷を表わすメトリックを測定するステップと、
前記メトリックを所定値に比較するステップと、
前記メトリックが前記所定値の所定範囲内になるまで、前記メトリックと前記所定値との間の差に基づいて前記１つまたは複数個の仮想ユーザの数を変更するステップと
を含む、コンピュータ・プログラム。
【請求項８】
前記メトリックは、前記サーバ・コンピュータ・システムの１つまたは複数個のプロセッサにおける負荷を表わす、請求項７に記載のコンピュータ・プログラム。
【請求項９】
前記メトリックを測定するステップは、前記メトリックを周期的に測定するステップおよび各測定結果をメモリに格納するステップを含む、請求項７に記載のコンピュータ・プログラム。
【請求項１０】
前記メトリックを測定するステップは、
前記メトリックの稼動平均を計算するステップと、
ロー・パス・フィルタを前記メトリックに適用するステップと
のうちの１つまたは複数個を含む、請求項９に記載のコンピュータ・プログラム。
【請求項１１】
前記メトリックを測定するステップは、
前記サーバ・コンピュータ・システムにおいて実行される Windows Management Instrumentationサービスと、
前記サーバ・コンピュータ・システムにおいて実行される rstat.d パフォーマンス測定サービスと、
前記サーバ・コンピュータ・システムにおいて実行されるカスタム測定ツールと
のうちの１つまたは複数個によって提供されるメトリックを測定するステップを含む、請求項９に記載のコンピュータ・プログラム。
【請求項１２】
前記１つまたは複数個の仮想ユーザの数を変更するステップは、前記メトリックと前記所定値との間のパーセンテージ差に基づいて、前記１つまたは複数個の仮想ユーザの数を変更するステップを含む、請求項７に記載のコンピュータ・プログラム。
【請求項１３】
サーバ負荷に対応するユーザの数を決定するためのシステムであって、前記システムは、
１つまたは複数個のプロセッサと、
１つまたは複数個のメモリと、
前記１つまたは複数個のメモリに格納され、前記１つまたは複数個のプロセッサによって実行されるときにオペレーションを遂行する１つまたは複数個のソフトウェア命令と
を含み、前記オペレーションは、
ネットワークに結合されたテスト・コンピュータ・システムにおける１つまたは複数個の仮想ユーザをシミュレートするステップと、
前記１つまたは複数個の仮想ユーザの各々から、前記ネットワークに結合されたサーバ・コンピュータ・システムにおいて実行されるサーバ・アプリケーションに、１つまたは複数個のクライアント要求を送るステップと、
前記サーバ・コンピュータ・システムにおける負荷を表わすメトリックを測定するステップと、
前記メトリックを所定値に比較するステップと、
前記メトリックが前記所定値の所定範囲内になるまで、前記メトリックと前記所定値との間の差に基づいて前記１つまたは複数個の仮想ユーザの数を変更するステップと
を含む、システム。
【請求項１４】
前記メトリックは前記サーバ・コンピュータ・システムの１つまたは複数個のプロセッサにおける負荷を表わす、請求項１３に記載のシステム。
【請求項１５】
前記メトリックを測定するステップは前記メトリックを周期的に測定するステップおよび各測定結果をメモリに格納するステップを含む、請求項１３に記載のシステム。
【請求項１６】
前記メトリックを測定するステップは、
前記メトリックの稼動平均を計算するステップと、
ロー・パス・フィルタを前記メトリックに適用するステップと
のうちの１つまたは複数個を含む、請求項１５に記載のシステム。
【請求項１７】
前記メトリックを測定するステップは、
前記サーバ・コンピュータ・システムにおいて実行される Windows Management Instrumentationサービスと、
前記サーバ・コンピュータ・システムにおいて実行される rstat.d パフォーマンス測定サービスと、
前記サーバ・コンピュータ・システムにおいて実行されるカスタム測定ツールと
のうちの１つまたは複数個によって提供されるメトリックを測定するステップを含む、請求項１３に記載のシステム。
【請求項１８】
前記１つまたは複数個の仮想ユーザの数を変更するステップは、前記メトリックと前記所定値との間のパーセンテージ差に基づいて、前記１つまたは複数個の仮想ユーザの数を変更するステップを含む、請求項１３に記載のシステム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、コンピュータ・テスト・システムに関し、特に、サーバ負荷を決定するためのコンピュータ・テスト・システムに関するものである。
【背景技術】
【０００２】
多くの場合、サーバ・コンピュータは、多くのユーザにサービスを同時に提供する。時には、多くのユーザがサーバに同時にアクセスしようとすることはサーバを過負荷にすることがある。これは、サーバにサービスの遅れを生じさせたり、或いは完全に障害を生じさせたりすることがある。これらの障害を回避する１つの方法は、サーバの限界を理解し、予想された負荷を扱うようにサーバまたはサーバのシステムを設計することである。
【０００３】
サーバをテストすることは、仮想ユーザによって発生されたテスト・トラフィックおよびテスト・クライアント要求をサーバに送ることを含む。これらの方法のいくつかは、ユーザ・トラフィックおよびクライアント要求をシミュレートすること並びにテスト中のサーバの応答を測定することによってネットワーク・トラフィックを作成する。しかし、予想される負荷を扱うようにサーバまたはサーバのシステムを効果的に設計するために、設計者は、特定の作用点に関連するサーバ負荷を理解する必要があるであろう。例えば、堅牢なサーバ・システムを設計するために、設計者は、サーバが特定の受容能力以上で、例えば、８０％以上の受容能力で作動しないということを要求することがある。この場合、どのようなタイプの負荷がサーバを８０%の受容能力で作動させるべきかを理解することが望ましい。
【発明の概要】
【発明が解決しようとする課題】
【０００４】
本発明の目的は、サーバ負荷に対応するユーザの数を決定するための方法、コンピュータ・プログラム、およびシステムを提供することにある。
【課題を解決するための手段】
【０００５】
１つの実施例では、本発明のサーバ負荷に対応するユーザの数を決定する方法は、ネットワークに結合された状態でテスト・コンピュータ・システムにおける１つまたは複数個の仮想ユーザをシミュレートすることを含む。その１つまたは複数個の仮想ユーザの各々から、ネットワークに結合されたサーバ・コンピュータ・システムにおいて実行されるサーバ・アプリケーションに、１つまたは複数個のクライアント要求が送られる。サーバ・コンピュータ・システムにおける負荷を表わすメトリックが測定される。そのメトリックが所定値に比較され、そのメトリックが所定値の所定範囲内になるまで、そのメトリックと所定値との間の差に基づいて、その１つまたは複数個の仮想ユーザの数が変更される。
【０００６】
本発明は、次のような１つまたは複数個の特徴を含み得る。メトリックは、サーバ・コンピュータ・システムの１つまたは複数個のプロセッサにおける負荷を表わし得る。メトリックの測定は、そのメトリックを周期的に測定することおよび各測定結果をメモリに格納することを含み得る。この方法は、メトリックの稼動中の平均を計算し、および／または、メトリックにロー・パス・フィルタを適用し得る。メトリックは、サーバ・コンピュータ・システムにおいて実行されるWindows Management Instrumentation サービスおよび rstat.d パフォーマンス測定サービス、および／または、カスタム・パフォーマンス測定ツールによって提供され得る（Windows は、米国のマイクロソフト社の商標である）。更に、１つ又は複数の仮想ユーザの数の変更は、メトリックと所定値とのパーセンテージ差に基づいて１つ又は複数の仮想ユーザの数を変更することを含み得る。
【０００７】
別の実施例では、サーバ負荷に対応するユーザの数を決定するためのコンピュータ・プログラムがコンピュータ可読媒体に常駐する。コンピュータ・プログラムのコンピュータ命令は、それがプロセッサによって実行される時、ネットワークに結合されたテスト・コンピュータ・システムにおいて１つ又は複数の仮想ユーザをシミュレートすることを含むオペレーションをそのプロセッサに遂行させる。１つまたは複数個のクライアント要求が、１つまたは複数個の仮想ユーザの各々から、ネットワークに結合されたサーバ・コンピュータ・システム上で実行されるサーバ・アプリケーションに送られる。サーバ・コンピュータ・システムにおける負荷を表わすメトリックが測定される。メトリックは所定値と比較され、そのメトリックが所定値の所定範囲内になるまで、メトリックと所定値との間の差に基づいて１つまたは複数個の仮想ユーザの数が変更される。
【０００８】
本発明は、次のような１つまたは複数個の特徴を含み得る。メトリックは、サーバ・コンピュータ・システムの１つまたは複数個のプロセッサにおける負荷を表わし得る。メトリックの測定は、そのメトリックを周期的に測定することおよび各測定結果をメモリに格納することを含み得る。オペレーションは、メトリックの稼動中の平均を計算し、および／または、メトリックにロー・パス・フィルタを適用し得る。メトリックは、サーバ・コンピュータ・システムにおいて実行される Windows Management Instrumentation サービスおよび rstat.d パフォーマンス測定サービス、および／または、カスタム・パフォーマンス測定ツールによって提供され得る。更に、１つ又は複数の仮想ユーザの数の変更は、メトリックと所定値との間のパーセンテージ差に基づいて１つ又は複数の仮想ユーザの数を変更することを含み得る。
【０００９】
別の実施例では、サーバ負荷に対応するユーザの数を決定するためのシステムが、１つ又は複数のプロセッサ、１つ又は複数のメモリ、およびその１つ又は複数のメモリに格納された１つ又は複数のソフトウェア命令を含み、その命令は、それが１つ又は複数のプロセッサによって実行されるとき、ネットワークに結合されたテスト・コンピュータ・システムにおける１つ又は複数の仮想ユーザをシミュレートすることを含むオペレーションをその１つ又は複数のプロセッサに遂行させる。１つ又は複数のクライアント要求が、１つ又は複数の仮想ユーザの各々から、ネットワークに結合されたサーバ・コンピュータ・システム上で実行されるサーバ・アプリケーションに送られる。サーバ・コンピュータ・システムにおける負荷を表わすメトリックが測定される。メトリックは所定値と比較され、そのメトリックが所定値の所定範囲内になるまで、メトリックと所定値との間の差に基づいて１つ又は複数の仮想ユーザの数が変更される。
【００１０】
本発明は、次のような１つまたは複数個の特徴を含み得る。メトリックは、サーバ・コンピュータ・システムの１つまたは複数個のプロセッサにおける負荷の測定結果であってもよい。メトリックの測定は、そのメトリックを周期的に測定することおよび各測定結果をメモリに格納することを含み得る。オペレーションは、メトリックの稼動中の平均を計算し、および／または、メトリックにロー・パス・フィルタを適用し得る。メトリックは、サーバ・コンピュータ・システムにおいて実行される WindowsManagement Instrumentation サービス、rstat.d パフォーマンス測定サービス、および／または、カスタム・パフォーマンス測定ツールによって提供され得る。更に、１つ又は複数の仮想ユーザの数の変更は、メトリックと所定値との間のパーセンテージ差に基づいて１つ又は複数の仮想ユーザの数を変更することを含み得る。
【図面の簡単な説明】
【００１１】
【図１】分散型コンピューティング・ネットワークに結合されたサーバ・プロセスの概略図である。
【図２】図１のテスト・システム構成プロセスのフローチャートである。
【発明を実施するための形態】
【００１２】
図１はサーバ・テスト・プロセス１０を示し、それは、ネットワーク１４（例えば、インターネットまたはローカル・エリア・ネットワーク）に結合し得るテスト・コンピュータ１２に常駐し、テスト・コンピュータ１２により実行され得る。テスト・コンピュータ１２の例は、パーソナル・コンピュータ、サーバ・コンピュータ、一連のサーバまたはパーソナル・コンピュータ、ミニ・コンピュータ、およびメインフレーム・コンピュータを含み得るが、それらに限定されない。
【００１３】
図１は、サーバ・コンピュータ１８に常駐し、サーバ・コンピュータ１８により実行され得るサーバ・コンピュータ１８により実行され得るサーバ・アプリケーション１６も示す。サーバ・コンピュータ１８は、図示のように、ネットワーク１４に接続され得る。サーバ・コンピュータ１８の例は、パーソナル・コンピュータ、サーバ・コンピュータ、一連のサーバまたはパーソナル・コンピュータ、ミニ・コンピュータ、およびメインフレーム・コンピュータも含み得るが、それらに限定されない。
【００１４】
サーバ・アプリケーション１６はクライアント・アプリケーションから要求、入力、または他の通信を受け入れる任意のサーバ・アプリケーションであってもよい。例えば、サーバ・アプリケーション１６は、ウェブ・サーバ、アプリケーション・サーバ、ＦＴＰサーバ、或いは（ユーザ２０のような）ユーザから要求または入力を受け入れる任意のサーバであってもよい。サーバ・アプリケーションの例は、Microsoft IISサーバおよび IBM WebSphere サーバを含む（Microsoft は米国のマイクロソフト社の商標であり、IBMおよび WebSphere の両方とも米国のインターナショナル・ビジネスマシーンズ・コーポレーション(IBM Corporation)の商標である）。
【００１５】
サーバ・コンピュータ１８はネットワーク・オペレーティング・システムを作動し得る。そのオペレーティング・システムの例は、Microsoft Windows XP Server、 Novell Netware、または RedhatLinux を含み得るが、それらに限定されない（Novell および Netware は米国のノベル社の商標であり、Redhat は米国のレッドハット社の商標であり、Linuxは米国の Linus Torvalds の商標である）。
【００１６】
更に詳しく後述されるように、サーバ・テスト・プロセス１０は１つ又は複数の仮想ユーザをシミュレートし得るし、１つ又は複数の仮想ユーザの各々からサーバ・アプリケーション１６に１つ又は複数のクライアント要求を送り得る。サーバ・テスト・プロセス１０は、サーバ・コンピュータ・システム１８における負荷を表わすメトリックを測定し、そのメトリックを所定値と比較し得る。サーバ・テスト・プロセス１０は、メトリックが所定値の所定範囲内になるまで、シミュレートされた仮想ユーザの数を変更し得る。シミュレートされた仮想ユーザの数の変更は、メトリックと所定値との間の差に基づき得る。
【００１７】
１つ又は複数のソフトウェア・モジュールおよび１つ又は複数のセットのソフトウェア命令を含み、テスト・コンピュータ１２に結合された記憶装置２２に格納されるサーバ・テスト・プロセス１０の命令セットおよびサブルーチンが、テスト・コンピュータ１２に組み込まれた１つ又は複数のプロセッサ（図示されてない）および１つ又は複数のメモリ・アーキテクチャ（図示されてない）によって実行される。同様に、１つ又は複数のソフトウェア・モジュールおよび１つ又は複数のセットのソフトウェア命令を含み、サーバ・コンピュータ１８に結合された記憶装置２４に格納されるサーバ・アプリケーション１６の命令セットおよびサブルーチンが、サーバ・コンピュータ１８に組み込まれた１つ又は複数のプロセッサ（図示されてない）および１つ又は複数のメモリ・アーキテクチャ（図示されてない）によって実行される。記憶装置２２および２４は、ハード・ディスク・ドライブ、ソリッド・ステート・ドライブ、テープ・ドライブ、光学式ドライブ、ＲＡＩＤアレイ、ランダム・アクセス・メモリ（ＲＡＭ）、およびリード・オンリ・メモリ（ＲＯＭ）を含み得るが、それらに限定されない。
【００１８】
サーバ・テスト・プロセス１０およびサーバ・アプリケーション１６の命令セットおよびサブルーチンは、例えば、IBM XL コンパイラ、Visual Studio コンパイラのようなコンパイラまたはアセンブラの使用を通して生成され得る（VisualStudio は、米国のマイクロソフト社の商標である）。それらの命令セットおよびサブルーチンは、JavaScript スクリプトのようなスクリプトまたは他のタイプのソフトウェア・コードとして生成され得る（JavaおよびすべてのJavaベースの商標およびロゴは、米国のサン・マイクロシステムズ社の商標である）。一般に、および、当業者には知られているように、サーバ・テスト・プロセス１０およびサーバ・アプリケーション１６の命令セットおよびサブルーチンは、プロセッサによって実行される命令セットおよびサブルーチンを生成する任意の方法によって生成されてもよい。
【００１９】
種々のクライアント電子機器をネットワーク１４に結合することも可能である。クライアント電子機器の例は、テスト・コンピュータ１２、サーバ・コンピュータ１８、ラップトップ２６、パーソナル・デジタル・アシスタント（図示されてない）、データ対応の携帯電話（図示されてない）、および専用ネットワーク装置（図示されてない）を含むが、それらに限定されない。１つ又は複数のユーザ（例えば、ユーザ２０）が、ネットワーク１４に結合された任意の装置から、或いは、ツールまたはアプリケーションが存在する装置から直接に、サーバ・テスト・プロセス１０またはサーバ・アプリケーション１６のような種々のツールおよびアプリケーションをアクセスし得る。クライアント電子機器は、ネットワーク１４に直接結合されてもよいし、或いはネットワーク２８を介してネットワーク１４に間接的に結合されてもよい。例えば、テスト・コンピュータ１２は、破線３０によって示されるように、二次ネットワーク２８を介してネットワーク１４に間接的に結合されてもよい。
【００２０】
記憶装置２２、２４は、ハード・ディスク・ドライブ、ソリッド・ステート・ドライブ、テープ・ドライブ、光学的ドライブ、ＲＡＩＤアレイ、ランダム・アクセス・メモリ（ＲＡＭ）、リード・オンリ・メモリ（ＲＯＭ）、コンパクト・フラッシュ（ＣＦ）記憶装置、セキュア・デジタル（ＳＤ）記憶装置、およびメモリ・スティック記憶装置を含み得るが、それらに限定されない。
【００２１】
種々のクライアント電子機器を、ネットワーク１４（またはネットワーク２８）に直接または間接的に結合することも可能である。例えば、テスト・コンピュータ１２は、配線されたネットワーク接続機器を介してネットワーク１４に直接結合されて示される。ラップトップ２６は、そのラップトップ２６とネットワーク１４に直接に結合されて示されるワイヤレス・アクセス・ポイント（即ち、ＷＡＰ）３４との間に確立された無線通信チャネル３２を介してネットワーク１４に無線結合されて示される。ＷＡＰ３４は、ラップトップ２６とＷＡＰ３４との間の無線通信チャネル３２の確立することができる、例えば、IEEE 802.11a、8002.11b、802.11g、Wi-Fi、および／または、Bluetooth装置であってもよい。
【００２２】
この技術分野では知られているように、IEEE 802.11x 仕様はすべて ８０２のすべてイーサネット・プロトコルおよびパス共用のためのキャリア・センス多重アクセス／衝突回避（即ち、ＣＳＭＡ／ＣＡ）を使用し得る。例えば、種々の 802.llx仕様は、位相偏移キーイング（即ち、ＰＳＫ）変調または相補的コード・キーイング（即ち、ＣＣＫ）変調を使用し得る。この技術分野では知られているように、Bluetoothは、例えば、携帯電話、コンピュータ、およびパーソナル・デジタル・アシスタントが短距離無線接続機器を使用して相互接続されることを可能にする通信産業の仕様である。
【００２３】
図２を参照すると、サーバ・コンピュータ１８が１０２のサーバ・アプリケーション１６を実行する（ステップ１０２）。サーバ・テスト・プロセス１０が１つまたは複数個の仮想ユーザをシミュレートし（ステップ１０４）、１つまたは複数個のクライアント要求を１つまたは複数個の仮想ユーザの各々からサーバ・アプリケーション１６に送る（ステップ１０６）。更に、サーバ・テスト・プロセス１０が、サーバ・コンピュータ・システム１８における負荷を表わすメトリックを測定し（ステップ１０８）、そのメトリックを所定値と比較する（ステップ１１０）。更に、サーバ・テスト・プロセス１０は、メトリックが所定値の所定範囲内になるまで、そのシミュレートされた仮想ユーザの数を変更させる（ステップ１１２）。シミュレートされた仮想ユーザの数の変更は、少なくとも部分的にはメトリックと所定値との間の差に基づき得る。シミュレートされた仮想ユーザの数の変更が定常状態に達するとき、例えば、メトリックと所定値との間の差が小さくなるかまたはゼロになり、仮想ユーザの数が最早変化しないとき、サーバ・テスト・プロセス１０は、所定値に関連するユーザの数を表わす仮想ユーザの数を記録し得る（ステップ１１４）。
【００２４】
サーバ・コンピュータ１８はサーバ・アプリケーション１６を実行する（ステップ１０２）。サーバ・アプリケーション１６は、ユーザから入力を受け入れるかまたはユーザに出力を供給する任意のタイプのサーバ・アプリケーションであってもよい。本明細書で使用されるように、ユーザから入力を受け入れること、および／または、ユーザに出力を供給することは、（例えば、クライアント・アプリケーションへのユーザ入力に応答して）クライアント・アプリケーションから入力を受け入れること、および／または、ユーザが（例えば、クライアント・アプリケーションを介して）受け取り得る出力を提供することを含み得る。１つの実施例では、サーバ・アプリケーション１６は、ユーザから（例えば、ラップトップ２６によって実行されるウェブ・ブラウザ・アプリケーション（図示されてない）を介してユーザ２０から）ウェブ・ページ要求を受け取り、それに応答して、ウェブ・ページおよび／またはウェブ・コンテンツを、ネットワーク１４を通して送信することによりそれをユーザ２０に供給し得るウェブ・サーバであってもよい。しかし、サーバ・アプリケーション１６は、電子メール・サーバ、ウェブ・サーバ、ＦＴＰサーバ、検索エンジン、カスタム・サーバ、および任意の他のサーバ・アプリケーションを含み得るが、それらに限定されない任意のタイプのサーバ・アプリケーションであってもよい。
【００２５】
一般的には、サーバ・コンピュータ１８はサーバ・アプリケーション１６を実行し得る。換言すれば、サーバ・コンピュータ１８のプロセッサは、サーバ・アプリケーション１６に関連した如何なる命令も実行し得る。サーバ・アプリケーション１６の実行は、サーバ・コンピュータ１８のプロセッサ・サイクル、および／または、他のプロセッサ資源を消費することもある。同様に、サーバ・アプリケーション１６は、例えば、サーバ・コンピュータ１８に関連した他のハードウェア資源を使用することもある。サーバ・アプリケーション１６は、例えば、サーバ・コンピュータ１８に関連したネットワーク接続機器、入出力ポート、ハード・ドライブ、メモリ、或いは任意の他のハードウェア資源を任意選択的に利用し得る。サーバ・アプリケーション１６は、例えば、サーバ・コンピュータ１８において実行されるソフトウェア・アプリケーションのソフトウェア資源も利用し得る。例えば、サーバ・コンピュータ１８はソフトウェア暗号化サービスを提供し得る。サーバ・アプリケーション１６は、例えば、それがデータを暗号化する必要がある場合、サーバ・コンピュータ１８上で稼動する暗号化サービスを利用し得る。
【００２６】
サーバ・アプリケーション１６がサーバ・コンピュータ１８のハードウェアおよびソフトウェア資源を利用し得る程度は、サーバ・アプリケーション１６が負う負荷の大きさに依存することもある。例えば、サーバ・アプリケーション１６が複雑な処理ジョブの実行のためにビジーである場合、サーバ・アプリケーション１６は、サーバ・コンピュータ１８のＣＰＵサイクルの多くを利用することもある。同様に、サーバ・アプリケーション１６が大量のデータを格納または送信しようとする場合、サーバ・アプリケーション１６は、サーバ・コンピュータ１８のハード・ドライブまたはネットワーク帯域幅の大部分を利用し得る。一方、サーバ・アプリケーション１６がビジーでない場合、それはサーバ・コンピュータ１８の少量の資源を使用し得る。例えば、サーバ・アプリケーション１６がデータを格納または送信しようとしていない場合、それは、たとえサーバ・コンピュータ１８のハード・ドライブ、および／または、ネットワーク帯域幅を使用するにしても、それの少量を使用することが可能である。
【００２７】
サーバ・アプリケーション１６がユーザから入力を受け入れるかまたはユーザに出力を供給する場合、サーバ・アプリケーション１６をアクセスするユーザの量は、サーバ・アプリケーション１６における負荷に影響を与え、その後、サーバ・アプリケーション１６がサーバ・コンピュータ１８のハードウェアおよびソフトウェア資源を利用する程度に影響を与える。例えば、多くのユーザがサーバ・アプリケーション１６をアクセスしようとする場合、および／または、アクセスの要求を行おうとする場合、サーバ・アプリケーション１６は、多くのユーザをサービスするためにサーバ・コンピュータ１８の多くのＣＰＵサイクルを必要とするであろう。同様に、サーバ・アプリケーション１６は、多くのユーザをサービスするために多くのハード・ドライブまたはネットワーク帯域幅（或いは任意の他のハードウェアまたはソフトウェア資源）を必要とすることがある。当然の結果として、わずかなユーザしかサーバ・アプリケーション１８にアクセスしようとしない場合、サーバ・アプリケーション１８は、ユーザをサービスするためには少ないハードウェアおよびソフトウェア資源を必要とするであろう。例えば、サーバ・アプリケーション１６がウェブ・サーバである場合、および多くのユーザがウェブ・サーバに同時にアクセスしようとする場合、サーバ・アプリケーション１６は、要求を処理するために多くのサーバ・コンピュータ１８のＣＰＵサイクルを使用しなければならず、格納されたウェブ・ページを検索するためにサーバ・コンピュータ１８の多くのハード・ドライブ帯域幅を使用しなければならず、要求されたウェブ・ページを多くのユーザ送るためにサーバ・コンピュータ１８の多くのネットワーク帯域幅を使用しなければならないことがある。
【００２８】
サーバ・アプリケーション１６をアクセスするユーザまたはサーバ・アプリケーション１６に要求を行うユーザが多すぎる場合、サーバ・アプリケーション１６およびサーバ・コンピュータ１８は、すべてのユーザを有効にサービスすることができないことがある。この場合、サーバ・コンピュータ１８はすべてのユーザ要求を処理するためにＣＰＵサイクルを使い果たし、過剰にビジーになることがある。この場合、すべてのユーザ要求を処理するために、通常より長い時間を要することがある。別の方法として、いくつかのユーザ要求がサーバ・アプリケーション１６によって脱落させられることがある。両方の状況とも、素速く且つ効率的に作動しているサーバをアクセスしたいユーザを失望させることもある。サーバ・コンピュータ１８のソフトウェアおよびハードウェア資源を考慮すれば、サーバ・アプリケーション１６がユーザをサービスし得る最適、最大、および／または、最小の動作点が存在し得る。
【００２９】
従って、サーバ・テスト・プロセス１０は、サーバ・アプリケーション１６の仮想ユーザをシミュレートし得る（ステップ１０４）。各仮想ユーザは、サーバ・アプリケーション１６のユーザをシミュレートするスクリプト、プログラム、或いはプログラムの一部であってもよい。サーバ・テスト・プロセス１０は、ネットワーク・トラフィック、および／または、サーバ要求を生成して、それらをサーバ・アプリケーション１６に送り得る（ステップ１０６）。各仮想ユーザに対して、例えば、サーバ・テスト・プロセス１０は、サーバ・アプリケーション１６のユーザに特有のネットワーク・トラフィック、および／または、サーバ要求を生成し得る。例えば、サーバ・アプリケーション１６がウェブ・サーバである場合、テスト・プロセス１０によってシミュレートされた仮想ユーザは、典型的なウェブ・ユーザであってもよい。即ち、それらは、ウェブをブラウズしてウェブ・サーバ、即ち、サーバ・アプリケーション１６をアクセスするユーザに特有のウェブ・トラフィック、ウェブ要求、およびウェブ・ダウンロードを生成するものであってもよい。
【００３０】
サーバ・テスト・プロセス１０は任意の数のユーザをシミュレートし（ステップ１０４）、それらのトラフィックおよび要求をサーバ・アプリケーション１６に送り得る（ステップ１０６）。例えば、サーバ・テスト・プロセス１０は、多くのユーザ（例えば、或る特定の場合には１００,０００個のユーザ）、またはわずかなユーザ（例えば、或る特定の場合には１つまたは０個のユーザでも）シミュレートし得る。これらのシミュレートされた仮想ユーザの各々は、ネットワーク・トラフィックおよび要求をサーバ・アプリケーション１６に送り得る（ステップ１０６）。このように、サーバ・テスト・プロセス１０は実世界のサーバ使用の場合をシミュレートし得る。例えば、サーバ・アプリケーション１６が、フィールドでそれがインストールされたときにＸ個のユーザからクライアント要求を受け取ることを期待する場合、サーバ・テスト・プロセス１０はＸ個の仮想ユーザをシミュレートし（ステップ１０４）、Ｘ個のシミュレートされたユーザからのクライアント要求をサーバ・アプリケーション１６に送り得る（ステップ１０６）。
【００３１】
或る使用方法の場合、開発者は、サーバ・コンピュータ１８に或る特定の程度まで負荷を負わせるユーザの数を決定することによって、そのサーバ・コンピュータ１８の効率を最大にしたいことがある。換言すれば、特定のサーバに対する目標のＣＰＵ負荷が８０％として指定される場合、開発者は、８０％のＣＰＵ負荷を形成するために必要な、サーバ・アプリケーション１６をアクセスするユーザの数を知りたいことがある。従って、サーバ・テスト・プロセス１０は、サーバ・アプリケーション１６のメトリック（例えば、ＣＰＵ負荷）を測定し（ステップ１０８）、その測定されたメトリックを所定値（例えば８０％）に比較し（ステップ１１０）、その測定されたメトリックおよび所定値が異なる場合にはシミュレートされた仮想ユーザの数を変更し得る（ステップ１１２）。
【００３２】
サーバ・テスト・プロセス１０は、測定されたメトリックが所定値の事前設定された限界と同じになるかまたはその限界内になるまで仮想ユーザの数を変更し（ステップ１１２）または調節する。或る場合には、仮想ユーザの数を増加させることは、測定されたメトリックの値を増加させ得る。例えば、サーバ・テスト・プロセス１０は、仮想ユーザの数Ｘをシミュレートし得る。目標のＣＰＵ負荷が８０％である場合、およびサーバ・テスト・プロセス１０がＣＰＵ負荷を６０％で測定する場合（ステップ１０８）、サーバ・テスト・プロセス１０は、ＣＰＵ負荷が８０％に達するかまたは事前設定された限界の８０％（例えば、+/-２％、または他の事前設定された限界）内になるまで、仮想ユーザの数Ｘを増加させ得る。同様に、測定されたＣＰＵ負荷が目標の８０％よりも大きい場合、ＣＰＵ負荷が８０％に達するかまたは８０％の事前設定された限界内になるまで、サーバ・テスト・プロセス１０は仮想ユーザの数Ｘを減少させ得る。
【００３３】
別の場合、仮想ユーザの数を増加させることは、実際には、測定されたメトリックの値を減少させることもある。例えば、測定されたメトリックがＣＰＵアイドル時間であるという場合を仮定する。目標ＣＰＵアイドル時間が２０％であり、測定されたＣＰＵアイドル時間が３０％である場合、サーバ・テスト・プロセス１０は仮想ユーザの数Ｘを増加させ、従って、サーバ・コンピュータ１８のＣＰＵを更にビジーにし、アイドル時間を減少させ得る。この場合、サーバ・テスト・プロセス１０は、測定されたＣＰＵアイドル時間が２０％に減少するかまたは２０％の限界内になるまで、仮想ユーザの数Ｘを増加させ得る。同様に、測定されたＣＰＵアイドル時間が１０％である場合、サーバ・テスト・プロセス１０は、測定されたＣＰＵアイドル時間が２０％に増加するかまたは２０％の限界内になるまで仮想ユーザの数Ｘを減少させ得る。
【００３４】
測定されたメトリックおよび所定値は、サーバ・コンピュータ１８、および／または、サーバ・アプリケーション１６のパフォーマンスの任意の測定値またはインジケータであってもよい。メトリックおよび所定値は、ＣＰＵ負荷、ＣＰＵアイドル時間、ハード・ドライブ帯域幅、ハード・ドライブ空きスペース、ネットワーク用途、ソフトウェア・スレッドの数、或いは、サーバ・コンピュータ１８のパフォーマンスまたはサーバ・アプリケーション１６のパフォーマンスを表わす任意の他のメトリックであってもよい。１つの実施例では、サーバ・テスト・プロセス１０は、サーバ・コンピュータ１８上で作動する Windows Management Instrumentation（ＷＭＩ）または rstat.d インターフェースをアクセスすることによってメトリックを測定し得る（ステップ１０８）。ＷＭＩ、および／または、rstat.d サービスは、サーバ・コンピュータ１８のパフォーマンス・メトリックの統計および測定を提供するツールであってもよい。サーバ・テスト・プロセス１０は、これらのＷＭＩ、および／または、rstat.d メトリックをアクセスし、測定し得る（ステップ１０８）。当業者には明らかなように、パフォーマンス・メトリックを提供する任意のツールが使用可能であり、それは、例えば、ＷＭＩ、rstat.d、またはサーバ・コンピュータ１８のパフォーマンス測定し得る他の任意のツールを含むがそれらに限定されない。カスタム測定ツールは、サーバ・コンピュータ１８のメトリックを測定する目的で全体的にまたは部分的に開発されたソフトウェア・プログラム、および／または、ハードウェア・ツールであってもよい。
【００３５】
或るメトリックの値は変更または変動し得る。これらの変動は虚偽のまたは不正確な測定結果を生じ得る。興味のある測定値は変動する測定値の集計または平均であってもよいが、メトリックの値の変更および変動はサーバ・テスト・プロセス１０を誤らせることがある。例えば、ＣＰＵ負荷が変動するメトリックである場合、サーバ・テスト・プロセス１０によって行われた連続的な測定は変動し得る。例えば、サーバ・コンピュータ１８の目標のＣＰＵ値は８０％であり、実際の平均的ＣＰＵ負荷は８０％であるが、測定誤差またはＣＰＵ負荷測定値の性質により、サーバ・コンピュータ１８のＣＰＵ負荷のすべての個々の測定値は７０％と９０％との間で変化し得る。この場合、サーバ・コンピュータ１８は望ましい負荷で動作するが、如何なる所与の測定値も７０％と９０％の間のどこかになり得る。特定の測定値が７０％である場合、サーバ・テスト・プロセスは誤って仮想のユーザの数を増加させることがある。特定の測定値が９０％である場合、サーバ・テスト・プロセスは誤って仮想のユーザの数を減少させることがある。メトリックが各測定値に従って変動する場合、サーバ・テスト・プロセス１０は、各要素に従って仮想ユーザの数を変更し得るし、定常状態条件に達することができないかもしれない。
【００３６】
そのような変動を回避するために、サーバ・テスト・プロセス１０は何回もメトリックを測定し（ステップ１０８）、各測定値をメモリまたは記憶装置２２のようなコンピュータ可読記憶装置に格納する（ステップ１１６）。サーバ・テスト・プロセス１０が一連の測定結果を格納する場合（ステップ１１６）、サーバ・テスト・プロセス１０は、測定変動を除くために測定結果を集計し得る（ステップ１１８）。サーバ・テスト・プロセス１０は、ローリング平均（rolling average）を適用することによって、即ち、最後の数個の測定結果を格納し、最後の数個の測定結果の平均を使って仮想ユーザの数を変更すべきかどうかを判断することによって、測定結果を集計し得る（ステップ１１８）。更に、サーバ・テスト・プロセス１０は、測定結果における変動を取り除くためにロー・パス無限入力応答（ＩＩＲ）または有限入力応答（ＦＩＲ）のようなロー・パス・フィルタをその最後の数個の格納された測定結果に適用し得る。一般に、サーバ・テスト・プロセス１０は、測定結果から変動およびばらつきを取り除くあらゆる方法で測定結果を集計し得る（ステップ１１８）。
【００３７】
サーバ・テスト・プロセス１０は特定のメトリックおよび／または特定の動作点に関連したユーザの数を記録し得る（ステップ１１４）。例えば、サーバ・コンピュータ１８のＣＰＵにおいて８０％の負荷を生ずるために幾つのユーザが必要であるかを設計者が知りたいと仮定する。この場合、サーバ・コンピュータ１８をテストしている間、サーバ・テスト・プロセス１０はサーバ・コンピュータ１８のＣＰＵ負荷を測定し、サーバ・コンピュータ１８のＣＰＵ負荷が８０％に達するまで（または、８０％の事前設定された限界内の数に達するまで）、仮想ユーザの数を変更し得る。サーバ・テスト・プロセス１０は、サーバ・コンピュータ１８のＣＰＵ負荷が８０％に達するためには１０,０００個の仮想ユーザをシミュレートしなければならなかったということを知ることができる。しかる後、サーバ・テスト・プロセス１０は、それが見つけたユーザの数、即ち、１０,０００を、サーバ・コンピュータ１８のＣＰＵにおける８０％の負荷を与えるに必要なユーザの数として記録し得る（ステップ１１４）。サーバ・テスト・プロセス１０は、仮想ユーザの数をメモリ、記憶装置、ファイル、データベース、またはデータを格納するための任意の他の媒体に記録し得る（ステップ１１４）。
【００３８】
１つの例によれば、サーバ・テスト・プロセス１０は、サーバにおける特定の目標負荷に達するために必要なユーザの数を決定するために使用される。別の簡単な例では、サーバ・コンピュータ１８における目標のＣＰＵ負荷が５０％である場合、サーバ・テスト・プロセス１０は１０,０００個のユーザをシミュレートし得る（ステップ１０４）。サーバ・テスト・プロセス１０は、サーバ・コンピュータ１８におけるＣＰＵ負荷を測定し（ステップ１０８）、１０,０００個の仮想ユーザによって、サーバ・コンピュータ１８が１００％で作動しているということ知り得る。５０％に達するために、サーバ・テスト・プロセス１０は、測定された値（１００％）および所定値（５０％）のパーセンテージまたは比率に基づいて仮想ユーザの数を変更し得る（ステップ１１２）。 例えば、所定値（５０％）が目標値（１００％）の半分であるので、サーバ・テスト・プロセス１０はユーザの数を半分だけ減らし得る。従って、サーバ・テスト・プロセス１０は、仮想ユーザの数を１０,０００から５,０００に減らし得る。サーバ・テスト・プロセス１０は、測定されたメトリックが所定値に等しくなるかまたは所定値の或る範囲内になるまで、このプロセスを繰返して仮想ユーザの数を増加および減少させ得る。
【００３９】
数多くの実施例を説明したが、「特許請求の範囲」の記載が本発明の技術的範囲を定義する。
【図１】
2010244528.tif 000003
【図２】
2010244528.tif 000004