(57)【要約】【課題】  ウェブ・サーバのＨＴＴＰセッション内におけるクライアント−サーバ対話の特性を明らかにし、理解するための、改善された技術を提供すること。【解決手段】  多数のコンピュータ・システムを含むウェブ・サーバが、クライアントのためのＨＴＴＰセッション負荷を処理する他のシステムの代わりに冗長セッションパーシステントデータのデータベースを維持する少なくとも１つのシステムを含む。セッション・アナライザは、この冗長データベースから情報を抽出して（７０７、７１１）、ＨＴＴＰセッション負荷の特性を明らかにする。好ましくは、セッション負荷は、アプリケーション・サーバと１つ又は複数のアプリケーションとを含むミドルウェアによって処理される。アプリケーション・サーバは、セッションパーシステントデータをデータ・オブジェクトとして維持し、冗長データのデータベースを自動的に更新し、その応答がクライアントに伝送される。セッション・アナライザは、セッション負荷の特性を明らかにするために、独立して冗長データベースからデータを抽出する。必要に応じて、アナライザは、抽出されたデータから推奨（７１７）の調整を行うことができるインテリジェント推論機能（７１６）を含む。【選択図】      図７
2009521741.tif 000002
【特許請求の範囲】
【請求項１】
ウェブ・サーバにおけるＨＴＴＰセッション負荷の特性を明らかにする方法であって、  第１のコンピュータ・システムにおいて複数のＨＴＴＰセッションを処理するステップであって、前記複数のＨＴＴＰセッションについてのセッションパーシステント状態データを前記第１のコンピュータ・システムに維持する、コンピュータ実行ステップと、
前記第１のコンピュータ・システムから第２のコンピュータ・システムに冗長セッションパーシステント状態データを伝送するコンピュータ実行ステップと、
前記冗長セッションパーシステント状態データを前記第２のコンピュータ・システムに格納するステップであって、前記第２のコンピュータ・システムは、前記第２のコンピュータ・システムに格納された前記冗長セッションパーシステント状態データを用いて前記複数のＨＴＴＰセッションのセッション状態の回復をサポートする、コンピュータ実行ステップと、
前記第２のコンピュータ・システムに格納された前記冗長セッションパーシステント状態データを用いて前記ＨＴＴＰセッション負荷の特性を明らかにするコンピュータ実行ステップと、
を含む方法。
【請求項２】
前記冗長セッションパーシステント状態データを前記第２のコンピュータ・システムに格納する前記ステップは、前記冗長セッションパーシステント状態データを前記第２のコンピュータ・システム内の構造化データベースに格納することを含み、前記構造化データベースは複数のエントリを持つ少なくとも１つのテーブルを有し、前記エントリの各々は前記複数のＨＴＴＰセッションのそれぞれのＨＴＴＰセッションに対応する、請求項１に記載のＨＴＴＰセッション負荷の特性を明らかにする方法。
【請求項３】
前記冗長セッションパーシステント状態データを用いて前記ＨＴＴＰセッション負荷の特性を明らかにする前記ステップは、前記構造化データベースに対して１つ又は複数のクエリを実行して前記構造化データベースに格納されたデータを取得することを含む、請求項２に記載のＨＴＴＰセッション負荷の特性を明らかにする方法。
【請求項４】
前記冗長セッションパーシステント状態データを用いて前記ＨＴＴＰセッション負荷の特性を明らかにする前記ステップは、前記構造化データベースの変化を監視し、前記構造化データベースの変化に関する履歴データを用いて前記ＨＴＴＰセッション負荷の特性を明らかにすることを含む、請求項２に記載のＨＴＴＰセッション負荷の特性を明らかにする方法。
【請求項５】
前記冗長セッションパーシステント状態データを用いて前記ＨＴＴＰセッション負荷の特性を明らかにする前記ステップは、前記構造化データベースからのデータを用いて前記第１のコンピュータ・システムのチューニング・パラメータに関する推論を導くことを含み、前記推論は、コンピュータ実行プロセスによって自動的に導かれる、請求項２に記載のＨＴＴＰセッション負荷の特性を明らかにする方法。
【請求項６】
前記冗長セッションパーシステント状態データを用いて前記ＨＴＴＰセッション負荷の特性を明らかにする前記ステップは、前記構造化データベースからのデータを用いて、
（ａ）少なくとも１つの間隔にわたって測定されたデータベース更新動作数、
（ｂ）平均更新動作サイズ、
（ｃ）前記エントリの平均サイズ、
（ｄ）前記構造化データベースの全体サイズ、
（ｅ）前記構造化データベースの少なくとも１つの列についての平均列サイズ、
（ｆ）前記構造化データベースのエントリによって用いられているデータ・タイプ、
（ｇ）平均セッション寿命、
（ｈ）前記データベースの更新についての平均応答時間、
（ｉ）前記データベースのログへの書き込み数、及び、
（ｊ）前記第２のコンピュータ・システム内のディスクへの平均待ち時間、
からなる特性パラメータの組から少なくとも１つの特性パラメータを得ることを含む、請求項２に記載のＨＴＴＰセッション負荷の特性を明らかにする方法。
【請求項７】
前記第１のコンピュータ・システムは、ＨＴＴＰセッションを処理するためのセッション・サーバ・アプリケーションをサポートするアプリケーション・サーバを含む、請求項１に記載のＨＴＴＰセッション負荷の特性を明らかにする方法。
【請求項８】
前記第２のコンピュータ・システムは、複数の前記第１のコンピュータ・システムから受信した冗長セッションパーシステント状態データを格納し、前記第１のコンピュータ・システムの各々は、それぞれの複数のＨＴＴＰセッションを処理し、前記それぞれの複数のＨＴＴＰセッションについてのセッションパーシステント状態データを維持することを含む、請求項１に記載のＨＴＴＰセッション負荷の特性を明らかにする方法。
【請求項９】
前記第１のコンピュータ・システムと前記第２のコンピュータ・システムとは、共通のローカル・エリア・ネットワークに結合され、前記第１のコンピュータ・システムから前記第２のコンピュータ・システムに冗長セッションパーシステント状態データを伝送する前記ステップは、前記冗長セッションパーシステント状態データを前記ローカル・エリア・ネットワーク全体に伝送することを含む、請求項１に記載のＨＴＴＰセッション負荷の特性を明らかにする方法。
【請求項１０】
ウェブ・サーバのＨＴＴＰセッション負荷の特性を明らかにするコンピュータ・プログラムであって、
信号支持媒体上に記録される複数のコンピュータ実行可能命令であって、少なくとも１つのコンピュータ・システムによって実行されたときに、
第１のコンピュータ・システムに格納された冗長セッションパーシステント状態データにアクセスするステップであって、前記冗長セッションパーシステント状態データは、第２のコンピュータ・システムから前記第１のコンピュータ・システム内に受信され、前記第２のコンピュータ・システムによって複数のＨＴＴＰセッションを処理するために前記第２のコンピュータ・システムによって維持されるセッション持続状態を表し、前記冗長セッションパーシステント状態データを用いて前記複数のＨＴＴＰセッションのセッション状態の回復をサポートするように前記第１のコンピュータ・システムに格納されている、ステップと、
前記アクセスするステップによってアクセスされる前記冗長セッションパーシステント状態データを用いて前記ＨＴＴＰセッション負荷の特性を明らかにするステップと、
を前記少なくとも１つのコンピュータ・システムに実行させる命令を含む、コンピュータ・プログラム。
【請求項１１】
前記第１のコンピュータ・システムに格納された前記冗長セッションパーシステント状態データは、前記第１のコンピュータ・システム内の構造化データベースに格納された冗長セッションパーシステント状態データを含み、前記構造化データベースは複数のエントリを持つ少なくとも１つのテーブルを有し、前記エントリの各々は前記複数のＨＴＴＰセッションのそれぞれのＨＴＴＰセッションに対応する、請求項１０に記載のコンピュータ・プログラム。
【請求項１２】
前記冗長セッションパーシステント状態データを用いて前記ＨＴＴＰセッション負荷の特性を明らかにする前記ステップは、前記構造化データベースに対して１つ又は複数のクエリを実行して前記構造化データベースに格納されたデータを取得することを含む、請求項１１に記載のコンピュータ・プログラム。
【請求項１３】
前記冗長セッションパーシステント状態データを用いて前記ＨＴＴＰセッション負荷の特性を明らかにする前記ステップは、前記構造化データベースの変化を監視し、前記構造化データベースの変化に関する履歴データを用いて前記ＨＴＴＰセッション負荷の特性を明らかにすることを含む、請求項１１に記載のコンピュータ・プログラム。
【請求項１４】
前記冗長セッションパーシステント状態データを用いて前記ＨＴＴＰセッション負荷の特性を明らかにする前記ステップは、前記構造化データベースからのデータを用いて前記第２のコンピュータ・システムのチューニング・パラメータに関する推論を導くことを含み、前記推論は、コンピュータ実行プロセスによって自動的に導かれる、請求項１１に記載のコンピュータ・プログラム。
【請求項１５】
前記冗長セッションパーシステント状態データを用いて前記ＨＴＴＰセッション負荷の特性を明らかにする前記ステップは、前記構造化データベースからのデータを用いて、
（ａ）少なくとも１つの間隔にわたって測定されたデータベース更新動作数、
（ｂ）平均更新動作サイズ、
（ｃ）前記エントリの平均サイズ、
（ｄ）前記構造化データベースの全体サイズ、
（ｅ）前記構造化データベースの少なくとも１つの列についての平均列サイズ、
（ｆ）前記構造化データベースのエントリによって用いられているデータ・タイプ、
（ｇ）平均セッション寿命、
（ｈ）前記データベースの更新についての平均応答時間、
（ｉ）前記データベースのログへの書き込み数、及び、
（ｊ）前記第２のコンピュータ・システム内のディスクへの平均待ち時間、
からなる特性パラメータの組から少なくとも１つの特性パラメータを得ることを含む、請求項１１に記載のコンピュータ・プログラム。
【請求項１６】
ＨＴＴＰセッション負荷の特性を明らかにするための装置であって、
少なくとも１つのプロセッサと、外部にある少なくとも１つのセッション・サーバ・コンピュータ・システムから受信された冗長セッションパーシステント状態データを格納するためのデータ・ストレージとを有するセッション冗長コンピュータ・システムであって、前記少なくとも１つのセッション・サーバ・コンピュータ・システムは、複数のＨＴＴＰセッションを処理して前記複数のＨＴＴＰセッションについてのセッションパーシステント状態データを維持し、前記セッション冗長コンピュータ・システムは、前記データ・ストレージに格納された前記冗長セッションパーシステント状態データを用いて前記複数のＨＴＴＰセッションのセッション状態の回復をサポートする、セッション冗長コンピュータ・システムと、
コンピュータ・システム上で実行可能な複数の命令として具体化されたＨＴＴＰセッション・アナライザ機能であって、前記セッション冗長コンピュータ・システムの前記データ・ストレージに格納された前記冗長セッションパーシステント状態データを用いて、前記少なくとも１つのセッション・サーバ・コンピュータ・システム上における前記複数のＨＴＴＰセッションの負荷の特性を明らかにする、ＨＴＴＰセッション・アナライザ機能と、
を含む装置。
【請求項１７】
前記ＨＴＴＰセッション・アナライザ機能は、前記セッション冗長コンピュータ・システム内に存在し、前記セッション冗長コンピュータ・システムの前記少なくとも１つのプロセッサ上で実行される、請求項１６に記載の装置。
【請求項１８】
前記セッション冗長コンピュータ・システムに格納された前記冗長セッションパーシステント状態データは、前記セッション冗長コンピュータ・システム内の構造化データベースに格納された冗長セッションパーシステント状態データを含み、前記構造化データベースは複数のエントリを持つ少なくとも１つのテーブルを有し、前記エントリの各々は前記複数のＨＴＴＰセッションのそれぞれのＨＴＴＰセッションに対応する、請求項１６に記載の装置。
【請求項１９】
複数のセッション・サーバ・コンピュータ・システムをさらに含み、前記セッション・サーバ・コンピュータ・システムの各々は、それぞれの複数のＨＴＴＰセッションを処理し、前記それぞれの複数のＨＴＴＰセッションのそれぞれのＨＴＴＰセッションの各々についての前記セッションパーシステント状態データを維持することを含む、請求項１６に記載の装置。
【請求項２０】
前記冗長セッションパーシステント状態データを前記セッション・サーバ・コンピュータ・システムの各々から前記セッション冗長コンピュータ・システムに伝送するための通信経路を提供する少なくとも１つのローカル・エリア・ネットワークをさらに含む、請求項１９に記載の装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明はデジタル・データ処理に関し、より詳細には、ネットワーク化されたデジタル・コンピュータ環境においてＨＴＴＰセッションを用いてクライアント要求に応答するサーバの動作に関する。
【背景技術】
【０００２】
二十世紀の後半に、情報革命として知られる現象が始まった。情報革命は、いずれか一つの事象又は機械というよりも広い範囲の歴史的な出来事であるが、デジタル電子コンピュータ以上に情報革命を代表する単一の装置は現れていない。コンピュータ・システムの開発は、間違いなく革命であった。コンピュータ・システムは年々高速化し、より多くのデータを記憶するようになり、より多くの用途をユーザに提供している。同時に、コンピュータ・リソースのコストは一貫して減少しており、その結果、数年前には収集し、記憶し、処理するのに費用がかかり過ぎていた情報は、今ではコンピュータによって取り扱うことが採算性を持つようになっている。情報処理コストの減少は、製品設計、製造プロセス、リソース・スケジューリング、管理上の諸事、その他の多くの要因がより効果的に行われるため、生産性を雪だるま式に増加させる。
【０００３】
コンピュータ・コストの減少及びデジタル装置の一般的な可用性は、そうした装置に記憶される情報容量の急増をもたらした。非常に多くの情報がデジタル形式で記憶されると、当然のことながら、コンピュータ・システムから情報に広くアクセスできるようになることが望ましい。情報の容量によって、いずれの装置においても記憶性能が小さく見える。情報アクセスを改善するために、コンピュータ装置が互いに通信を行って情報を交換することを可能にする種々の技術が開発されている。おそらく、この分散型コンピュータの最も顕著な例は、インターネットを用いて世界中で利用可能になったリソースの集合体であるワールド・ワイド・ウェブ（単に「Ｗｅｂ」として知られていることが多い）である。児童から高齢者に至るまでの人々が、ウェブを使うことを学んでおり、彼らの家又は職場の利便性からほぼ無限の多様な情報を見つけ出している。企業、行政、組織、さらには普通の個人でさえもが、知る価値のあるすべてのことがウェブ上のどこかで得られると期待される程、情報をウェブ上で利用可能にしている。
【０００４】
ウェブ、並びに、多数のデジタル・システム間のｅ−メール及び他の形式の通信及び分散処理のためのサポートを提供するインターネットは、多数のリンクによって接続されたデジタル装置（ノード）の異機種ネットワークであり、そのためネットワークのいずれか２つのノード間には典型的には多数の経路が存在し、インターネットにある程度の冗長性を与えている。データはパケットで送られ、各々のパケットは、宛先に到達するまで多数の連続するノードにわたってルーティングされる。
【０００５】
パケット・ルーティングの基本レベルでは、インターネットは、あらゆる任意のデータを１つのノードから別のノードに伝送することができるため、通信媒体と見なすことができる。しかしながら、インターネットの有用性は、ソース・ノード及び宛先ノードにおけるデータ交換を取り扱うアプリケーションに依存する。したがって、ウェブ・ブラウザ及び他のウェブ・アプリケーションの出現は、幅広いコンピュータ・プログラミング・スキルのない人々が基本的な情報伝送技術を個々の対話ベースで用いることができるようにすることによって、インターネットの使用を大きく拡大させた。
【０００６】
したがって、インターネット技術の有用性の向上は、インターネットが幅広く受け入れられるために重要であり、我々はこれが、将来の問題を解決するためのインターネット及び関連技術の継続的使用及び拡大についても当てはまると期待してもよいことを認識されたい。
【０００７】
ワールド・ワイド・ウェブは、対話型クライアント−サーバ・パラダイムを利用する。クライアント側で実行される対話型ブラウザ・アプリケーションが、ユーザ入力に応答して、サーバによって保持される（ホームページなどの）ウェブ・ページにアクセスすることにより、サーバ・アプリケーションとの間でハイパー・テキスト伝送プロトコル（ＨＴＴＰ）セッションと呼ばれる接続を確立する。サーバはリアルタイムで応答し、ブラウザはユーザに表示するための応答をフォーマットする。対話の最も基本的なレベルでは、ＨＴＴＰセッションは、（ウェブ・ページなどの）所望のドキュメントのＵＲＬを送信することによってそのドキュメントを要求するクライアントと、要求されたドキュメントのコピーを送信することによって応答するサーバとからなるものに過ぎない。多くの場合、ＨＴＴＰセッションは、極めて複雑なデータ交換に関係する。例えば、ユーザは、オンラインの小売業者にアクセスし、小売業者のオンライン・カタログの様々なアイテム（異なるウェブ・ページ）を閲覧し、関心のあるアイテムを見つけ出すための検索パラメータを与え、購入する特定のアイテムを選択し、料金請求及び届け先の情報を提供するなどといったことができ、これらの全ては単一のＨＴＴＰセッション内に含まれる。
【０００８】
ＨＴＴＰセッション内の複雑な対話型データ交換をサポートするために、サーバは、あるセッションパーシステントデータ（session-persistent data）、すなわちセッション状態を維持するのに用いられ、そのセッションの間サーバ内に存在し続けるデータを維持することが一般に望ましい。このセッションパーシステントデータは、データ・パケットが交換され、クライアントがサーバの環境内の１つのウェブ・ページから別のウェブ・ページにナビゲートする際の、クライアント―サーバ間の相互交換の間サーバ内に存続する。一般に、セッションパーシステントデータは、クライアントとサーバとの間で伝送されるデータ・パケットの各々については繰り返されないが、クライアントから受信される入力又はサーバにより内部で生成されるデータによって更新することができる。このセッションパーシステントデータは、典型的には、サーバ内の、ＪＡＶＡ（登録商標）Ｂｅａｎのようなセッション・データ・オブジェクト内に維持される。
【０００９】
ウェブを介してクライアントに対してサーバ機能を提供するサーバにおいては、いつでも多数のクライアントがサーバに接続される可能性がある。すなわち、サーバ内にアクティブな多数のＨＴＴＰセッションが存在する可能性は常にある。典型的な大企業においては、サポートされなければならない同時アクティブ・セッションの数は、どのような単一のコンピュータ・システムの能力をもはるかに超える。さらに、多くの大企業においては、サーバを常に利用可能とする必要性が高い。したがって、多くのそうした企業は、サーバ・クラスタとも呼ばれる多数のサーバ・コンピュータ・システムを用いてウェブ・サービスを提供する。こうしたクラスタは、マルチプルシステムに対し処理パワーを付加するものであり、適正に構成されると、クラスタ内における個々のサーバ・システムのうちの１つ又は複数の故障又は他の使用不能状態が生じた場合にも、クライアントへのサービス拒否を防止するのに望ましい程度の冗長性をもたらすことができる。サーバ・システムの１つが故障した場合にシームレスなクライアント・インターフェースを提供するために、セッションパーシステントデータに冗長性を持たせて維持することが可能である。冗長性のあるセッションパーシステントデータを維持するための一般的な技術によれば、クライアントのためにサーバの機能を果たすクラスタの他のシステムの代わりに、セッションパーシステントデータのデータベースを維持する１つ又は複数のシステムをクラスタ内に設けることである。サーバ・システムのいずれかが故障した場合には、そのアクティブなセッションは、クラスタの１つ又は複数の他のサーバ・システムに割り当てることができ、対応するセッションパーシステントデータは、適切な１つ又は複数のサーバに与えられる。
【００１０】
セッションパーシステントデータとして維持されるデータの容量及びタイプは、サーバによって実行されているアプリケーションによって決まる。アプリケーションによっては、セッション毎にそれほど大きく変化しない最小量の状態データを維持するものもあるが、多くのアプリケーションは、セッションの間におけるサーバとのクライアントの対話履歴を表すはるかに複雑なセッション・データを維持する。そうしたアプリケーションにおいては、セッションが長くなり、クライアントがより多くのサーバと対話を行う場合、セッションパーシステントデータが蓄積する傾向がある。そうしたセッションパーシステントデータを保持する場合、サーバ・クラスタの利用可能なハードウェア・リソースの大部分が消費されることがある。
【００１１】
典型的な複雑なウェブ・サーバ環境においては、クライアントの代わりにサーバによって実行されている機能は、絶えず発展している。例えば、オンライン小売環境においては、ユーザに表示されるウェブ・ページは、新しいアイテム、製造中止アイテム、特別提供品などを反映するために絶えず更新されている。時々、企業は、そのウェブ・インターフェース全体を、改善された機能、グラフィックス、ナビゲーションなどを提供する改善バージョンに置き換えることがある。さらに、サーバ（オンライン小売業者）にアクセスするクライアント（顧客）の組は、サーバとの異なるパターンの対話を発展又は展開させることがある。
【００１２】
このクライアント−サーバ相互対話の流動性及び複雑性のために、サーバ内での使用パターンを予測するのは難しく、特に、維持されなければならないセッションパーシステントデータの容量と、それを維持するのに必要なリソースとを予測することは難しい。これらの使用パターンを予測する適切な手段がなければ、クライアントからの要求に対してサービスを提供し、冗長性を維持し、サーバの可用性を保障するために、適切なリソースが利用可能となることを保障するのは難しい。さらに、最適な形で利用可能なリソースを割り当てることは難しく、その結果、十分なリソースが利用可能な場合であっても、所望の機能性が損なわれることがある。
【発明の開示】
【発明が解決しようとする課題】
【００１３】
したがって、ウェブ・サーバのＨＴＴＰセッション内におけるクライアント−サーバ対話の特性を明らかにし、理解するための、改善された技術についての必要性が存在する。
【課題を解決するための手段】
【００１４】
多数のコンピュータ・システムを含むウェブ・サーバは、クライアントのためのＨＴＴＰセッション負荷を処理する他のシステムの代わりに、冗長セッションパーシステントデータのレポジトリ（例えばデータベース、これ以降、参照しやすいようにデータベースと呼ぶ）を維持する少なくとも１つのシステムを含む。セッション・アナライザが、ＨＴＴＰセッション負荷の特性を明らかにするために、このデータベースから情報を抽出する。
【００１５】
好ましい実施形態においては、ＨＴＴＰセッションは、クラスタ内の多数のサーバ・システムに割り当てられ、各々のサーバ・システムは、アクティブなＨＴＴＰセッションのそれぞれのサブセットを処理する。アプリケーション・サーバと、アプリケーション・サーバによってサポートされる１つ又は複数のアプリケーションとは、アクティブなＨＴＴＰセッションを処理するためにクラスタの各々のサーバ・システム上で実行される。アプリケーション・サーバは、好ましくはＪＡＶＡ（登録商標）ＢｅａｎｓであるＨＴＴＰセッション・データ・オブジェクトの形式でセッションパーシステントデータを維持するが、他の何らかの形式をとることもできる。クラスタはさらに、冗長セッションパーシステントデータのデータベースを維持する少なくとも１つのセッション冗長システムを含む。サーバ・システムのいずれかの故障又は他の使用不能状態が発生した場合に、故障したサーバ・システム上のアクティブなセッションに対応するセッションパーシステントデータを、冗長セッションパーシステントデータから回復することができる。アプリケーション・サーバは、アプリケーション・サーバ内のセッションパーシステントデータに変更が加えられ、応答がクライアントに伝送されたときに、セッション冗長システムの冗長セッションパーシステントデータを自動的に更新するための機能部を含む。好ましい実施形態として説明されたこの構成及び機能の区分は、変えることができる。
【００１６】
好ましい実施形態においては、セッション・アナライザは、データ・マイニング機能と知的推論機能との両方を行う。データ・マイニング機能は、セッション負荷の特性を明らかにするために、冗長セッションパーシステントデータのデータベースからデータを抽出する。このデータは、様々な形式のいずれかでシステム管理者などのユーザに提示することができる。任意の改善点として、アナライザは、抽出されたデータからルール・ベースのシステムを用いて推論を導くことができる知的推論機能を含む。好ましくは、これらの推論は、システム管理者又はそれに類する者が利用可能なチューニング・パラメータの調節に関するものであるが、他の推論を導くこともできる。
【００１７】
ＨＴＴＰセッション負荷の特性を明らかにするための使いやすいツールを提供することによって、複雑なウェブ・サーバにおける適正なリソース計画及びチューニングが容易になる。ＨＴＴＰセッション負荷の特性を明らかにすることによって得られたデータはまた、アプリケーション・プログラム自体の将来バージョンを設計する際に考えられる修正行為のために、過剰なリソース消費をもたらすウェブ・サーバ・アプリケーション・プログラムのこれらの特性を特定するのに役立つものとすることができる。さらに、セッション・データの冗長性及びクライアントへのサーバ可用性を保障する目的で、既に冗長セッションパーシステントデータのデータベースが維持されているため、この既存のデータベースからのＨＴＴＰセッション負荷データの抽出は、比較的小さな追加のシステム・オーバーヘッドしか必要としない。
【００１８】
本発明の構造及び動作の両方に関する本発明のさらなる詳細は、以下の詳細な説明と添付図面とを参照することによって最もよく理解することができる。
本発明の実施形態は、共通の参照番号が同じ部分を示す添付図面を参照しながら、単なる例として、以下により詳細に説明される。
【発明を実施するための最良の形態】
【００１９】
インターネットの概要
本発明の実施形態の動作を説明する前に、インターネットの概要を簡単に説明する。
「インターネット」という用語は、「インターネットワーク」の短縮形であり、一般に、コンピュータ・ネットワークの分野では周知の、ＴＣＰ／ＩＰプロトコル・スイートを使用するコンピュータ・ネットワークの集合体を指す。ＴＣＰ／ＩＰは、「Ｔｒａｎｓｐｏｒｔ  Ｃｏｎｔｒｏｌ  Ｐｒｏｔｏｃｏｌ／Ｉｎｔｅｒｎｅｔ  Ｐｒｏｔｏｃｏｌ」の頭字語であり、コンピュータ間の通信を容易にするソフトウェア・プロトコルである。
【００２０】
図１は、インターネットのハイレベル概念図である。インターネットは、予め確立されたトポロジーをもたず、新しいノードとリンクとを追加することによって無制限に拡張可能である。１つのノードは、他のノードに接続するあらゆる数のリンクを有することができ、これらのリンクは、異なるデータ容量及び他の特徴を有する種々の通信技術のいずれかを用いたものとすることができる。したがって、インターネットのトポロジーは、典型的にはいずれか２つのノード間に多数の可能な経路が存在する極めて複雑な相互接続ネットワークとなる。
【００２１】
「バックボーン」と呼ばれることもあるネットワークの中央部は、データ・パケットを受信して、これらをネットワークの他のノードに転送する、多数の高速ルータ１０１を含む。典型的には、各々のルータは、他のルータへの多数の接続を有し、これらの接続は高データ容量を有する。例えば、光ファイバ・リンクが高速ルータ１０１間に用いられる場合が多い。高速ルータに接続されるのは、図１においてノード１０２として示される、高速ルータのインターネット「バックボーン」へのアクセス・ポイントとして働くノードである。アクセス・ノード１０２もまた、高速ルータ１０１と他のネットワーク・ノードとの間でデータ・パケットをルーティングするように機能することから、ルータであるが、それらは典型的には低速接続を用いている。アクセス・ノードは、例えば、電話線又は手数料を徴収するその他の接続を通じてインターネットへのアクセスを提供する公共のインターネット・サービス・プロバイダであってもよく、又は、大企業の内部システムのためのアクセス・ノードであってもよい。普通は、各々のアクセス・ノード１０２は、冗長性を与えるために多数の高速ルータ１０１に接続されるが、これは必要条件ではない。各々のアクセス・ノードは、典型的には、多数のホスト・コンピュータ・システム１０３Ａ、１０３Ｂ（総称して参照番号１０３と呼ばれる）へのアクセスを提供し、そのうちの２つのみが図１に示されている。ホスト１０３は、インターネットに接続されて、インターネット上で伝送されるデータ・パケットをソースとして生成するか又は最終宛先として受信するコンピュータ・システムである。ホスト１０３は、ＰＣに対する大型メインフレーム・システムからハンドヘルド・ポータブル装置に至るまでのいずれかのタイプのコンピュータ・システムとすることができ、単一のホストがシステムのクラスタを表してもよい。ホストは、インターネットにアクセスするのに用いられる１つのアクセス・ノード１０２のみを有する（その場合は冗長ではない）ことが多いが、冗長性を持たせるためにそうしたアクセス・ノードを多数有してもよい。ホストとアクセス・ノードとの間の接続は、（電話線又は無線リンクのような）比較的低速である場合が多いが、高速リンクとすることもできる。主にインターネット上で情報を提供するように機能する大型インターネット・サーバのような幾つかのコンピュータ・システムの場合、ホストは、高速ルータ１０１に直接接続され、自分自身のアクセス・ノードとして働くこともできる。
【００２２】
図１はインターネットの概念図として意図されており、実際にはインターネット上のノード及び接続の数は図１に示されるよりもはるかに多く、接続のトポロジーは変わる場合があることが理解されるであろう。さらに、説明を明確にするために図１には示されていない接続タイプ及びアクセス形式の階層がさらに存在してもよいことが理解されるであろう。すなわち、ホストがバックボーンの高速ルータ１０１に到達するために接続する多数のタイプ又はクラスのアクセス・ノード１０２が存在してもよく、異なるホストが異なるレベルのアクセス・ノードで接続してもよい。厳密に言えば、インターネットは、それに結合される全ての装置を含み、ＰＣのような小さいコンピュータ・システムがインターネットにログオンしたときには、それがインターネット・ノードとなってアドレスを有する（しかしアドレスは単に一時的なものであってもよい）という意味でインターネットの一部である。インターネット・バックボーン及びアクセス・ノードのルータ及び接続は、インターネットと呼ばれる場合が多い、すなわち、インターネットは、コンピュータ・システムの分散処理ネットワークに対して通信媒体と見なされる。一般に、「インターネット」は、ここでは通信媒体を説明する後者の意味で用いられるが、文脈に応じて、前者の意味で使用される場合がある。
【００２３】
ネットワーク・システムは、典型的にはクライアント・サーバ・アーキテクチャに従う。「クライアント」は、関係のない別のクラス又はグループのサービスを利用するクラス又はグループのメンバーである。インターネットなどのコンピュータ・ネットワークの分野では、クライアントとは、別のプログラムによって提供されるサービスを要求するプロセスである（すなわち、広義にはプログラム又はタスクである）。クライアント・プロセスは、他のプログラム又はサーバ自体に関し、いかなる動作の詳細も知ることを要さずに、要求されたサービスを利用する。ネットワーク・システムにおいては、クライアントは、普通は、別のコンピュータ（すなわちサーバ）によって提供される共有ネットワーク・リソースにアクセスするコンピュータである。
【００２４】
サーバは、典型的には、インターネットのような通信媒体を介してアクセス可能な１つ又は複数の遠隔コンピュータ・システムである。サーバは、情報ソースを走査し、検索する。ユーザによるそうした要求に基づいて、サーバは、クライアント・プロセスに対するサーバ応答として、フィルタにかけられた電子情報をユーザに提示する。第１のコンピュータ・システムにおいてクライアント・プロセスをアクティブとし、第２のコンピュータ・システムにおいてサーバ・プロセスをアクティブとすることができ、これらのプロセスは、通信媒体上で互いに通信し、多数のクライアントがサーバの情報収集能力を利用できるようになる。したがって、サーバは、ディスク・ドライブ上のデータのようなネットワーク及びそのリソースの全て又は一部へのアクセスを制御する管理ソフトウェアを走らせるネットワーク・コンピュータとして記述することができる。サーバとして作動するコンピュータにより、ネットワーク上でワークステーションとして働く複数のコンピュータがリソースを利用できるようになる。
【００２５】
クライアントとサーバは、ハイパー・テキスト伝送プロトコル（ＨＴＴＰ）によって提供される機能を利用して互いに通信することができる。ワールド・ワイド・ウェブ（ＷＷＷ）又は単に「ウェブ」は、このプロトコルに準拠するインターネット上の全てのサーバを含み、これらはユニバーサル・リソース・ロケータ（ＵＲＬ）アドレスを介してクライアントにアクセス可能である。インターネット・サービスは、用いられるプロトコルとオブジェクト・パス名との２つの基本要素を有するユニバーサル・リソース・ロケータを指定することによって、アクセスすることができる。例えば、ユニバーサル・リソース・ロケータ・アドレス「ｈｔｔｐ：／／ｗｗｗ．ｕｓｐｔｏ．ｇｏｖ」は、米国特許商標局のサーバのハイパー・テキスト伝送プロトコル（「ｈｔｔｐ」）及び名称（「ｗｗｗ．ｕｓｐｔｏ．ｇｏｖ」）を指定する。サーバ名は、固有の数値（すなわちＴＣＰ／ＩＰアドレス）と関連付けられる。サーバは、実際には全体としてサーバ機能を果たす多数のコンピュータ・システムを含むものとすることができるが、サーバは、それが応答する単一のＴＣＰ／ＩＰアドレスを有するという意味で単一の「ホスト」であり、サーバの正確な構造（装置の数、機能の区分など）は、クライアントの目から隠されている。
【００２６】
クライアント内では第１のプロセスがアクティブであり、この第１のプロセスは、ＨＴＴＰセッションを開始するためにサーバとの接続を確立し、確立されたＨＴＴＰセッション内でサーバにＨＴＴＰ要求を送信し、ＨＴＴＰセッション内でサーバからＨＴＴＰ応答を受信し、情報をユーザに提示する。通常、この第１のプロセスは、対話型ブラウザ・アプリケーションである。サーバ自体は、情報をＨＴＴＰ応答の形でクライアントに提示するための、対応するサーバ・ソフトウェアを実行する。ＨＴＴＰ応答は、ハイパー・テキスト・マークアップ言語（ＨＴＭＬ）又は他のサーバ生成データから構成される「ウェブ・ページ」に対応する。
【００２７】
ブラウザは、サーバからウェブ・ページを取得し、それをクライアントにおけるユーザに表示する。「ウェブ・ページ」（「ページ」又は「ドキュメント」とも呼ばれる）は、典型的には、ＨＴＭＬなどのハイパー・テキスト言語で書かれたデータ・ファイルであり、テキスト、グラフィック・イメージ、さらにはそのデータ・ファイルと関連付けられた音声記録又はムービー・ビデオ・クリップのようなマルチメディア・オブジェクトを有するものとすることができるが、ウェブ・ページは、単なるイメージとすることもできる。ハイパー・テキスト・ページは、コントロール・タグ及びデータを含む。コントロール・タグは、構造、例えば、見出し、副見出し、段落、リスト、及びイメージの埋め込みを識別する。データは、ユーザに対して表示又は再生される、テキスト又はマルチメディアなどのコンテンツからなる。ブラウザは、コントロール・タグを翻訳し、コントロール・タグによって指定された構造に従ってデータをフォーマットして、ブラウザがユーザに表示するか、再生するか、又は他の方法で実行する、可視オブジェクトを生成する。コントロール・タグは、別のソースからページを取得して、それをコントロール・タグによって指定された場所に配置するようにブラウザに指示することもある。このようにして、ブラウザは、スプレッドシート、テキスト、ホットリンク、ピクチャー、サウンド、チャットルーム及びビデオ・オブジェクトなどといった多数のコンポーネントを含む可視オブジェクトを構築することができる。ウェブ・ページは、１つ又は複数の個別のファイルをアクティブなディレクトリ又はファイル構造にロードすることによって構成することができ、次に、グラフィカル・ユーザ・インターフェース内で可視オブジェクトとして表示される。
【００２８】
前述の簡単なケースでは、情報伝送は基本的に一方向であり、クライアント・ブラウザが（そのＵＲＬによって所望のドキュメントを識別することにより）情報を要求し、サーバがそれを提供するのみである。ＨＴＴＰセッション内でクライアントがサーバ指定フォーマットに従ってサーバに情報を提供することも可能である。サーバは、ウェブ上にＨＴＭＬフォームを提供することによって、クライアントからの情報が送信されるフォーマットを指定することができる。クライアント・ブラウザは、サーバにアクセスし、それがそのままいずれかのウェブ・ページとなるＨＴＭＬフォームを取得する。ブラウザは、ユーザに対話的表示を提供するためにＨＴＭＬフォームをフォーマットする。フォームは、典型的には、ユーザが入力データを指定することができる１つ又は複数の対話入力フィールドを含む。この入力データは、対話的入力フィールドにおいてユーザによって直接入力される（例えばクレジット・カード番号のような）テキスト・データ、又は、対話的入力フィールドにおいてユーザによって指定されたクライアント・システム上のファイルから得られるデータとすることができる。指定されたユーザ・データは、ＨＴＭＬフォーム仕様にしたがってフォーマットされる。（複数の部分とすることができる「フォーム・データ」として知られる）このフォーマットされたユーザ・データは、次に、ＨＴＴＰ要求においてサーバに送信される。次に、サーバは、フォーム・データを含む要求を処理し、クライアントに適切に応答する。
【００２９】
単一のＨＴＴＰセッションは、クライアントからサーバへ及びサーバからクライアントへ向かう多数のデータ交換を含み、データをクライアントに提供するだけでなく、サーバ又は他の同様のシステムによって維持されるデータを更新するようにサーバに要求することができるため、双方向的ＨＴＴＰセッション全体は、複雑な有限状態プロセスと見なすことができる。クライアントに適正にサービスするために、サーバは、典型的には、個々のアクティブなセッションの各々についてセッションパーシステントデータを維持し、このセッションパーシステントデータは、（ＨＴＴＰセッションの後続する双方向的データ交換の各々によって更新される場合もあるが）セッションの期間中、サーバ内に存続する。
【００３０】
詳細な説明
図面を参照すると（幾つかの図面においては、同様の部分には同様の番号を付す）、図２は、典型的なウェブ・サーバ環境のハイレベル図であり、本発明の好ましい実施形態に係る、ＨＴＴＰセッション負荷の特性を明らかにするためのものである。ウェブ・サービス企業は、コンピュータ・システムのクラスタ２０２（ここではウェブ・サーバと呼ばれる）を維持して、ウェブプレゼンスを提供する、すなわち、インターネット１００上でアクセス可能な情報の１つ又は複数の対話型ウェブ・ページを生成する。インターネットに接続された他の装置からみれば、ウェブ・サーバ２０２は、単一のホスト・システム１０３である。インターネット１００上で通信するクライアント２０１Ａ−Ｄ（ここではまとめて機構２０１と呼ぶ）は、ウェブ・サーバ２０２に対し、サービス要求を生成する。ウェブ・サーバ・システムの少なくとも１つは、インターネットに接続されたゲートウェイ２０３である。ウェブ・サーバはさらに、多数のセッション・サーバ・システム２０５Ａ−２０５Ｃ（ここではまとめて機構２０５と呼ぶ）と、少なくとも１つのセッション冗長データベース・システム２０６とを含む。ウェブ・サーバの種々のシステムは、ネットワーク２０４を介して互いに通信する。ネットワーク２０４は、イーサネット・ローカル・エリア・ネットワークのようなローカル・エリア・ネットワーク（ＬＡＮ）であることが好ましいが、他のネットワークも可能である。
【００３１】
動作時に、ゲートウェイ２０３は、インターネット上でウェブ・サーバ２０２を宛先とするデータ・パケットを受信する。ゲートウェイ２０３は、各々のデータ・パケットについてウェブ・サーバ２０２内の適切な宛先を判定する。詳細には、クライアント２０１とウェブ・サーバ２０２との間のＨＴＴＰセッション接続の確立を要求するパケットが到着したときに、ゲートウェイ２０３は、そのセッションを取り扱うセッション・サーバ・システム２０５を選択する。セッションが確立されると、同一セッション内の同一クライアントからのその後の通信は、一般に、当初選択されたセッション・サーバ・システムにルーティングされ、その結果、１つセッション・サーバ・システムのみがいずれかの特定のセッションを処理する。セッション・サーバ・システムにセッションを割り当てるゲートウェイ・システムは、当該技術分野では周知であり、その割り当ては、現在公知の又は後に開発されるいずれかのアルゴリズム又は基準に基づくものとすることができる。典型的には、割り当ては、セッション・サーバ間の負荷をバランスさせようとするものであるが、他の又は付加的な事項が考慮されることもある。ゲートウェイ２０３は、図２においてはインターネット１００とＬＡＮ２０４との間に置かれた単一システムとして表されているが、多数のシステム又は装置によってゲートウェイ機能が果たされてもよい。例えば、ルータが、インターネット１００とＬＡＮ２０４との間でデータをルーティングし、一方、ＬＡＮ２０４に接続された別個のシステムによって、異なるセッション・サーバにセッションを割り当てる機能が果たされてもよい。
【００３２】
セッション・サーバ２０５の機能は、ウェブ・サーバの代わりにセッション負荷を処理することである。セッション・サーバは、クライアントによって要求された情報を生成し、及び／又は、クライアントによって要求されたトランザクションを処理する。クライアントに送信される情報の場合には、このことは一般に、情報がＨＴＭＬドキュメントとして又はその他の適切なフォームでフォーマットされることを意味する。セッション・サーバは、要求されたすべてのサービスを単独で実行することができるが、より典型的には、セッション・サーバは、クライアントにサービスするために、データベース・システム２０７によって表される１つ又は複数の共有データベースにアクセスすることが必要となる。例えば、オンライン小売業者の場合、セッション・サーバは、小売業者のカタログを表すウェブ・ページのローカル・コピーを持つことができるが、一般には、顧客プロフィールを取得し、在庫を確認し、顧客の選択を記録し、オンライン商取引を完了するのに必要な他のすべての事項を行うために、共有データベースにアクセスすることが必要となる。幾つかの場合には、クライアントは単に共有データベースからの情報を必要としており、セッション・サーバは、主にデータベース・システム２０７にアクセスし、（例えばウェブ・ブラウザ上で見るために）データをクライアントに適したフォームでフォーマットするように機能する。セッション・サーバ２０５は、クライアント要求をサービスするためにクライアント２０１の代わりに共有データベース２０７にアクセスすることから、中間階層システム又は中間階層サーバと呼ばれることもある。
【００３３】
多数のセッション・サーバが用いるための共有データベースを維持するデータベース・システム２０７は、ウェブ・サーバ企業の一部であってもよく、又は、ウェブ・サーバ企業とは完全に無関係に維持されるデータベースであってもよい。データベース・システム２０７は、ウェブ・サーバ企業内部のデータベース・システムの場合に典型的なようにＬＡＮ２０４に結合されて示されているが、インターネットを含むいずれかの通信リンク若しくはネットワーク又はそれらの組み合わせを介して、セッション・サーバ２０５と通信してもよい。
【００３４】
セッション・サーバ２０５とは別個の少なくとも１つのセッション冗長データベース・システム２０６は、ここでは冗長セッション・データベースとも呼ばれる冗長セッションパーシステントデータのデータベースを維持する。通常は、冗長セッション・データベースの目的は、データ損失を防止し、セッション・サーバ２０５の１つが使用不能状態になった場合にシームレスな回復をもたらすことである。詳細には、セッション・サーバ２０５が使用不能になった場合には、ゲートウェイ２０３は、クライアントから新しいデータ・パケットが到着したときに、使用不能セッション・サーバ上のアクティブなセッションの各々についてそれぞれの代替セッション・サーバを選択する。以前に確立されたセッションに関するデータ・パケットは、それらが関連するセッションのセッション識別子を含む。このセッションが、現在使用不能なセッション・サーバに既に割り当てられていたと判定されると、ゲートウェイは、それを後続セッション・サーバに割り当てて、適宜ルーティングする。後続セッション・サーバは、セッション冗長データベース・システム２０６にアクセスして、（そうでなければ使用不能セッション・サーバによって維持されていた）セッションのセッションパーシステントデータを得る。後続セッション・サーバは、冗長セッション・データベースのデータからセッションの状態を再構成して、使用不能なサーバがやり残したセッションの処理を続行することができる。クライアントは、セッション・サーバの代替が行われたことを決して知ることはなく、クライアントにとってはプロセス全体がシームレスに見える。
【００３５】
本発明の好ましい実施形態によれば、セッション冗長データベース・システム２０６における冗長セッション・データベースは、その本来の目的の範囲外の付加的な目的のために用いられる。詳細には、セッション冗長データベースのデータは、ウェブ・サーバ２０２内のセッション負荷の特性を明らかにするために分析され、使用される。セッション冗長データベース・システムの動作を、ここでさらに詳しく説明する。
【００３６】
図２は、典型的なウェブ・サーバ環境をハイレベルの一般概念で表すことを意図されており、そうした環境のすべてのコンポーネント又はウェブ・サーバ環境のすべての可能な組み合わせを詳細に表すようには意図されていない。図２の環境表現の多くの変化形が可能であり、特に以下のことが可能で、ここでの特定の変化形の説明は、限定的なものではなく単なる例であることが意図されている。説明する目的で単一のゲートウェイ２０３及び単一のＬＡＮ２０４が示されているが、単一のゲートウェイ・システム及び単一のＬＡＮの使用は、単一のコンポーネントの故障がウェブ・サーバ全体をダウンさせることがあるため、信頼性及び可用性を損なうことが明らかである。したがって、ウェブ・サーバ・クラスタのシステムの間で多数の冗長ゲートウェイ・システム及び多数の冗長通信経路を提供することが一般的である。さらに、データベース・システム２０７は単一のモノリシック・エンティティとして示されているが、実際には、分散方式でデータが格納され及び／又は動作が実行される多数のコンピュータ・システムを含むものとすることができる。実際には、すべてが同じセッション・サーバの組によってアクセスされる、異なる編成及びインターフェースを有する多数のデータベースが存在してもよく、１つ又は複数のデータベースは、多数のシステム上に冗長に格納されてもよい。ネットワーク２０４はローカル・エリア・ネットワークとして説明されるが、ネットワークは、種々のウェブ・サーバ装置が互いに通信できるようにする通信リンク、ネットワーク、又はネットワークの組み合わせのいずれかの組とすることができ、冗長リンクを含んでもよい。４つのクライアント２０１は、単一のユーザ・ワークステーションとして表されているが、クライアントは、ウェブ・サーバへのサービス要求を生成するいずれかのエンティティとすることができ、大きなマルチユーザ・システム上で実行するプロセスを含むことができ、さらに、クライアントの数は、変わる場合があり、典型的には図２において説明の目的で表された４つのクライアントよりはるかに多い。
【００３７】
図３は、好ましい実施形態に係る、ウェブ・サーバ２０２のコンピュータ・システム３００における主要なハードウェア・コンポーネントのハイレベル・ブロック図である。システム３００は、セッション・サーバ・システム２０５のハードウェア・コンポーネント、セッション冗長データベース・システム２０６のハードウェア・コンポーネント、又は、他の何らかのシステムのハードウェア・コンポーネントを表すことができる、一般的なシステム表現である。ＣＰＵ３０１は、命令を実行し、メイン・メモリ３０２からのデータを処理する、少なくとも１つの汎用プログラマブル・プロセッサである。メイン・メモリ３０２は、データがストレージからロードされるか又はそうでなければＣＰＵ３０１による処理のための、種々のメモリ技術のいずれかを用いるランダム・アクセス・メモリであることが好ましい。
【００３８】
１つ又は複数の通信バス３０５は、ＣＰＵ３０１と、メイン・メモリ３０２と、Ｉ／Ｏプロセッサ（ＩＯＰ）又はＩ／Ｏアダプタ（ＩＯＡ）としても知られる種々のＩ／Ｏインターフェース・ユニット３１１−３１４との間でデータを伝送するためのデータ通信経路を提供する。Ｉ／Ｏインターフェース・ユニットは、種々のストレージ及びＩ／Ｏ装置との通信をサポートする。例えば、端末インターフェース・ユニット３１１は、１つ又は複数のユーザ端末３２１−３２４の接続をサポートする。ストレージ・インターフェース・ユニット３１２は、１つ又は複数の直接アクセス・ストレージ装置（ＤＡＳＤ）３２５−３２７（これらは、典型的には回転式磁気ディスク・ドライブ・ストレージ装置であるが、ホストにとって単一の大型ストレージ装置として見えるように構成されたディスク・ドライブのアレイを含む他の装置とすることもできる）の接続をサポートする。Ｉ／Ｏデバイス・インターフェース・ユニット３１３は、プリンタ３２８及びファックス機３２９といった様々な他のタイプのＩ／Ｏ装置のいずれかの接続をサポートし、他のタイプ又は付加的なタイプのＩ／Ｏ装置を用いることもできることが理解される。ネットワーク・インターフェース３１４は、１つ又は複数の他のデジタル装置と通信するための１つ又は複数の外部ネットワーク３３０との接続をサポートする。ネットワーク３３０は、ネットワーク２０４又は多数のネットワークのいくつかの組のいずれかを表すものとすることができ、当該技術分野では公知の種々のローカル・エリア・ネットワーク又はワイド・エリア・ネットワークのいずれかとして具体化することができる。
【００３９】
図３はシステム３００の代表的な主要コンポーネントをハイレベルで示すように意図されており、個々のコンポーネントは図３に表されるものよりはるかに複雑な場合があり、図３に表されるもの以外のコンポーネント又は付加的なコンポーネントが存在してもよく、こうしたコンポーネントの数、タイプ、及び構成は変わる場合があり、大規模コンピュータ・システムは典型的には図３に表されるより多くのコンポーネントを有することを理解されたい。本明細書においては、こうした付加的な複雑形又は付加的な変化形の幾つかの特定の例が開示されており、これらは単なる例であって必ずしもこうした変化形のみである必要はないことが理解される。
【００４０】
図３には説明する目的で単一のＣＰＵ３０１のみが示されているが、コンピュータ・システム３００は、当該技術分野では公知のように、多数のＣＰＵを含んでもよい。メイン・メモリ３０２は、単一のモノリシック・エンティティとして図３に示されているが、メモリ３０２は、実際には、当該技術分野では公知のように、分散型及び／又は階層型とすることができる。例えば、メモリは、多数のレベルのキャッシュの形で存在してもよく、これらのキャッシュはさらに、１つのキャッシュが命令を保持する一方で別のキャッシュが１つ又は複数のプロセッサによって用いられる非命令データを保持するように、機能によって分けられてもよい。メモリはさらに、種々のいわゆる非均一メモリ・アクセス（ＮＵＭＡ）コンピュータ・アーキテクチャのいずれかで知られているように、分散させて、異なるＣＰＵ又はＣＰＵの組と関連付けることができる。通信バス３０５は、図３において単一のエンティティとして示されているが、実際には、種々のシステム・コンポーネント間の通信は、典型的にはより高速の経路がＣＰＵ３０１とメモリ３０２との間の通信のために用いられ、より低速の経路がＩ／Ｏインターフェース・ユニット３１１−３１４との通信のために用いられる、バス、インターフェースなどの複雑な階層によって実現される。バス３０５は、階層におけるポイント・ツー・ポイント・リンク、スター型又はウェブ型構成、多数の階層バス、並列経路及び冗長経路などといった、種々の形態のいずれかで構成してもよい。例えば、ＮＵＭＡアーキテクチャでは公知のように、通信経路は、ノードベースで構成される。バスは、例えば、業界標準のＰＣＩバス又は他のいずれかの適切なバス技術を用いることができる。種々のＩ／Ｏ装置につながる種々の通信経路とシステム・バス３０５とを隔てる多数のＩ／Ｏインターフェース・ユニットが示されているが、Ｉ／Ｏ装置の幾つか又はすべてを１つ又は複数のシステム・バスに直接接続することもできる。
【００４１】
図３に示されるコンピュータ・システム３００は、マルチユーザ「メインフレーム」コンピュータ・システムでは典型的なように、接続された多数の端末３２１−３２４を有する。接続されるデバイスの実際の数は変わる場合があり、本発明は、いずれかの特定のサイズのシステムに限定されない。コンピュータ・システム３００にアクセスするユーザ・ワークステーション又は端末はまた、ネットワーク３３０上のシステム３００に接続されて通信を行うことがある。あるいは、コンピュータ・システム３００は、接続される端末を含まないシステム、又は、単一のユーザ・ディスプレイとキーボード入力のみを有する単一のオペレータ・コンソールのみを含むシステムであってもよい。さらに、本明細書における本発明の特定の機能は、説明する目的で単一のコンピュータ・システムにおいて具体化されるものとして説明されるが、これらの機能は、本明細書において説明される異なる機能又はステップが異なるコンピュータ・システム上で実行される、互いに通信するコンピュータ・システムの分散型ネットワークを用いて実装することもできる。
【００４２】
種々のシステム・コンポーネントがハイレベルで説明され図示されたが、典型的なコンピュータ・システムは、図示されていない他の多くのコンポーネントを含み、これらは本発明の理解のために必須のものではないことを理解されたい。好ましい実施形態においては、コンピュータ・システム３００は、ＩＢＭｉ／Ｓｅｒｉｅｓ（商標）アーキテクチャに基づくコンピュータ・システムであり、本発明は他のコンピュータ・システム上に実装できることが理解される。
【００４３】
図４は、好ましい実施形態に係る、メモリ３０２のコンポーネントとして表される、セッション・サーバ２０５の主要なソフトウェア・コンポーネントの概念図である。オペレーティング・システム・カーネル４０１は、当該技術分野では公知のように、デバイス・インターフェース、メモリ・ページの管理、多数のタスクの管理及びディスパッチなどといった種々の低レベル・ソフトウェア機能を提供する、実行可能コード及び状態データである。特に、オペレーティング・システム４０１は、少なくとも１つのネットワーク・アクセス機能４０２を含む。ネットワーク・アクセス機能４０２は、ネットワーク・インターフェース３１４を通じて１つ又は複数の外部ネットワーク、具体的にはネットワーク２０４と通信するソフトウェアである。ネットワーク・アクセス機能４０２は一般に、セッション・サーバ・システム２０５において実行されるアプリケーションの代わりにネットワーク通信を取り扱い、セッション・サーバ・システム２０５は特に、中間階層セッション・アプリケーション４０５、４０６の代わりに機能を実行するアプリケーション・サーバ４０４を含む。ネットワーク・アクセス機能４０２は、オペレーティング・システム・カーネル４０１の一部として示されているが、別個のソフトウェア・モジュールとすることもできる。
【００４４】
セッション・サーバ機能部４０３は、ＨＴＴＰセッション内においてクライアントの代わりにサービスを実行する。セッション・サーバ機能部４０３は、必要に応じてクライアント要求を処理するためにクライアントの代わりに１つ又は複数の共有データベース２０７にアクセスすることから、中間階層機能部と見なすことができる。セッション・サーバ機能部４０３は、インターネット１００上でセッション・サーバ・システム２０５と通信する多数のクライアント２０１に対話型ワールド・ワイド・ウェブ・インターフェースを提示する。すなわち、セッション・サーバ機能部４０３は、クライアント・システム２０１において実行されるウェブ・ブラウザ・アプリケーションで閲覧するための対話型ウェブ・ページを、ＨＴＭＬ又は他の適切なフォーマットで生成する。クライアント２０１に対しては、セッション・サーバ機能部４０３はサーバとして機能し、クライアントは、セッション・サーバ機能部４０３の背後にあるいずれかのデータベース又は他のアプリケーションを認識しない。特に、クライアントは、冗長セッション・データを維持するいずれの機能又はアプリケーションも認識しない。
【００４５】
好ましい実施形態においては、セッション・サーバ機能部４０３は、アプリケーション・サーバ４０４と、１つ又は複数のセッション・サーバ・アプリケーション４０５、４０６（そのうち２つが図４に示されているが、その数は変わる場合があることが理解できる）とを含む。アプリケーション・サーバ４０４は、クライアント−サーバ環境において中間階層アプリケーションを一般にサポートするためのフレームワーク又はシェルであり、特にクライアントがインターネット上で中間階層にアクセスする対話型ウェブ・ブラウザ・アプリケーションである場合のアプリケーションをサポートするためのフレームワーク又はシェルである。他の機構のなかで、アプリケーション・サーバ４０４は、一般に用いられる種々のネイティブ・データベース・フォーマットでデータベース２０７にアクセスするための機能の組、すなわちそれぞれのＨＴＴＰセッション内でクライアント２０１との通信を取り扱うための機能の組（接続機能部）を含む。セッション・サーバ・アプリケーション４０５、４０６は、クライアント１０３の代わりに特定のサーバ機能の一部の組を実行するために開発されたコードである。アプリケーション・サーバ４０４は、入ってくるクライアント要求データをアプリケーション４０５、４０６に与える。これらの要求は、共有データのデータベース２０７にアクセスすることが必要な場合が多いが、幾つかのアプリケーションはそうしたアクセスを必要としないことがある。アプリケーション４０５、４０６は、データベースへのアクセスを必要とする場合には、アプリケーション・サーバ４０４の接続機能部を呼び出してデータベース・システム２０７にアクセスする。アプリケーション・サーバ４０４は、データベースからの応答を受信し、それらの応答は一般に適切なアプリケーションに転送される。クライアントへのデータ応答は、アプリケーション４０５、４０６によって生成され、アプリケーション・サーバ４０４を通じて伝送される。アプリケーション４０５、４０６は、アクセスされるアプリケーション又はデータベースから独立した共通インターフェース４０７を通して、アプリケーション・サーバ４０４と通信する。好ましい実施形態においては、インターフェース４０７は、ＪＡＶＡ  ２  Ｅｎｔｅｒｐｒｉｓｅ  Ｅｄｉｔｉｏｎ（Ｊ２ＥＥ）インターフェース仕様に準拠するが、他のインターフェースが用いられてもよい。好ましい実施形態においては、アプリケーション・サーバ４０４は、ＩＢＭ  ＷＥＢＳＰＨＥＲＥ（商標）アプリケーション・サーバであり、他の形式のアプリケーション・サーバ機能部を用いることもできることが理解される。
【００４６】
アプリケーション・サーバ４０４は、ＨＴＴＰセッションパーシステントデータを維持するセッション・オブジェクト・マネージャ機能４０８を含む。好ましくは、セッションパーシステントデータは、多数のセッションパーシステントデータ・オブジェクト４１１−４１４の形で維持され、詳細には、各々のセッションパーシステントデータ・オブジェクト４１１−４１４は、Ｓｕｎ  Ｍｉｃｒｏｓｙｓｔｅｍｓによって広められたＥｎｔｅｒｐｒｉｓｅ  ＪＡＶＡ  Ｂｅａｎ（ＥＪＢ）仕様に準拠するデータ構造であることが好ましく、セッションパーシステントデータは他の形式で維持できることが理解される。アクティブなセッションの各々について１つのセッションパーシステントデータ・オブジェクトが存在する。セッションパーシステントデータ・オブジェクト４１１−４１４の各々は、セッションの寿命の間セッション・サーバ内に存続し、典型的には、セッションが終わるときに消去される。図４には４つのセッションパーシステントデータ・オブジェクト４１１−４１４が示されており、セッション・オブジェクトの数と、いずれかの所与の時点にけるアクティブなセッションの数は、典型的には、はるかに多いことが理解される。セッション・オブジェクト・マネージャ４０８は、セッションパーシステントデータ・オブジェクトからデータを取得し、データを更新することなどのために、該セッションパーシステントデータ・オブジェクトにアクセスするアクセス機能を備える。セッション・オブジェクト・マネージャ４０８はまた、新しいセッションパーシステントデータ・オブジェクトを割り当て、セッションが終わるときにオブジェクトの割り当てを解除する。
【００４７】
アプリケーション・サーバ４０４はさらに、データ・オブジェクト４１１−４１４におけるセッションパーシステントデータについて冗長性を自動的に提供する、セッションパーシステントデータ冗長機能４０９を含む。詳細には、セッションパーシステントデータ・オブジェクト４１１−４１４が割り当てられ、修正され、割り当て解除される際に、冗長機能４０９が、割り当て、修正、及び割り当て解除を含む冗長データをネットワーク２０４上のセッション冗長データベース・システム２０６に伝送する。冗長システム２０６は、冗長機能４０９からのこの冗長データを用いて、冗長セッション・データのデータベースを維持する。冗長システム２０６は、冗長システム２０６における冗長セッション・データのデータベースが一般にウェブ・サーバにおけるすべてのアクティブなＨＴＴＰセッションのそれぞれの現在のセッション状態を表すように（伝送遅延を無視する、他の処理遅延などをキューに入れるなど）、ウェブ・サーバ２０２を形成するシステム・クラスタのすべてのサーバ・システムから冗長データを受信する。
【００４８】
冗長機能４０９は、クライアント２０１へ送出されるメッセージを伝送するのとほぼ同時に、冗長データ更新メッセージを冗長システム２０６に伝送する。すなわち、セッション・サーバにおける処理の結果としてのセッションパーシステントデータの変化は、セッション・サーバがクライアントへの応答を伝送する準備ができるまで、セッション・サーバ２０５に保持され蓄積される。応答がクライアントに伝送されたときに、冗長機能４０９は同時に、蓄積されたセッションパーシステントデータの変化を冗長システム２０６に伝送する。このようにして、クライアントのそれぞれからのセッション・データ状態のみが冗長システム２０６に維持される。
【００４９】
セッション・サーバ２０５は、典型的には、図４には示されていない付加的なデータを含む。例えば、セッション・サーバ２０５は、クライアントへの応答を生成する際に、共有データベース・システム２０７からの幾つかのデータ、及び／又は、セッション・サーバ・アプリケーション４０５、４０６によって用いられる幾つかのウェブ・ページをキャッシュすることができる。様々な他の状態データは、セッション・サーバによって維持することができる。
【００５０】
図５は、好ましい実施形態に係る、メモリ３０２のコンポーネントとして表される、セッション冗長データベース・システム２０６の主要なソフトウェア・コンポーネントの概念図である。オペレーティング・システム・カーネル５０１及びネットワーク・アクセス機能５０２は、それぞれ、セッション・サーバ・システム２０５のオペレーティング・システム・カーネル４０１及びネットワーク・アクセス機能４０２と同様の機能を提供する。提供される機能は同様であるが、オペレーティング・システム４０１及び５０１は必ずしも同じものである必要はない（しかしながら、それらは同じものとすることもできる）。ネットワーク・アクセス機能５０２は、ネットワーク・インターフェース３１４を通じて、具体的にはネットワーク１０４を含む１つ又は複数のネットワークに通信する。ネットワーク・アクセス機能５０２は、一般に、具体的にはデータベース管理システム５１１を含む冗長データベース・システム２０６において実行されるアプリケーションの代わりに、ネットワーク通信を取り扱う。ネットワーク・アクセス機能５０２は、オペレーティング・システム・カーネル５０１の一部として示されているが、別個のソフトウェア・モジュールとすることもできる。
【００５１】
構造化データベース５０３は、種々のセッション・サーバ２０５の代わりに冗長セッションパーシステントデータを維持する。データベース５０３は、当該技術分野では周知のように、１つ又は複数のテーブル５０４（図５においてはそのうち１つが示されている）を含み、各々のテーブルは複数のエントリ又はレコードを有し、各々のエントリは少なくとも１つの（普通は多くの）フィールドを含む。データベース・テーブル５０４（又は複数のテーブル）は、特定のセッションを再構成するためにアクセス可能な方法で編成された冗長セッションパーシステントデータを含む。１つ又は複数のデータベース・テーブルと関連付けられるのは、メタデータと呼ばれることもある１つ又は複数の補助データ構造５０５−５０８である。補助データ構造は、データベース及びその中のデータの構造を特徴付けるものであり、データベース管理に関係する種々のタスクにおいて、特にデータベースに対するクエリを実行するのに役立つ。補助データ構造の例として、データベース・インデックス５０５、ヒストグラム５０６、及び履歴データ５０７が挙げられており、他のタイプのメタデータが存在してもよいことが理解される。
【００５２】
データベース管理システム５１１は、データベース５０３の管理のための基本機能を備える。データベース管理システム５１１は、理論上は、関連情報を有することもそうでないこともある任意の数のデータベース・テーブルをサポートするが、図５には１つのテーブルのみが示されている。データベース管理システム５１１は、ユーザが、データベースを定義すること、データベースの定義を変更すること、データベースの記録を生成し編集し削除すること、データベースから記録を取得すること、データベース・インデックスを定義することなどといった基本的なデータベース操作を実行できるようにすることが好ましい。
【００５３】
データベース管理システム５１１は、データベースを管理するための一般的に用いられる様々な機能を有する汎用データベース管理システムであることが好ましい。すなわち、データベース５０３は、冗長セッションパーシステントデータを維持する目的で存在し、したがって他のデータベースにおいて用いられる特定の機能を必要としなくてもよいが、完全な機能を有する汎用データベース・ソフトウェアを用いて実装されることが好ましい。データベース管理ソフトウェアは、（特にセッションパーシステントデータのために設計された特注のデータベース・ソフトウェアとは対照的に）ほぼあらゆるタイプのデータベースを管理するように設計された汎用データベース・マネージャであるため、これらの機能はデータベース管理ソフトウェアに存在する。
【００５４】
データベース管理システム５１１によってサポートされる機能の中には、外部プロセスからコマンドを受け取るためのアプリケーション・プログラミング・インターフェース（ＡＰＩ）５１２、データベースのデータに対する複雑なクエリを実行するためのクエリ・エンジン５１３、及び、データベースのアクティビティを監視して履歴メタデータ５０７の履歴統計情報を生成するためのモニタ５１４がある。データベース管理システム５１１はさらに、より高度な様々なデータベース機能のいずれかを含んでもよい。図５においては、データベース管理システム５１１は、オペレーティング・システム・カーネル５０１とは別個のエンティティとして表されているが、幾つかのコンピュータ・アーキテクチャにおいては、種々のデータベース管理機能がオペレーティング・システムと統合されることが理解されるであろう。
【００５５】
内部状態情報及び他のデータに加えて、データベース管理システム５１１は、実行の間に、データ構造５０８−５０９として表される多くの一時データ構造を生成することができる。特に、これらの一時構造は、中間クエリ結果を保持するためにクエリ実行の間に生成される場合が多い。こうした一時構造の数は、大きく変わる場合があり、極めて多くなることがある。
【００５６】
図５においては、１つのデータベース・テーブル５０４と、１つのインデックス５０５と、１つのヒストグラム５０６と、１つの履歴データ・テーブル５０７とを含む１つのデータベース５０３が示されているが、こうしたエンティティの数は変わる場合があり、極めて多くなることがある。コンピュータ・システムは、多数のデータベース・テーブルを含んでもよく、それに、多数のインデックス、ヒストグラム、又は図示されていない他の補助データ構造を関連付けることができる。あるいは、図５に表される幾つかのエンティティは、すべてのデータベースに存在していなくてもよい。図５においては、データベース管理システム５１１は、データベース５０３の一部として表されているが、実行可能コードであるデータベース管理システムは、「データベース」すなわちデータとは別個のエンティティであると見なされることもある。
【００５７】
好ましい実施形態においては、別個のセッション・アナライザ５１５は、セッション・サーバ２０５におけるセッション負荷の特性を明らかにするために、データベース５０３からデータを取得する。セッション・アナライザ５１５は、図５においては、セッション冗長データベース・システム２０６内に存在するものとして表されている。しかしながら、データベース５０３から独立したソフトウェア・エンティティであるセッション・アナライザ５１５は、ＬＡＮ２０４に接続された他の何らかのシステム上に存在するか、又は、より遠隔に接続されたシステム上に存在することもできる。セッション・アナライザ５１５は、典型的には、システム管理者又はウェブ・サーバ企業のそれに相当する者によって用いられる機能部であり、一般に公衆が利用可能なものではない。セッション・アナライザ５１５は、コマンドを入力し結果を見るための対話型ユーザ・インターフェース５１６を含むことが好ましい。セッション・アナライザ５１５は、ネットワーク上で接続された遠隔端末からアクセスすることができるが、一般にアクセスは制限されることになり、システム２０６のローカル端末からのみアクセス可能とすることができる。
【００５８】
セッション・アナライザ５１５は、データ・マイニング機能５１７を含み、必要に応じて、ルール・ベースのインテリジェント推論機能５１８を含む。データ・マイニング機能５１７は、セッション負荷の特性を明らかにするのに役立つデータを収集する。特に、データ・マイニング機能は、データベースのクエリ、データベース・アクティビティの監視などを実行するために、標準データベース管理機能を用いてＡＰＩ５１２を通じてデータベース管理システム５１１にアクセスし、データベース５０３から情報を取得する。これらの機能は、上述のようにデータベース管理システム５１１において利用可能であるが、通常は、冗長セッションパーシステントデータを維持し提供するためには用いられない。マイニング機能５１７によってマイニングされたデータは、時間の経過とともに蓄積され、履歴データとして履歴データ・ファイル５１９に保存することができる。インテリジェント推論機能５１８は、データ・マイニング機能５１７によって収集されたデータを用いてセッション・システム２０５及び／又は冗長システム２０６の設定可能なチューニング・パラメータを変更するためのチューニング推奨（tuning recommendation）をトリガする、ルール・ベースのエキスパート・システムである。セッション・アナライザ機能５１５は、本明細書においてさらに詳しく説明される。
【００５９】
図４及び／又は図５においては、種々のソフトウェア・エンティティは、別個のエンティティとして、又は他のエンティティ内に含まれるものとして、表されている。しかしながら、この表現は単なる説明のためであって、特定のモジュール又はデータ・エンティティを別個のエンティティ又は共通のモジュール若しくはモジュールのパッケージの一部とすることができると理解される。さらに、図４及び図５の概念的な表現においては、特定の数及びタイプのソフトウェア・エンティティが示されているが、こうしたエンティティの実際の数は変わる場合があり、特に、複雑なウェブ・サーバ環境においては、こうしたエンティティの数及び複雑さは典型的には極めて大きいことが理解される。さらに、図４及び図５においては、種々のソフトウェア・コンポーネントは、２つのコンピュータ・システム上に示されているが、これらのエンティティは、２つ以外の多くのシステムに含まれてもよい。
【００６０】
図４及び図５のソフトウェア・コンポーネントは、メモリ３０２に存在するものとして概念的に示されているが、コンピュータ・システムのメモリは、一般にすべてのプログラム及びデータを同時に保持するには小さすぎるものであり、情報は、典型的には、回転磁気ディスク・ドライブのような１つ又は複数のマス・ストレージ装置を含むデータ・ストレージ装置３２５−３２７に格納され、情報は、必要に応じてオペレーティング・システムによってメモリ内にページ化されることが理解される。特に、データベース５０３は、典型的にはメモリにロードするには大きすぎるものであり、典型的には、データベース・レコードの総数のうちのほんの一部が一度にメモリ内にロードされる。データベース５０３全体は、典型的には、ディスク・ストレージ３２５−３２７に記録される。さらに、図４及び図５の概念的表現は、いずれかの特定のメモリ編成モデルを意味することは意図されておらず、システム２０５又はシステム２０６は、単一アドレス空間仮想メモリを利用するか、又は、オーバーラップする複数の仮想アドレス空間を利用できることが理解される。
【００６１】
好ましい実施形態によれば、セッション・サーバ２０５上で実行されるセッション・アプリケーション４０５、４０６は、クライアントのトランザクション要求を処理する。セッション・アプリケーション４０５、４０６は、アプリケーション・サーバ４０４の機能を用いて、セッション状態データが維持されるセッションパーシステントデータ・オブジェクト４１１−４１４を管理する。アプリケーション・サーバ４０４は、セッションの間に変化が生じたときにセッションパーシステントデータ・オブジェクト４１１−４１４の状態データをセッション冗長データベース・システム２０６に自動的にバックアップして、冗長セッションパーシステントデータベース５０３が現在のセッション状態を反映し、データベースへの変化がセッション・アクティビティを反映するようにする。
【００６２】
図６は、好ましい実施形態に係る、クライアント要求をサービスし、セッション状態データを維持するプロセスをハイレベルで示すフロー図である。図６を参照すると、フロー図は、縦方向に走る３つの部分に分割されており、これらは、クライアント２０１、セッション・サーバ２０５、及びセッション冗長データベース・システム２０６の各々において実行されるアクションを示す。
【００６３】
クライアントは、ウェブ・サーバからの遠隔サービスについての要求を作成し、その要求をインターネット上でウェブ・サーバに伝送して、ウェブ・サーバにおけるセッションを開始する（ステップ６０１）。好ましい実施形態においては、クライアントは、対話型ウェブ・ブラウザ・プロセスを実行し、最初の要求は、典型的には、ウェブ・サーバによって維持されるホーム・ページなどのウェブ・ページにアクセスするための要求である。ウェブ・サーバのゲートウェイにおいて要求が受け取られると、セッションが生成され、その要求がセッション・サーバに割り当てられる（ステップ６０２）。次に、セッション・サーバは、クライアントのサブミッションを処理して、適切な応答を生成する（ステップ６０３）。処理は、セッション・サーバ・アプリケーション及び要求の性質に応じて、任意の複雑さの任意の数のステップを含むものとすることができる。ステップ６０３によって表されるサブミッションの処理は、必要に応じて、共有データベース・システム２０７のデータにアクセスすることを含んでもよい。要求の処理は、セッション状態を記録するためにセッションパーシステントデータ・オブジェクトを割り当てることと、必要なときにセッションパーシステントデータを更新することを含む。
【００６４】
クライアント・サブミッションの処理が終了したときに、セッション・サーバ２０５は、クライアントに応答を伝送する（ステップ６０４）。クライアントのブラウザは、応答を受信し、それをクライアントが閲覧できる形式（ウェブ・ページ）に表現する（ステップ６０５）。ステップ６０４においてクライアントに応答を伝送するのと同時に、セッション・サーバは、セッション冗長データベース・システム２０６にもセッション状態更新メッセージを伝送する。メッセージは、セッション・オブジェクトが新しいセッションのために割り当てられ、現在のセッション状態データを含むことを示す。メッセージに応答して、冗長システム２０６は、新しいセッションのための新しいエントリをデータベース５０３に生成し、この新しいデータベース・エントリは、セッションパーシステントデータ・オブジェクトに含まれるセッション状態データを記録する（ステップ６０７）。データベース５０３のエントリは、セッション・サーバの使用不能時に新しいセッションパーシステントデータ・オブジェクトを再構成できるようにすべてのセッションパーシステントデータを記録するが、セッションパーシステントデータ・オブジェクトに用いられる同一のデータ構造又はフォーマットを用いるすべてのデータを必ずしも記録するわけではない。
【００６５】
次に、クライアントは、１つ又は複数の追加のデータ・サブミッションを作成し、それらをウェブ・サーバに伝送することによって、対話型セッションを続行することができる（ステップ６０６）。これらの追加のサブミッションは、セッション・サーバによって受信され、処理されて、応答が生成される（ステップ６０８）。すでに述べたように、処理は、必要に応じて共有データベース・システム２０７のデータにアクセスすることを含む。要求の処理は、必要なときにセッションパーシステントデータ・オブジェクトに記録されたセッション状態を更新することを含む。
【００６６】
ステップ６０８においてクライアント・サブミッションの処理が終了すると、セッション・サーバ２０５は、応答をクライアントに伝送する（ステップ６０９）。クライアントのブラウザは、応答を受信し、それをクライアントが閲覧できる形式（ウェブ・ページ）に表現する（ステップ６１０）。ステップ６０９においてクライアントに応答を伝送するのと同時に、セッション・サーバは、セッション冗長データベース・システム２０６にも、セッションパーシステントデータが更新されたことを示す、更新されたデータを含むセッション状態更新メッセージを伝送する。メッセージに応答して、冗長システム２０６は、現在のセッションについてのデータベース５０３内のエントリを更新する（ステップ６１１）。サブミッションを作成し、サブミッションを処理し、応答するこのプロセスは、セッション内で何度でも続行することができる。
【００６７】
一般にステップ６１２として表されているように、一般に、クライアントによるいずれかのアクティビティのないタイムアウト又はクライアントによる明示的な接続解除の結果として、いずれかの時点でセッションが終了する。セッション・サーバのアプリケーション・サーバ４０４は、セッション・イベントの終了を検出したときに、セッションパーシステントデータ・オブジェクトの割り当てを解除し、セッションが終了したことを示すメッセージをセッション冗長データベース・システムに送信する（ステップ６１３）。冗長システムは、セッション・データベースの対応するエントリを削除することによって応答する（ステップ６１４）。
【００６８】
図７及び図８は、好ましい実施形態に係る、冗長セッションパーシステントデータ５０３のデータベースなどからデータを抽出してセッション負荷の特性を明らかにするプロセスをハイレベルで示すフロー図である。図７及び図８のフロー図は、縦方向に走る３つの部分に分割されており、これらは、セッション・アナライザ５１５、データベース５０３、及び有用なデータを得ることができる他の何らかのエンティティを示す。
【００６９】
図７及び図８を参照すると、対話型ユーザ・インターフェース５１６を通じてセッション・アナライザ５１５と対話するシステム管理者などのユーザは、セッション負荷の特性を明らかにするのに役立つ特定のデータ、特にデータベース５０３の動作に関するデータの監視及び収集を開始する（ステップ７０１）。一般に、単独で又は組み合わせて用いることが可能な、関連するデータを収集することができる多くの方法がある。
【００７０】
関連するデータを収集するための第１の方法においては、セッション・アナライザ５１５は、適切なＡＰＩ５１２を通じてデータベース５０３を呼び出し、内部モニタ５１４をアクティブにする。次に、モニタは、履歴統計値の収集を開始し、これらのデータは履歴データ５０７としてデータベース内に保存される（ステップ７０３）。モニタ５１４は、典型的には、大規模データベース管理システムのなくてはならない部分であり、クエリを最適化すること、データベース性能を分析することなどのために統計値を収集するのに役立つ。幾つかのデータベースにおいては、モニタは、デフォルトでアクティブにされていてもよく、又は、必ずしもセッション・アナライザ５１５を通じて明示的にアクティブにする必要がないように、他の手段によってアクティブにされていてもよい。統計値は、通常は、ある間隔で収集される。例えば、ある間隔で受信されたデータベース更新動作の数、これらの更新のサイズなどを用いて、その間隔における平均到着速度、平均サイズなどを計算することができる。モニタは、ステップ７０４として示されるタイム・ラグの間に積極的に統計値を収集する。タイム・ラグは、前もって指定することができるが、より典型的には、モニタは単に無期限にアクティブにされ、ある時間が経過した後で、ユーザは、履歴データに対する１つ又は複数のクエリを走らせることによって、履歴データを取得する次のアクションを開始する。セッション・アナライザ５１５は、適切なＡＰＩ５１２を用いてデータベース管理システム５１１を呼び出して、データ・マイナ５１７によって指定された１つ又は複数のクエリを実行し（ステップ７０５）、データベース管理システムは、クエリ・エンジン５１３を起動して１つ又は複数のクエリを実行し、クエリ結果をセッション・アナライザに戻す（ステップ７０６）。
【００７１】
関連するデータを収集するための第２の方法において、セッション・アナライザ５１５のデータ・マイナ５１７は、適切なＡＰＩ５１２を通じてクエリ・エンジン５１３を呼び出すことによりデータベースに対するクエリを周期的にサブミットすることによって、独自の履歴統計値を作る（ステップ７０７）。次に、クエリ・エンジンは、クエリを実行し、結果をセッション・アナライザ５１５に戻す（ステップ７０８）。データ・マイナ５１７は、結果（又は、結果から抽出されたデータ）を、保存された履歴クエリ結果データ５１９として保存する（ステップ７０９）。履歴データは、ステップ７０７−７０９を定期的に繰り返すことによって蓄積される（分かりやすくするために、ステップ７１０として省略形で表されており、ステップ７０７−７０９は、何回も繰り返される場合があることが理解される）。説明のために、保存された履歴クエリ結果５１９は、データベース５０３の外にあるファイル又は他のデータ・エンティティとして示されている。こうした方法でデータを保存することができるが、さらに、データをデータベース５０３の一部として保存する、すなわち結果データ５１９を保持するために１つ又は複数の付加的なデータベース・テーブルを定義すること、並びに、データベース管理システム５１１のＡＰＩ５１２及びクエリ・エンジン５１３を用いて保存された結果データ５１９にアクセスすることが可能である。
【００７２】
関連するデータを収集するための第３の方法においては、前述の第２の方法と同じであるが、クエリを周期的にサブミットして履歴データを保存することを必要とせずに、同時に負荷のスナップショットを得ることができる。すなわち、データ・マイナ５１７は、現在のセッション負荷状態に関する情報を得るために適切な１つ又は複数のクエリを構成し、適切なＡＰＩ５１２を通じてクエリ・エンジン５１３を呼び出すことによってデータベースに対するクエリ（又は複数のクエリ）をサブミットする（ステップ７１１）。次に、クエリ・エンジン５１３は、クエリを実行し、結果をセッション・アナライザ５１５に戻す（ステップ７１２）。
【００７３】
関連するデータを収集するための第４の方法においては、データ・マイナ５１７は、オペレーティング・システム５０１の特定の機能を呼び出して、冗長システム２０６について比較的静的な設定データを得ることができ、同様に、オペレーティング・システム４０１又はアプリケーション・サーバ４０４の類似の機能を遠隔的に呼び出して、セッション・サーバ・システム２０５について静的な設定データを得ることができる。適用可能なオペレーティング・システム、アプリケーション・サーバ、又は他のエンティティは、要求された設定情報によって応答する（ステップ７１４）。
【００７４】
好ましい実施形態においては、収集されるデータは、以下のいずれか又はすべてを含むものとすることができる。
データベース更新動作数：
この数は、短い間隔で、比較的長い間隔で、又は多数の間隔にわたって多数回、測定することができる。この数は、すべてのセッション・サーバについて集約するか、又は、各々のサーバについて個別に得ることができる。更新動作の数は、応答がクライアントに伝送されたときにセッション・サーバにおいてセッション状態が更新された回数に直接関連する。これは、セッション・サーバのアクティビティ・レベルの基本的な尺度である。
【００７５】
平均更新サイズ：
この数字もまた、１つ又は複数の間隔にわたって測定することができ、すべてのサーバについて集約するか、又は、各々について個別に得ることができる。更新のサイズは、各々の更新について変化したセッションパーシステント状態データの量である。これは、全セッション負荷の特性を明らかにするのにも役立ち、過度に大きい数字は、セッション持続状態が非効率に編成又は維持されていることを示している可能性がある。平均更新サイズに加えて、ピーク・サイズを報告すること、及び／又は、更新サイズのヒストグラムを生成することも可能である。
【００７６】
平均行サイズ：
行サイズは、データベースの単一セッションについてのセッションパーシステントデータ量であり、これは、行ごとに大きく変わる場合がある。行サイズは、セッション・サーバにおけるセッションパーシステントデータ・オブジェクト４１１−４１４のサイズに密接に関係するが、データ・オブジェクトのデータは異なる形で構造化されることがあるため、２つの行サイズは同一ではない。特に、行サイズは、各々のセッションによって消費されるセッション持続メモリの量の一般的指標である。行サイズは、同時に測定しても、多数の読み取り値を平均してもよい。行サイズは、セッション・サーバごとに報告されても、すべてのセッション・サーバについて集約されてもよい。平均行サイズに加えて、ピーク・サイズを報告すること、及び／又は、行サイズのヒストグラムを生成することも可能である。
【００７７】
全データベース・サイズ、すなわち行数：
行数として測定することができるセッションパーシステントデータの総量は、平均行サイズを与える。全サイズは、セッション・サーバのメモリがセッションパーシステントデータによって消費される程度を示す。行数は、セッション・サーバごとに報告される場合も、集約される場合もある。行数は、同時に又は多数の時点で報告されてもよい。
【００７８】
特定の列についての平均列サイズ：
列サイズは、特定のフィールドにおける平均データ量であり、これは、フィールドごと及び行ごとに大きく変わる場合がある。列サイズは、メモリの使用パターンを分析し、過度のメモリ量を使用する特定の列（フィールド）を識別するのに役立つ。列サイズは、同時に測定しても、多数の読み取り値にわたって平均してもよい。列サイズは、セッション・サーバごとに報告されても、すべてのセッション・サーバについて集約されてもよい。平均列サイズ（すなわち、すべての行についてのフィールドの平均サイズ）に加えて、ピーク・サイズを報告すること、及び／又は、特定の列についてのフィールド・サイズのヒストグラムを生成することも可能である。
【００７９】
使用されているデータ・タイプ：
列サイズと同様に、これは、セッションパーシステントデータとして保存されているデータのタイプを理解するのに役立ち、データを表すか又は取り扱うためのより効果的な方法を識別するのに役立つ場合がある。
【００８０】
平均セッション寿命：
このデータは、様々な理由から、クライアントがどのようにウェブ・サーバと対話するかを理解するのに役立つ場合があり、この効果が性能上の課題を有することがあるが、それは性能問題を直接示すものではない。寿命は、１つ又は多数の履歴にわたって測定されても、現在のスナップショットであってもよい。寿命は、サーバごとに個別に測定することができるが、一般に、すべてのサーバが同様の挙動を示すことが期待される。
【００８１】
データベース更新についての平均応答時間：
この数字は、１つ又は複数の間隔にわたって測定することができる。一般に、この数字は、冗長システム２０６の負荷を評価するものである。応答時間が大きい場合には、冗長システムに負担がかかりすぎている。
【００８２】
データベース・ログへの書き込み数：
この数字もまた、冗長システムの性能に関連するものであり、更新動作数と比較したときに、あまりにも長いログへの書き込みが蓄積しており、障害の可能性があるかどうかを示すことができる。
【００８３】
冗長システムのディスクへの平均待ち時間：
この数字もまた、冗長システムの性能に関連するものであり、ストレージ・システムに負担がかかりすぎていることを示すことができる。
【００８４】
収集することができるデータの具体例を上述したが、他のデータ及び／又は付加的なデータも収集できることが理解されるであろう。
【００８５】
上述のようなデータをマイニングするために１つ又は複数の技術のいずれが用いられても、いったん収集されたデータは、ユーザに提示される（ステップ７１５）。ユーザにデータを提示することは、図形フォーマットを含む種々のフォーマットのいずれかでデータを対話型ディスプレイ・スクリーン上に表示することを意味することがある。データを提示することは、プリンタ又は他の出力装置上にデータを出力すること、データをネットワーク上で１又は複数の別のユーザに伝送すること、データを電子媒体に保存することなどを意味することもある。
【００８６】
あるいは、任意の実施形態においては、セッション・アナライザは、推論部５１８を呼び出して、ウェブ・サーバに関する推奨を調整する（ステップ７１６）。推論部５１８は、データを分析し、ユーザに推奨を提示する（ステップ７１７）。好ましくは、データベース管理システム５１１と、より重要なものとして各々のセッション・サーバのアプリケーション・サーバ４０４との両方において、種々の調整可能なパラメータが存在する。例えば、データベース管理システムにおける調整可能なパラメータとして、インデックスの仕様、記録削除といった特定の機能を実行するためのトリガ、ディスク・アドレス指定及びファイル・サイズといったファイル・システム・パラメータなどを挙げることができる。アプリケーション・サーバにおける調整可能なパラメータとして、データベース接続プール、ミドルウェア・メモリ・サイズ、プロセス・メモリ割り当て、ロード・バランシングなどを挙げることができる。これらの調整可能なパラメータの設定は、性能に著しい影響を与えることがある。
【００８７】
好ましい実施形態として本明細書で説明された技術の利点は、セッション・サーバの各々において性能監視ソフトウェアを直接実行することなく、セッション負荷に関して意味のあるデータを得られることである。性能監視ソフトウェアは、セッション・サーバが望ましくない場合には、監視されるシステムに大きなオーバーヘッドをかける。セッション・サーバは、セッションの冗長性と、クライアントに対するウェブ・サーバのシームレスで一貫性のある可用性とを維持する一環として、冗長セッション状態データを冗長システムにすぐに伝送する。したがって、セッション・サーバ自体には付加的なオーバーヘッドの負担はかからない。冗長システムには何らかの付加的なオーバーヘッドが存在するが、このオーバーヘッドは比較的小さいものである。データベース５０３を構築し維持する費用は、冗長性のためにすでに必要とされており、唯一の付加的なオーバーヘッド・コストは、データベースに対する幾つかの付加的なクエリ及びクエリ結果の分析のコストである。
【００８８】
一般に、本発明の図示された実施形態を実装するために実行されるルーチンは、オペレーティング・システムの一部として実装されるか、特定のアプリケーション、プログラム、オブジェクト、モジュール、又は命令シーケンスとして実装されるかにかかわらず、ここでは「プログラム」又は「コンピュータ・プログラム」と呼ばれる。プログラムは、典型的には、本発明に従うコンピュータ・システムの装置又はシステムにおける１つ又は複数のプロセッサによって読み取られ実行されたときに、本発明の種々の態様を具体化するステップを実行するか又は具体化する要素を生成するのに必要なステップをこれらの装置又はシステムに行わせる命令を含む。さらに、本発明は、完全に機能するコンピュータ・システムとの関連で説明され、これ以降も説明されることになるが、本発明の種々の実施形態は、種々の形式のプログラム製品として配布することができ、本発明は、その配布を実際に行うのに用いられる信号支持媒体の特定のタイプにかかわらず等しく適用される。信号支持媒体の例として、揮発性及び不揮発性メモリ・デバイス、フロッピー（登録商標）ディスク、ハードディスク・ドライブ、ＣＤ−ＲＯＭ、ＤＶＤ、磁気テープなどが挙げられるが、これらに限定されるものではない。さらに、無線ネットワークを含む伝送ネットワーク上でデータが１つの形式の信号支持媒体から別の形式の信号支持媒体に交換されるかどうかにかかわらず、本発明は、あらゆる形式の信号支持媒体に適用される。信号支持媒体の例は、システム・メモリ３０２及びデータ・ストレージ装置３２５−３２７として、図３に示されている。
【００８９】
本発明の特定の実施形態が特定の変形例とともに開示されたが、当業者であれば、特許請求の範囲における請求項の範囲内で形式及び詳細をさらに変化させることができることが分かるであろう。
【図面の簡単な説明】
【００９０】
【図１】インターネットのハイレベル図である。
【図２】本発明の好ましい実施形態に係る、ＨＴＴＰセッション負荷の特性を明らかにするための典型的なウェブ・サーバ環境のハイレベル図である。
【図３】好ましい実施形態に係る、ウェブ・サーバのコンピュータ・システムにおける主要なハードウェア・コンポーネントのハイレベル・ブロック図である。
【図４】好ましい実施形態に係る、セッション・サーバ・コンピュータ・システムの主要なソフトウェア・コンポーネントの概念図である。
【図５】好ましい実施形態に係る、セッション冗長データベース・システムの主要なソフトウェア・コンポーネントの概念図である。
【図６】好ましい実施形態に係る、クライアント要求をサービスし、セッション状態データを維持するプロセスをハイレベルで示すフロー図である。
【図７】好ましい実施形態に係る、セッション負荷の特性を明らかにするためのデータを抽出するプロセスをハイレベルで示すフロー図である。
【図８】好ましい実施形態に係る、セッション負荷の特性を明らかにするためのデータを抽出するプロセスをハイレベルで示すフロー図である。
【図１】
2009521741.tif 000003
【図２】
2009521741.tif 000004
【図３】
2009521741.tif 000005
【図４】
2009521741.tif 000006
【図５】
2009521741.tif 000007
【図６】
2009521741.tif 000008
【図７】
2009521741.tif 000009
【図８】
2009521741.tif 000010
【手続補正書】
【提出日】平成21年1月28日(2009.1.28)
【手続補正１】
【補正対象書類名】特許請求の範囲
【補正対象項目名】全文
【補正方法】変更
【補正の内容】
【特許請求の範囲】
【請求項１】
ウェブ・サーバにおけるＨＴＴＰセッション負荷の特性を明らかにする方法であって、  第１のコンピュータ・システムにおいて複数のＨＴＴＰセッションを処理するステップであって、前記複数のＨＴＴＰセッションについてのセッションパーシステント状態データを前記第１のコンピュータ・システムに維持する、コンピュータ実行ステップと、
前記第１のコンピュータ・システムから第２のコンピュータ・システムに冗長セッションパーシステント状態データを伝送するコンピュータ実行ステップと、
前記冗長セッションパーシステント状態データを前記第２のコンピュータ・システムに格納するステップであって、前記第２のコンピュータ・システムは、前記第２のコンピュータ・システムに格納された前記冗長セッションパーシステント状態データを用いて前記複数のＨＴＴＰセッションのセッション状態の回復をサポートする、コンピュータ実行ステップと、
前記第２のコンピュータ・システムに格納された前記冗長セッションパーシステント状態データを用いて前記ＨＴＴＰセッション負荷の特性を明らかにするコンピュータ実行ステップと、
を含む方法。
【請求項２】
前記冗長セッションパーシステント状態データを前記第２のコンピュータ・システムに格納する前記ステップは、前記冗長セッションパーシステント状態データを前記第２のコンピュータ・システム内の構造化データベースに格納することを含み、前記構造化データベースは複数のエントリを持つ少なくとも１つのテーブルを有し、前記エントリの各々は前記複数のＨＴＴＰセッションのそれぞれのＨＴＴＰセッションに対応する、請求項１に記載のＨＴＴＰセッション負荷の特性を明らかにする方法。
【請求項３】
前記冗長セッションパーシステント状態データを用いて前記ＨＴＴＰセッション負荷の特性を明らかにする前記ステップは、前記構造化データベースに対して１つ又は複数のクエリを実行して前記構造化データベースに格納されたデータを取得することを含む、請求項２に記載のＨＴＴＰセッション負荷の特性を明らかにする方法。
【請求項４】
前記冗長セッションパーシステント状態データを用いて前記ＨＴＴＰセッション負荷の特性を明らかにする前記ステップは、前記構造化データベースの変化を監視し、前記構造化データベースの変化に関する履歴データを用いて前記ＨＴＴＰセッション負荷の特性を明らかにすることを含む、請求項２に記載のＨＴＴＰセッション負荷の特性を明らかにする方法。
【請求項５】
前記冗長セッションパーシステント状態データを用いて前記ＨＴＴＰセッション負荷の特性を明らかにする前記ステップは、前記構造化データベースからのデータを用いて前記第１のコンピュータ・システムのチューニング・パラメータに関する推論を導くことを含み、前記推論は、コンピュータ実行プロセスによって自動的に導かれる、請求項２に記載のＨＴＴＰセッション負荷の特性を明らかにする方法。
【請求項６】
前記冗長セッションパーシステント状態データを用いて前記ＨＴＴＰセッション負荷の特性を明らかにする前記ステップは、前記構造化データベースからのデータを用いて、
（ａ）少なくとも１つの間隔にわたって測定されたデータベース更新動作数、
（ｂ）平均更新動作サイズ、
（ｃ）前記エントリの平均サイズ、
（ｄ）前記構造化データベースの全体サイズ、
（ｅ）前記構造化データベースの少なくとも１つの列についての平均列サイズ、
（ｆ）前記構造化データベースのエントリによって用いられているデータ・タイプ、
（ｇ）平均セッション寿命、
（ｈ）前記データベースの更新についての平均応答時間、
（ｉ）前記データベースのログへの書き込み数、及び、
（ｊ）前記第２のコンピュータ・システム内のディスクへの平均待ち時間、
からなる特性パラメータの組から少なくとも１つの特性パラメータを得ることを含む、請求項２に記載のＨＴＴＰセッション負荷の特性を明らかにする方法。
【請求項７】
前記第１のコンピュータ・システムは、ＨＴＴＰセッションを処理するためのセッション・サーバ・アプリケーションをサポートするアプリケーション・サーバを含む、請求項１に記載のＨＴＴＰセッション負荷の特性を明らかにする方法。
【請求項８】
前記第２のコンピュータ・システムは、複数の前記第１のコンピュータ・システムから受信した冗長セッションパーシステント状態データを格納し、前記第１のコンピュータ・システムの各々は、それぞれの複数のＨＴＴＰセッションを処理し、前記それぞれの複数のＨＴＴＰセッションについてのセッションパーシステント状態データを維持することを含む、請求項１に記載のＨＴＴＰセッション負荷の特性を明らかにする方法。
【請求項９】
前記第１のコンピュータ・システムと前記第２のコンピュータ・システムとは、共通のローカル・エリア・ネットワークに結合され、前記第１のコンピュータ・システムから前記第２のコンピュータ・システムに冗長セッションパーシステント状態データを伝送する前記ステップは、前記冗長セッションパーシステント状態データを前記ローカル・エリア・ネットワーク全体に伝送することを含む、請求項１に記載のＨＴＴＰセッション負荷の特性を明らかにする方法。
【請求項１０】
ウェブ・サーバのＨＴＴＰセッション負荷の特性を明らかにするコンピュータ・プログラムであって、
信号支持媒体上に記録される複数のコンピュータ実行可能命令であって、少なくとも１つのコンピュータ・システムによって実行されたときに、
第１のコンピュータ・システムに格納された冗長セッションパーシステント状態データにアクセスするステップであって、前記冗長セッションパーシステント状態データは、第２のコンピュータ・システムから前記第１のコンピュータ・システム内に受信され、前記第２のコンピュータ・システムによって複数のＨＴＴＰセッションを処理するために前記第２のコンピュータ・システムによって維持されるセッション持続状態を表し、前記冗長セッションパーシステント状態データを用いて前記複数のＨＴＴＰセッションのセッション状態の回復をサポートするように前記第１のコンピュータ・システムに格納されている、ステップと、
前記アクセスするステップによってアクセスされる前記冗長セッションパーシステント状態データを用いて前記ＨＴＴＰセッション負荷の特性を明らかにするステップと、
を前記少なくとも１つのコンピュータ・システムに実行させる命令を含む、コンピュータ・プログラム。
【請求項１１】
前記第１のコンピュータ・システムに格納された前記冗長セッションパーシステント状態データは、前記第１のコンピュータ・システム内の構造化データベースに格納された冗長セッションパーシステント状態データを含み、前記構造化データベースは複数のエントリを持つ少なくとも１つのテーブルを有し、前記エントリの各々は前記複数のＨＴＴＰセッションのそれぞれのＨＴＴＰセッションに対応する、請求項１０に記載のコンピュータ・プログラム。
【請求項１２】
前記冗長セッションパーシステント状態データを用いて前記ＨＴＴＰセッション負荷の特性を明らかにする前記ステップは、前記構造化データベースに対して１つ又は複数のクエリを実行して前記構造化データベースに格納されたデータを取得することを含む、請求項１１に記載のコンピュータ・プログラム。
【請求項１３】
前記冗長セッションパーシステント状態データを用いて前記ＨＴＴＰセッション負荷の特性を明らかにする前記ステップは、前記構造化データベースの変化を監視し、前記構造化データベースの変化に関する履歴データを用いて前記ＨＴＴＰセッション負荷の特性を明らかにすることを含む、請求項１１に記載のコンピュータ・プログラム。
【請求項１４】
前記冗長セッションパーシステント状態データを用いて前記ＨＴＴＰセッション負荷の特性を明らかにする前記ステップは、前記構造化データベースからのデータを用いて前記第２のコンピュータ・システムのチューニング・パラメータに関する推論を導くことを含み、前記推論は、コンピュータ実行プロセスによって自動的に導かれる、請求項１１に記載のコンピュータ・プログラム。
【請求項１５】
前記冗長セッションパーシステント状態データを用いて前記ＨＴＴＰセッション負荷の特性を明らかにする前記ステップは、前記構造化データベースからのデータを用いて、
（ａ）少なくとも１つの間隔にわたって測定されたデータベース更新動作数、
（ｂ）平均更新動作サイズ、
（ｃ）前記エントリの平均サイズ、
（ｄ）前記構造化データベースの全体サイズ、
（ｅ）前記構造化データベースの少なくとも１つの列についての平均列サイズ、
（ｆ）前記構造化データベースのエントリによって用いられているデータ・タイプ、
（ｇ）平均セッション寿命、
（ｈ）前記データベースの更新についての平均応答時間、
（ｉ）前記データベースのログへの書き込み数、及び、
（ｊ）前記第２のコンピュータ・システム内のディスクへの平均待ち時間、
からなる特性パラメータの組から少なくとも１つの特性パラメータを得ることを含む、請求項１１に記載のコンピュータ・プログラム。
【請求項１６】
ＨＴＴＰセッション負荷の特性を明らかにするための装置であって、
少なくとも１つのプロセッサと、外部にある少なくとも１つのセッション・サーバ・コンピュータ・システムから受信された冗長セッションパーシステント状態データを格納するためのデータ・ストレージとを有するセッション冗長コンピュータ・システムであって、前記少なくとも１つのセッション・サーバ・コンピュータ・システムは、複数のＨＴＴＰセッションを処理して前記複数のＨＴＴＰセッションについてのセッションパーシステント状態データを維持し、前記セッション冗長コンピュータ・システムは、前記データ・ストレージに格納された前記冗長セッションパーシステント状態データを用いて前記複数のＨＴＴＰセッションのセッション状態の回復をサポートする、セッション冗長コンピュータ・システムと、
コンピュータ・システム上で実行可能な複数の命令として具体化されたＨＴＴＰセッション・アナライザ機能であって、前記セッション冗長コンピュータ・システムの前記データ・ストレージに格納された前記冗長セッションパーシステント状態データを用いて、前記少なくとも１つのセッション・サーバ・コンピュータ・システム上における前記複数のＨＴＴＰセッションの負荷の特性を明らかにする、ＨＴＴＰセッション・アナライザ機能と、
を含む装置。
【請求項１７】
前記ＨＴＴＰセッション・アナライザ機能は、前記セッション冗長コンピュータ・システム内に存在し、前記セッション冗長コンピュータ・システムの前記少なくとも１つのプロセッサ上で実行される、請求項１６に記載の装置。
【請求項１８】
前記セッション冗長コンピュータ・システムに格納された前記冗長セッションパーシステント状態データは、前記セッション冗長コンピュータ・システム内の構造化データベースに格納された冗長セッションパーシステント状態データを含み、前記構造化データベースは複数のエントリを持つ少なくとも１つのテーブルを有し、前記エントリの各々は前記複数のＨＴＴＰセッションのそれぞれのＨＴＴＰセッションに対応する、請求項１６に記載の装置。
【請求項１９】
複数のセッション・サーバ・コンピュータ・システムをさらに含み、前記セッション・サーバ・コンピュータ・システムの各々は、それぞれの複数のＨＴＴＰセッションを処理し、前記それぞれの複数のＨＴＴＰセッションのそれぞれのＨＴＴＰセッションの各々についての前記セッションパーシステント状態データを維持することを含む、請求項１６に記載の装置。
【請求項２０】
前記冗長セッションパーシステント状態データを前記セッション・サーバ・コンピュータ・システムの各々から前記セッション冗長コンピュータ・システムに伝送するための通信経路を提供する少なくとも１つのローカル・エリア・ネットワークをさらに含む、請求項１９に記載の装置。
【国際調査報告】
2009521741.tif 000011
2009521741.tif 000012
2009521741.tif 000013