(57)【要約】【課題】コンピュータの処理効率の低下を削減することができるようにする。【解決手段】クライアントコンピュータと通信可能に接続され、前記クライアントコンピュータから送信される処理要求に応じた情報処理を行うプログラムを実行する第１及び第２の実行環境を備えるサーバコンピュータの制御方法であって、前記サーバコンピュータが、前記第１の実行環境が前記処理要求に応じて行う前記情報処理について、所定の処理効率を確保できるかどうかを判断するための条件を記憶し、前記クライアントコンピュータから送信される前記処理要求を受信し、前記条件に基づいて前記所定の処理効率を確保できるかどうかを判断し、前記所定の処理効率を確保できないと判断した場合は、前記第２の実行環境に前記処理要求を割り当てるようにする。【選択図】    図３
2007004595.tif 000002
【特許請求の範囲】
【請求項１】
クライアントコンピュータと通信可能に接続され、前記クライアントコンピュータから送信される処理要求に応じた情報処理を行うプログラムを実行する第１及び第２の実行環境を備えるサーバコンピュータの制御方法であって、
前記サーバコンピュータが、
前記第１の実行環境が前記処理要求に応じて行う前記情報処理について、所定の処理効率を確保できるかどうかを判断するための条件を記憶し、
前記クライアントコンピュータから送信される前記処理要求を受信し、
前記条件に基づいて前記所定の処理効率を確保できるかどうかを判断し、
前記所定の処理効率を確保できないと判断した場合は、前記第２の実行環境に前記処理要求を割り当てること、
を特徴とするサーバコンピュータの制御方法。
【請求項２】
請求項１に記載のサーバコンピュータの制御方法であって、
前記条件は、前記第１の実行環境に現在割り当てられている資源に基づいて前記所定の処理効率を確保できるかどうかを判断するものであること、
を特徴とするサーバコンピュータの制御方法。
【請求項３】
請求項１に記載のサーバコンピュータの制御方法であって、
前記条件は、前記第１の実行環境に現在割り当てられている、メモリの記憶領域のサイズ、ファイル記述子の数、及び資源に対する排他ロックの数のうちの少なくともいずれかが所定の閾値を超えているかどうかにより、前記所定の処理効率を確保できるかどうかを判断するものであること、
を特徴とするサーバコンピュータの制御方法。
【請求項４】
請求項１に記載のサーバコンピュータの制御方法であって、
前記条件は、前記第１の実行環境に割り当てられているメモリの記憶領域のうち、使用中の前記記憶領域のサイズが所定の閾値を超えたかどうかに応じて、前記所定の処理効率を確保できるかどうかを判断するものであり、
前記サーバコンピュータが、前記所定の処理効率を確保できないと判断した場合に、前記第１の実行環境についてガーベージコレクションを行うこと、
を特徴とするサーバコンピュータの制御方法。
【請求項５】
請求項１に記載のサーバコンピュータの制御方法であって、
前記サーバコンピュータが、
前記所定の処理効率を確保できないと判断した場合に、前記処理要求が属する一連の前記処理要求間で引き継がれるデータを、前記第１及び第２の実行環境からアクセス可能な記憶領域に記憶すること、
を特徴とするサーバコンピュータの制御方法。
【請求項６】
請求項１に記載のサーバコンピュータの制御方法であって、
前記サーバコンピュータが、
前記第１の実行環境に割り当てられている前記処理要求が属する一連のセッションを特定するセッションＩＤを記憶し、
前記所定の処理効率を確保できないと判断した場合に、前記クライアントから受信した前記処理要求が属する前記セッションを特定する前記セッションＩＤを記憶しているかどうかを判断し、
前記セッションＩＤを記憶している場合、前記処理要求を前記第２の実行環境に割り当てないこと、
を特徴とするサーバコンピュータの制御方法。
【請求項７】
請求項６に記載のサーバコンピュータの制御方法であって、
前記サーバコンピュータが、
前記第２の実行環境に割り当てない前記処理要求を待ち要求として記憶し、
前記待ち処理要求が属する前記セッションを特定する前記セッションＩＤが、前記第１の実行環境からの応答に付帯されている場合、前記待ち要求を前記第２の実行環境に割り当てること、
を特徴とするサーバコンピュータの制御方法。
【請求項８】
クライアントコンピュータと通信可能に接続され、
前記クライアントコンピュータから送信される前記処理要求を受信する処理要求受信部と、
前記処理要求に応じた情報処理を行うプログラムを実行する第１及び第２の実行環境と、
前記第１の実行環境が前記処理要求に応じて行う前記情報処理について、所定の処理効率を確保できるかどうかを判断するための条件を記憶する条件記憶部と、
前記条件に基づいて前記所定の処理効率を確保できるかどうかを判断する判断部と、
前記所定の処理効率を確保できないと判断した場合は、前記第２の実行環境に前記処理要求を割り当てる処理要求割当部と、
を備えることを特徴とするサーバコンピュータ。
【請求項９】
クライアントコンピュータと、前記クライアントコンピュータに通信可能に接続されるサーバコンピュータとを含んで構成される情報処理システムであって、
前記サーバコンピュータは、
ＣＰＵとメモリと、
前記クライアントコンピュータから送信される前記処理要求を受信する処理要求受信部と、
前記処理要求に応じた情報処理を行うプログラムを実行する第１及び第２の実行環境と、
前記第１の実行環境が前記処理要求に応じて行う前記情報処理について、所定の処理効率を確保できるかどうかを判断するための条件を記憶する条件記憶部と、
前記条件に基づいて前記所定の処理効率を確保できるかどうかを判断する判断部と、
前記所定の処理効率を確保できないと判断した場合は、前記第２の実行環境に前記処理要求を割り当てる処理要求割当部と、
を備えることを特徴とする情報処理システム。
【請求項１０】
クライアントコンピュータと通信可能に接続され、前記クライアントコンピュータから送信される処理要求に応じた情報処理を行うプログラムを実行する第１及び第２の実行環境を備えるサーバコンピュータに、
前記第１の実行環境が前記処理要求に応じて行う前記情報処理について、所定の処理効率を確保できるかどうかを判断するための条件を記憶するステップと、
前記クライアントコンピュータから送信される前記処理要求を受信するステップと、
前記条件に基づいて前記所定の処理効率を確保できるかどうかを判断するステップと、
前記所定の処理効率を確保できないと判断した場合は、前記第２の実行環境に前記処理要求を割り当てるステップと、
を実行させるためのプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、コンピュータ制御方法、コンピュータ、情報処理システム、及びプログラムに関する。
【背景技術】
【０００２】
コンピュータの処理効率が稼動時間の経過に従って低下することがある。この現象は、コンピュータで実行されるプログラムにおいて確保した記憶領域を解放する処理が記述されていないなどのプログラミングエラーに起因することが知られており、ソフトウェアエージングと呼ばれている。このソフトウェアエージングに対して、特許文献１では、所定時間毎にアプリケーションやシステムのリセットを行うことで、元の処理効率に回復させるようにしている。
【特許文献１】特開２００１−１８８６８４号公報
【発明の開示】
【発明が解決しようとする課題】
【０００３】
しかしながら、アプリケーションやシステムがリセットされた場合には、それらが再起動されるまでの間はシステムによるサービスを提供することができなくなるという不都合がある。
【０００４】
本発明は、このような背景を鑑みてなされたものであり、不都合を生じさせることなくコンピュータの処理効率の低下を抑えることのできる、サーバコンピュータの制御方法、サーバコンピュータ、情報処理システム、及びプログラムを提供することを目的とする。
【課題を解決するための手段】
【０００５】
上記課題を解決するための本発明の主たる発明は、クライアントコンピュータと通信可能に接続され、前記クライアントコンピュータから送信される処理要求に応じた情報処理を行うプログラムを実行する第１及び第２の実行環境を備えるサーバコンピュータの制御方法であって、前記サーバコンピュータが、前記第１の実行環境が前記処理要求に応じて行う前記情報処理について、所定の処理効率を確保できるかどうかを判断するための条件を記憶し、前記クライアントコンピュータから送信される前記処理要求を受信し、前記条件に基づいて前記所定の処理効率を確保できるかどうかを判断し、前記所定の処理効率を確保できないと判断した場合は、前記第２の実行環境に前記処理要求を割り当てることとする。
【発明の効果】
【０００６】
本発明によれば、コンピュータの処理効率の低下を削減することができる。
【発明を実施するための最良の形態】
【０００７】
図１は本実施形態に係る情報処理システムの構成を示す図である。同図に示すように、本実施形態の情報処理システムはクライアントコンピュータ（端末ともいう。以下、単にクライアントという。）１０と、サーバコンピュータ（計算機、情報処理装置、ブレードともいう。以下、単にサーバという。）２０とを含んで構成されている。クライアント１０とサーバ２０とは通信ネットワーク３０を介して通信可能に接続されている。通信ネットワーク３０としては、例えば、インターネットやＬＡＮ（Local Area Network）、無線ネットワーク、電話回線網などがある。
【０００８】
本実施形態の情報処理システムは、クライアント１０から送信されてくる要求に応じてサーバ２０が情報処理を行うものである。  
サーバ２０はアプリケーションサーバ（ＡＰサーバ）として機能するサーバプログラムを有する。
【０００９】
アプリケーションサーバは、ミドルウェアの一種であり、Ｗｅｂブラウザ等のフロントエンドのクライアント層と、ＤＢＭＳ（DataBese Management System）やＥＲＰ（Enterprise Resource Planning）パッケージ等のバックエンドの企業情報システムとの中間に位置し、業務アプリケーションプログラム（ＡＰ）やビジネスロジックプログラム（ＢＬ）の実行環境を提供する。インターネットおよびブロードバンドの普及や高可用性・高信頼性を実現する技術の成熟によって、アプリケーションサーバは、企業内の業務システムだけでなく、オンラインショッピングやオンライントレード、企業間の電子商取引、さらには、ミッションクリティカル業務にも利用されるようになってきている。
【００１０】
ところが、例えば、Ｊ２ＥＥ（Java2 Platform, Enterprise Edition；登録商標）を実装するアプリケーションサーバでは、未使用の記憶領域を解放するＦｕｌｌ ＧＣ（Garbase Collection；ガーベージコレクション）が発生すると、そのアプリケーションサーバで行われる処理効率が極端に低下し、サービス品質目標を維持することが困難になる場合がある。特にマルチプロセッサシステムなどにおいて大規模な仮想メモリ領域がアプリケーションサーバに割り当てられている場合には、ガーベージコレクションが行われることによるアプリケーションサーバ全体としての処理効率の低下は非常に顕著である。
【００１１】
また、実行環境において実行されるアプリケーションプログラム（ユーザプログラム、業務プログラムともいう。）において、例えばスレッド間の排他制御やリソースに対するロックを解放しなかったり、オープンしたファイルのクローズ処理を行わなかったりするような不具合が含まれているような場合には、そのアプリケーションプログラムに割り当てられる資源が増加し続けることとなり、これによってアプリケーションサーバの処理効率が低下してしまうこともある。
【００１２】
本実施形態に係るサーバ２０では、プログラムの実行環境を２つ備えるようにして、片方の実行環境の処理効率が低下しそうなときには、クライアント１０からの要求の割り当て先を他方の実行環境に切り替えることで情報処理サービスを継続しつつ、処理効率が低下した実行環境において処理効率を確保できるような回復処理を行うようにしている。これにより、サーバ２０が、情報処理システム全体に影響を及ぼすことなく、実行環境がプログラムを実行することにより提供されるサービスの品質（例えば、レスポンス時間やスループット）の低下を防止することができるようにしている。このような本実施形態のサーバ２０について以下詳細に説明する。
【００１３】
＝＝＝ハードウェア構成＝＝＝
図２はサーバ２０のハードウェア構成を示す図である。同図に示すように、本実施形態のサーバ２０は、ＣＰＵ（Central Processor Unit）２０１、主記憶装置２０２、２次記憶装置２０３、ネットワークインタフェース２０４を備えており、これらはバス２０５で接続されている。
【００１４】
２次記憶装置２０３は、データやプログラムを記憶する、例えば、ハードディスクドライブなどである。ＣＰＵ２０１は２次記憶装置２０３にプログラムが記憶されている場合には、主記憶装置２０２にそのプログラムを読み出す。ＣＰＵ２０１は、主記憶装置２０２に記憶されているプログラムを実行することにより、サーバ２０の各種の機能を実現する。ネットワークインタフェース２０４は、通信ネットワーク３０に接続するためのインタフェースであり、例えば、イーサネット（登録商標）に接続するアダプタや電話回線網に接続するモデムなどである。
【００１５】
主記憶装置２０２には、実行環境プログラム２１１、ディスパッチャプログラム２１２、オペレーティングシステム２１３などの各種のプログラムが記憶されている。実行環境プログラム２１１は、アプリケーションプログラムやビジネスロジックなどのプログラムの実行環境（以下、ＡＰ／ＢＬ実行環境４００という。）を実現するプログラムである。ディスパッチャプログラム２１２は、実行環境に対してクライアント１０からの要求を振分ける後述のディスパッチャ３００を実現するプログラムである。また、主記憶装置２０２には、２つのＡＰ／ＢＬ実行環境４００からアクセス可能な共有メモリ領域２２１が設定されている。２次記憶装置２０３には、ＡＰ／ＢＬ実行環境４００における処理に関するデータを記憶しておく永続記憶領域２２２が設定されている。
【００１６】
＝＝＝ソフトウェア構成＝＝＝  
図３は、本実施形態に係るサーバ２０の構成を示す。同図に示すように、サーバ２０は、クライアント１０からの要求受付窓口であるディスパッチャ３００と、２つの業務ＡＰ／ＢＬ実行環境４００とを備えている。また、ＡＰ／ＢＬ実行環境４００には、ＡＰ／ＢＬ実行部４１１、サービス品質目標未到達予兆監視部４１２、サービス品質目標回復部４１３が含まれている。
【００１７】
ディスパッチャ３００はクライアント１０から送信される要求を受信し、受信した要求をＡＰ／ＢＬ実行環境４００の片方に振分ける。なお、以下の説明において、ディスパッチャ３００からの要求の振分け先となるＡＰ／ＢＬ実行環境４００を、アクティブなＡＰ／ＢＬ実行環境４００といい、他方のＡＰ／ＢＬ実行環境４００をスタンバイのＡＰ／ＢＬ実行環境４００という。また、ディスパッチャ３００は、サービス品質目標未到達予兆検知イベントが発生すると、要求を振分ける先のＡＰ／ＢＬ実行環境４００を切り替える処理（以下、アクティブスタンバイ切替処理や系切替処理という。）を行う。なお、ディスパッチャ３００の詳細については後述する。
【００１８】
ＡＰ／ＢＬ実行部４１１は、ディスパッチャ３００から振分けられた要求に応じた処理を行う業務アプリケーションプログラムやビジネスロジックプログラムを実行する。  
サービス品質目標未到達予兆監視部４１２は、ディスパッチャ３００から振分けられた要求に応じて実行される業務アプリケーションプログラムやビジネスロジックプログラムによる情報処理（サービス）について、所定の処理効率を確保できるかどうか（所定のサービス品質に到達できるかどうか）を判断する。
【００１９】
サービス品質目標未到達予兆監視部４１２は、例えば、ＡＰ／ＢＬ実行環境４００に割り当てられているメモリのうち使用中の領域のサイズや、ＡＰ／ＢＬ実行環境４００において実行されているプログラムがオープンしているファイルについてのファイルディスクリプタの数、データベースに対するトランザクションなどの排他制御により確保されている排他ロックの数、ＣＰＵ２０１の利用率（使用率ともいう。）、ＡＰ／ＢＬ実行環境４００において起動されているスレッドの数などの資源の利用状況を監視し、これらの値が所定の閾値を超えた場合（所定の条件を満たした場合）に、所定の処理効率を実現できないと判断する。なお、サービス品質目標未到達予兆監視部４１２は、上記のような各種資源の使用量を集計した結果に基づいて上記の判断を行うようにしてもよい。上記の閾値などの条件は主記憶装置２０２又は２次記憶装置２０３が提供する記憶領域に予め記憶されているものとする。
【００２０】
サービス品質目標未到達予兆監視部４１２は、ＡＰ／ＢＬ実行環境４００におけるサービスについて、所定のサービス品質に到達できなくなると判断した場合にはイベントを発生して、その旨をディスパッチャ３００に通知する。なお、以下の説明ではこのイベントをサービス品質目標未到達予兆検知イベントという。
【００２１】
サービス品質目標回復部４１３は、ＡＰ／ＢＬ実行環境４００において実行されるプログラムによる情報処理について、所定の処理効率（例えば、レスポンス時間やスループット）を確保できるようにするための処理を行う。サービス品質目標回復部４１３は、例えば、メモリ領域の強制ガーベージコレクションやＡＰ／ＢＬ実行環境４００の再起動、ＡＰ／ＢＬ実行環境４００で利用しているデータの最適化や、各種メモリに記憶しているデータの最適配置化などを行う。  
なお、ディスパッチャ３００とＡＰ／ＢＬ実行環境４００のそれぞれは、例えばパイプ等のプロセス間通信を使用して、要求や応答の送受信およびイベント通知等を行うようにすることができる。
【００２２】
また、図３に示すように、共有メモリ領域２２１には、対話状態２３１と、ＡＰ／ＢＬ実行環境４００の提供するサービスに関する様々なデータであるキャッシュ２３２とが記憶される。対話状態２３１は、クライアント１０から送信される一連の要求（セッション）に対するプログラムの実行処理において引き継ぐべき情報である。対話状態２３１には、例えば、セッション情報やＪ２ＥＥ（登録商標）に規定されるステートフルセッションオブジェクトなどがある。本実施形態では、対話状態２３１が２つのＡＰ／ＢＬ実行環境４００からアクセス可能な共有メモリ領域２２１に記憶されるため、アクティブスタンバイ切替処理が行われた場合でも、スタンバイのＡＰ／ＢＬ実行環境４００において対話状態２３１を引き継ぐことができるようになっている。
【００２３】
永続記憶領域２２２には、環境設定情報２４１とＡＰ／ＢＬ配備情報２４２とが記憶されており、ＡＰ／ＢＬ実行環境４００はそれぞれ同一の環境設定情報２４１とＡＰ／ＢＬ配備情報２４２とを読み込んでアプリケーションプログラムやビジネスロジックプログラムなどの各種のプログラムの実行を行う。永続記憶領域２２２は、例えばオペレーティングシステム（ＯＳ）により提供されるファイルシステム上のファイルとして実現される。
【００２４】
＝＝＝ディスパッチャ３００＝＝＝  
図４にディスパッチャ３００の構成を示す。同図に示すように、ディスパッチャ３００は、要求受信部３１１、要求振分け部３１２、要求応答部３１３、要求実行キュー３２１、処理待ち要求キュー３２２、応答キュー３２３、Ａ／Ｓ切替フラグ３３１、Ａフラグ３３２、処理中要求管理テーブルＡ３４０、処理中要求管理テーブルＳ３５０、処理待ち要求管理テーブル３６０を備えている。
【００２５】
要求受信部３１１は、クライアント１０から送信される要求を受信する。要求振分け部３１２は、要求受信部３１１が受信した要求をアクティブなＡＰ／ＢＬ実行環境４００に振分ける。要求応答部３１３は、ＡＰ／ＢＬ実行環境４００からの要求に対する応答をクライアント１０に送信する。
【００２６】
要求実行キュー３２１には、要求受信部３１１が受信したクライアント１０からの要求が登録される。応答キュー３２３には、ＡＰ／ＢＬ実行環境４００からの応答が登録される。処理待ち要求キュー３２２には、後述するアクティブスタンバイ切替処理が行われているときに、一時的に要求が登録される。
【００２７】
Ａ／Ｓ切替フラグ３３１は、アクティブスタンバイ切替処理が行われているか否かを示す情報であり、「真」または「偽」のいずれかの値（初期値は「偽」）をとる。  
Ａフラグ３３２は、アクティブなＡＰ／ＢＬ実行環境４００を示す情報である。アクティブなＡＰ／ＢＬ実行環境４００がＡＰ／ＢＬ実行環境０（４００）である場合にはＡフラグ３３２は「０」となり、そうでない場合には「１」となる。
【００２８】
処理中要求管理テーブルＡ３４０は、アクティブな業務ＡＰ／ＢＬ実行環境４００に振分けられた要求を管理する。図５に処理中要求管理テーブルＡ３４０の構成を示す。処理中要求管理テーブルＡ３４０には、クライアント１０からの要求の識別情報（以下、要求ＩＤという。）３４１と、共有メモリ領域２２１に記憶されている対話状態２３１の識別情報（以下、対話状態ＩＤという。）３４２とが対応付けて記憶されている。処理中要求管理テーブルＡ３４０には、アクティブな業務ＡＰ／ＢＬ実行環境４００において処理中である要求毎に１レコードが存在する。本実施形態では、新規の要求を受信した場合など、対話状態２３１が記憶されていない場合には、対話状態ＩＤ３４２には「ＮＵＬＬ」が設定される。また、後述するように、ＡＰ／ＢＬ実行環境４００において要求に対するプログラムの実行が完了すると、処理中要求管理テーブルＡ３４０からその要求の要求ＩＤに対応するレコードが削除される。
【００２９】
処理中要求管理テーブルＳ３５０は、アクティブスタンバイ切替処理が行われている間に、スタンバイの業務ＡＰ／ＢＬ実行環境４００に振分けられた要求を管理する。図６に処理中要求管理テーブルＳ３５０の構成を示す。処理中要求管理テーブルＳ３５０は、処理中要求管理テーブルＡ３４０と同様に、要求ＩＤ３５１と、対話状態ＩＤ３５２とが対応付けて記憶されてるレコードが、要求毎に１つ登録される。
【００３０】
処理待ち要求管理テーブル３６０は、アクティブスタンバイ切替処理中に、一時的に振分けが待たされる要求を管理する。図７に、処理待ち要求管理テーブル３６０の構成を示す。処理待ち要求管理テーブル３６０は、上述した処理中要求管理テーブルＡ３４０及び処理中要求管理テーブルＳ３５０と同様に、要求ＩＤ３６１と対話状態ＩＤ３６２とを対応付けて記憶している。
【００３１】
＝＝＝起動処理＝＝＝
図８にディスパッチャ３００の起動処理の流れを示す。ディスパッチャ３００は、共有メモリ領域２２１を確保して初期化し（Ｓ５０１）、処理中要求管理テーブルＡ３４０、処理中要求管理テーブルＳ３５０、および処理待ち要求管理テーブル３６０を初期化し（Ｓ５０２）、Ａ／Ｓ切替フラグ３３１を「偽」に初期化する（Ｓ５０３）。ディスパッチャ３００は、ＡＰ／ＢＬ実行環境０（４００）を起動し（Ｓ５０４）、ＡＰ／ＢＬ実行環境１（４００）を起動し（Ｓ５０５）、Ａフラグ３３２を「０」に初期化してアクティブなＡＰ／ＢＬ実行環境４００を設定する（Ｓ５０６）。上記処理が終わるとディスパッチャ３００は、クライアント１０からの要求の受信を開始する（Ｓ５０７）。
【００３２】
図９は、ＡＰ／ＢＬ実行環境４００の起動処理の流れを示す図である。ＡＰ／ＢＬ実行環境４００は、永続記憶領域２２２に配置された環境設定情報２４１を読み込み（Ｓ５２１）、ＡＰ／ＢＬ配備情報２４２を読み込み（Ｓ５２２）、プログラムを実行するための初期設定を行う。ＡＰ／ＢＬ実行環境４００は、共有メモリ領域２２１を自身のアドレス空間にマップし（Ｓ５２３）、ＡＰ／ＢＬ実行環境４００がアプリケーションプログラムやビジネスロジックプログラムに提供する各種のサービスや、ＡＰ、ＢＬなどのプログラムの実行を開始し（Ｓ５２４）、サービス品質目標未到達予兆監視部４１２を実現するためのプログラムを実行して（Ｓ５２５）、ディスパッチャ３００にＡＰ／ＢＬ実行環境４００の起動処理が完了した旨を通知する（Ｓ５２６）。
【００３３】
＝＝＝サービス品質目標未到達予兆監視処理＝＝＝
図１０は、各ＡＰ／ＢＬ実行環境４００のサービス品質目標未到達予兆監視部４１２による処理の流れを示す図である。ＡＰ／ＢＬ実行環境４００が起動すると、それぞれのＡＰ／ＢＬ実行環境４００においてサービス品質目標未到達予兆監視部４１２が、ＡＰ／ＢＬ実行環境４００に割り当てられている資源の利用量を測定し、それらが所定の閾値を超えたかどうかにより、サービス品質目標に到達できるかどうかを判断する（Ｓ５４１）。サービス品質目標未到達予兆監視部４１２は、サービス品質目標に未到達と判断した場合には（Ｓ５４１：ＹＥＳ）、サービス品質目標未到達予兆検知イベントを発行する（Ｓ５４２）。なお、サービス品質目標未到達予兆監視部４１２は、各種の資源の利用量を集計し、その集計結果に応じて、サービス品質目標に到達できるかどうかを判断するようにしてもよい。
【００３４】
ＡＰ／ＢＬ実行環境４００においてサービス品質未到達予兆検知イベントが発生したときのディスパッチャ３００の処理を図１１に示す。ディスパッチャ３００は、サービス品質未到達予兆検知イベントを受けて（Ｓ５６１）、Ａ／Ｓ切替フラグ３３１を「真」に設定する（Ｓ５６２）。
【００３５】
＝＝＝要求の振分け処理＝＝＝
ディスパッチャ３００は、ＡＰ／ＢＬ実行環境４００のそれぞれから起動完了の通知を受け付けると、図１２に示すクライアント１０からの要求の到着を監視する処理を行う。
【００３６】
要求受信部３１１は、クライアント１０からの要求の到着を監視し（Ｓ５８１）、クライアント１０から要求を受信すると（Ｓ５８２：ＹＥＳ）、受信した要求を一意に識別する要求ＩＤを生成し（Ｓ５８３）、要求ＩＤと要求とを要求実行キュー３２１に登録し（Ｓ５８４）、再びクライアントからの要求の到着を監視する（Ｓ５８５）。
【００３７】
一方、ディスパッチャ３００はクライアント１０からの要求の到着を監視している間に終了割り込みを受けた場合には（Ｓ５８６）、クライアント１０からの要求を受け付ける窓口を閉鎖し（Ｓ５８７）、現在ＡＰ／ＢＬ実行環境４００で実行中のＡＰやＢＬによる処理が完了するか、タイムアウトするまで待機する（Ｓ５８８）。例えば、ディスパッチャ３００は、処理中要求管理テーブルＡ３４０、処理要求管理テーブルＳ３５０、処理待ち要求管理テーブル３６０、要求実行キュー３２１、および、応答キュー３２３がすべて空になったことにより、ＡＰ／ＢＬ実行環境４００で実行中のＡＰやＢＬによる処理がすべて完了したことを検知することができる。ディスパッチャ３００は、クライアント１０と持続的に接続している場合には、その接続を閉鎖し（Ｓ５８９）、ＡＰ／ＢＬ実行環境４００のそれぞれを停止し（Ｓ５９０）、共有メモリ領域２２１をクリアして（Ｓ５９１）、ディスパッチャ３００の処理を終了する。
【００３８】
要求実行キュー３２１に登録された要求は、ディスパッチャ３００の要求振分け部３１２によりＡＰ／ＢＬ実行環境４００に振分けられる。図１３に要求の振分け処理の流れを示す。  
要求振分け部３１２は、要求実行キュー３２１に要求ＩＤと要求とが登録されると（Ｓ６０１）、要求実行キュー３２１から要求ＩＤと要求を取り出し（Ｓ６０２）、取り出した要求に付帯されている対話状態ＩＤを取得する（Ｓ６０３）。
【００３９】
Ａ／Ｓ切替フラグ３３１が「偽」であれば（Ｓ６０４：ＹＥＳ）、要求振分け部３１２は、処理中要求管理テーブルＡ３４０に、要求ＩＤと対話状態ＩＤとを登録する（Ｓ６０５）。ここで、要求実行キュー３２１から取り出した要求に対話状態ＩＤが付帯されていない場合、処理中要求管理テーブルＡ３４０の対話状態ＩＤ欄３４２には「ＮＵＬＬ」を登録する。
【００４０】
要求振分け部３１２は、Ａフラグ３３２の値が「０」であれば（Ｓ６０６：ＹＥＳ）、ＡＰ／ＢＬ実行環境０（４００）に要求を振分け（Ｓ６０７）、Ａフラグ３３２の値が「０」でなければ（Ｓ６０６：ＮＯ）、ＡＰ／ＢＬ実行環境１（４００）に要求を振り分ける（Ｓ６０８）。  
一方、要求振分け部３１２は、Ａ／Ｓ切替フラグ３３１が「真」であれば（Ｓ６０４：ＮＯ）、図１４に示すアクティブスタンバイ切替時の振分け処理を行う（Ｓ６０９）。
【００４１】
上記の要求に対話状態ＩＤが付帯されており（Ｓ６２１：ＹＥＳ）、かつ、その対話状態ＩＤが処理中要求管理テーブルＡ３４０に登録されている場合（Ｓ６２２：ＹＥＳ）、要求振分け部３１２は、要求ＩＤと対話状態ＩＤとを処理待ち要求管理テーブル３６０に登録し（Ｓ６２３）、要求に要求ＩＤを付帯させて処理待ち要求キュー３２２へ登録する（Ｓ６２４）。
【００４２】
一方、要求に対話状態ＩＤが付帯されていない場合（Ｓ６２１：ＮＯ）または、処理中要求管理テーブルＡ３４０に上記対話状態ＩＤが登録されていない場合（Ｓ６２２：ＮＯ）には、要求振分け部３１２は、処理中要求管理テーブルＳ３５０に、要求ＩＤと対話状態ＩＤとを登録する（Ｓ６２５）。ここで、要求実行キュー３２１から取り出した要求に対話状態ＩＤが付帯されていない場合は、処理中要求管理テーブルＳ３５０の対話状態ＩＤ欄３５２には「ＮＵＬＬ」を登録する。要求振分け部３１２は、Ａフラグ３３２の値が「０」であれば（Ｓ６２６：ＹＥＳ）、ＡＰ／ＢＬ実行環境１（４００）に要求を振り分け（Ｓ６２７）、そうでなければＡＰ／ＢＬ実行環境０（４００）に要求を振り分ける（Ｓ６２８）。
【００４３】
このように、アクティブなＡＰ／ＢＬ実行環境４００に割り当てられた要求と同じ対話状態ＩＤが付帯された要求は、処理待ち要求キュー３２２に登録され、スタンバイのＡＰ／ＢＬ実行環境４００への振分けを一時的に待機することになる。したがって、同一の対話状態２３１に対してアクセスする可能性のある処理が２つのＡＰ／ＢＬ実行環境４００において同時に実行されることを防ぐことができる。したがって、対話状態２３１に対する排他制御が不要となり、排他制御に係る処理負荷が軽減され、非常に素早くアクティブスタンバイ切替処理を行うことができる。
【００４４】
＝＝＝要求に応じたプログラムの実行処理＝＝＝
図１５は、ＡＰ／ＢＬ実行環境４００における、ディスパッチャ３００から振分けられた要求に応じたプログラムの実行処理の流れを示す図である。なお、図１５に示すＡＰ／ＢＬ実行環境４００におけるプログラムの処理は、一般的なアプリケーションサーバなどによるプログラムの実行処理と同様のものである。
【００４５】
ＡＰ／ＢＬ実行環境４００のＡＰ／ＢＬ実行部４１１は、要求振分け部３１２から要求が振分けられると（Ｓ６４１）、振分けられた要求に対話状態ＩＤが付帯されているかどうかにより、その要求に対応する対話状態２３１が存在するかどうかを判断し（Ｓ６４２）、対話状態２３１が存在する場合（Ｓ６４２：ＹＥＳ）、共有メモリ領域２２１から対話状態２３１を取得し（Ｓ６４３）、対話状態２３１がなければ（Ｓ６４２：ＮＯ）、対話状態２３１を共有メモリ領域２２１に新規作成する（Ｓ６４４）。
【００４６】
ＡＰ／ＢＬ実行部４１１は、要求に応じてＡＰまたはＢＬを実行する（Ｓ６４５）。ＡＰ／ＢＬ実行環境４００の提供する様々なサービスをＡＰやＢＬが利用している場合、ＡＰやＢＬを実行することにより行われる情報処理において、共有メモリ領域２２１に格納されたキャッシュ２３２にアクセスが行われる（Ｓ６４６）。
【００４７】
ＡＰ／ＢＬ実行部４１１は、割り当てられた要求が、クライアント１０から送信される一連の要求群の最後のものであるかどうかを判断する（Ｓ６４７）。この判断は、例えば、ＡＰやＢＬにおいてセッションを破棄する処理が行われることや、タイムアウトなどによって行う。ＡＰ／ＢＬ実行部４１１は、この要求が最後のものであると判断した場合は（Ｓ６４７：ＹＥＳ）、共有メモリ領域２２１から対話状態２３１を削除し（Ｓ６４８）、そうでない場合には（Ｓ６４７：ＮＯ）、共有メモリ領域２２１に記憶されている対話状態２３１を更新する（Ｓ６４９）。ＡＰ／ＢＬ実行部４１１は、要求に対する応答を作成して、ディスパッチャ３００の要求振分け部３１２に引き渡す（Ｓ６５０）。
【００４８】
上記のようにして、ＡＰ／ＢＬ実行環境４００においてクライアント１０からの要求に応じたプログラムが実行されて各種の情報処理が行われる。
【００４９】
＝＝＝応答処理＝＝＝
ＡＰ／ＢＬ実行環境４００から応答が引き渡されると、ディスパッチャ３００の要求振分け部３１２は、図１６に示す処理を行う。  
要求振分け部３１２は、ＡＰ／ＢＬ実行環境４００からの応答を受けると（Ｓ６６１）、引き渡された応答に付帯されている要求ＩＤを取得する（Ｓ６６２）。要求振分け部３１２は、Ａフラグ３３２を参照し、応答があったＡＰ／ＢＬ実行環境４００がアクティブであるかスタンバイであるかを判断する（Ｓ６６３）。応答がスタンバイのＡＰ／ＢＬ実行環境４００からの応答であれば（Ｓ６６３：ＮＯ）、処理中要求管理テーブルＳ３５０から上記の要求ＩＤに対応するレコードを削除し（Ｓ６６４）、要求ＩＤと応答とを応答キュー３２３に登録する（Ｓ６６５）。
【００５０】
一方、応答がアクティブなＡＰ／ＢＬ実行環境４００からのものであれば（Ｓ６６３：ＹＥＳ）、要求振分け部３１２は、処理中要求管理テーブルＡ３４０から上記の要求ＩＤに対応するレコードを削除し（Ｓ６６６）、上記の要求ＩＤと応答とを応答キュー３２３に登録する（Ｓ６６７）。
【００５１】
要求振分け部３１２は、Ａ／Ｓ切替フラグ３３１が「真」である場合（Ｓ６６８：ＹＥＳ）、図１７に示す待ちキュー処理を行う（Ｓ６６９）。  
待ちキュー処理において、要求振分け部３１２は、応答に付帯されている対話状態ＩＤを取得し（Ｓ６８１）、取得した対話状態ＩＤが「ＮＵＬＬ」でなく（Ｓ６８２：ＹＥＳ）、その対話状態ＩＤが処理中要求管理テーブルＡ３４０に登録されておらず（Ｓ６８３：ＹＥＳ）、かつ、処理待ち要求管理テーブル３６０にその対話状態ＩＤが登録されている場合（Ｓ６８４：ＹＥＳ）には、処理待ち要求キュー３２２から上記要求ＩＤに対応する要求を順次取り出して（Ｓ６８５）、処理待ち要求管理テーブル３６０から上記要求ＩＤに対応するレコードを削除し（Ｓ６８６）、Ａフラグ３３２が「０」であれば（Ｓ６８７：ＹＥＳ）、ＡＰ／ＢＬ実行環境１（４００）に要求を振分け（Ｓ６８８）、Ａフラグ３３２が「１」であれば（Ｓ６７８：ＮＯ）、ＡＰ／ＢＬ実行環境０（４００）に要求を振分けて、スタンバイのＡＰ／ＢＬ実行環境４００に要求を振分けるようにする。
【００５２】
次に、要求振分け部３１２は、処理中要求管理テーブルＡ３４０に要求ＩＤが登録されていなければ（Ｓ６７０：ＮＯ）、Ａフラグ３３２にスタンバイのＡＰ／ＢＬ実行環境４００を示す値として（（Ａフラグ３３２の値＋１）ｍｏｄ２））を設定し（Ｓ６７１）、Ａ／Ｓ切替フラグ３３１を「偽」として（Ｓ６７２）、アクティブなＡＰ／ＢＬ実行環境４００とスタンバイのＡＰ／ＢＬ実行環境４００との入れ替え処理を終了する。ここで、要求振分け部３１２は、アクティブなＡＰ／ＢＬ実行環境４００がスタンバイのＡＰ／ＢＬ実行環境４００に切り替わった旨の通知を、スタンバイとなったＡＰ／ＢＬ実行環境４００に通知し、通知を受けたＡＰ／ＢＬ実行環境４００のサービス品質目標回復部４１３は、例えば、メモリ領域の強制ガーベージコレクションやＡＰ／ＢＬ実行環境４００の再起動、共有メモリ領域２２１に記憶しているキャッシュ２３２の最適化や、各種メモリに記憶しているデータの最適配置化など、予め設定されたレスポンス時間やスループット等のサービス品質目標を達成するための処理を行う（Ｓ６７３）。これにより、アクティブからスタンバイとなったＡＰ／ＢＬ実行環境４００ではサービス品質目標を達成することができるようになり、スタンバイからアクティブとなったＡＰ／ＢＬ実行環境４００において、処理効率が低下してきた場合には、上記と同様にしてアクティブスタンバイ切替処理を行うことで、サービス品質を維持することができる。
【００５３】
ＡＰ／ＢＬ実行環境４００からの応答が応答キュー３２３に登録されると、ディスパッチャ３００の要求応答部３１３が、その応答をクライアント１０に送信する。図１８に要求応答部３１３による応答処理の流れを示す。要求応答部３１３は、応答キュー３２３に応答が登録されると（Ｓ７０１）、応答キュー３２３から要求ＩＤと応答とを取得し（Ｓ７０２）、取得した応答をクライアント１０に送信する（Ｓ７０３）。
【００５４】
＝＝＝情報処理システムの他の構成例＝＝＝  
なお、本実施形態のサーバ２０は、上述した図１のような構成以外にも、一般的な構成の情報処理システムにおけるアプリケーションサーバを実現するサーバコンピュータと置き換えることができる。したがって、従来の高可用性・高信頼性技術をそのまま適用できる。
【００５５】
例えば、図１９に示すように、本実施形態のサーバ２０を複数含むようにしてもよい。図１９に示す情報処理システムは、二重化された負荷分散装置８１と、水平スケーリングされたサーバ２０と、二重化されたデータベースサーバ８２とを含んで構成されている。このような可用性及び信頼性が高くなるように構成されている情報処理システムにおいても、本実施形態のサーバ２０を透過的に適用することができる。
【００５６】
また、図２０に示すように、業務アプリケーションプログラムを実行するためのサーバコンピュータと、ビジネスロジックプログラムを実行するためのサーバコンピュータとを分離した構成の情報処理システムに本実施形態のサーバ２０を適用することもできる。
【００５７】
以上、本実施形態について説明したが、上記実施形態は本発明の理解を容易にするためのものであり、本発明を限定して解釈するためのものではない。本発明は、その趣旨を逸脱することなく、変更、改良され得ると共に、本発明にはその等価物も含まれる。
【図面の簡単な説明】
【００５８】
【図１】本発明における一実施形態である情報処理システムの構成を示す図である。
【図２】本発明における一実施形態であるサーバ２０のハードウェア構成を示す図である。
【図３】本発明における一実施形態であるサーバ２０の構成を示した説明図である。
【図４】ディスパッチャ３００を詳細に示した説明図である。
【図５】アクティブな業務ＡＰ／ＢＬ実行環境４００で処理中の要求を管理するテーブルである。
【図６】スタンバイの業務ＡＰ／ＢＬ実行環境４００で処理中の要求を管理するテーブルである。
【図７】アクティブ／スタンバイ切替処理中に、一時的に実行を待たされる要求を管理するテーブルである。
【図８】ディスパッチャ３００の起動処理の流れを示すフローチャートである。
【図９】業務ＡＰ／ＢＬ実行環境４００の起動処理の流れを示すフローチャートである。
【図１０】サービス品質目標未到達予兆監視部４１２の処理の流れを示すフローチャートである。
【図１１】サービス品質目標未到達予兆検知イベントが発生したときのディスパッチャ３００の処理の流れを示すフローチャートである。
【図１２】ディスパッチャ３００によるクライアント１０からの要求の到着を監視する処理の流れを示すフローチャートである。
【図１３】ディスパッチャ３００による要求の振分け処理の流れを示すフローチャートである。
【図１４】アクティブスタンバイ切替時の振分け処理の流れを示すフローチャートである。
【図１５】ＡＰ／ＢＬ実行環境４００による、要求に応じたプログラムの実行処理の流れ示すフローチャートである。
【図１６】ディスパッチャ３００による応答監視処理の流れを示すフローチャートである。
【図１７】待ちキュー処理の流れを示すフローチャートである。
【図１８】応答キュー監視処理の流れを示すフローチャートである。
【図１９】情報処理システムの構成例を示す図である。
【図２０】情報処理システムの構成例を示す図である。
【符号の説明】
【００５９】
１０    クライアント                      ２０    サーバ
３０    通信ネットワーク
２０１  ＣＰＵ                            ２０２  主記憶装置
２０３  ２次記憶装置                      ２０４  ネットワークインタフェース
２０５  バス                              ２１１  実行環境プログラム
２１２  ディスパッチャプログラム          ２１３  オペレーティングシステム
２２１  共有メモリ領域                    ２２２  永続記憶領域
２３１  対話状態                          ２３２  キャッシュ
２４１  環境設定情報                      ２４２  ＡＰ／ＢＬ配備情報
３００  ディスパッチャ                    ３１１  要求受信部
３１２  要求振分け部                      ３１３  要求応答部
３２１  要求実行キュー                    ３２２  処理待ち要求キュー
３２３  応答キュー                        ３３１  Ａ／Ｓ切替フラグ
３３２  Ａフラグ                          ３４０  処理中要求管理テーブルＡ
３５０  処理中要求管理テーブルＳ          ３６０  処理待ち要求管理テーブル
４００  ＡＰ／ＢＬ実行環境                ４１１  ＡＰ／ＢＬ実行部
４１２  サービス品質目標未到達予兆監視部  ４１３  サービス品質目標回復部
８１    負荷分散装置                      ８２    データベースサーバ
【図１】
2007004595.tif 000003
【図２】
2007004595.tif 000004
【図３】
2007004595.tif 000005
【図４】
2007004595.tif 000006
【図５】
2007004595.tif 000007
【図６】
2007004595.tif 000008
【図７】
2007004595.tif 000009
【図８】
2007004595.tif 000010
【図９】
2007004595.tif 000011
【図１０】
2007004595.tif 000012
【図１１】
2007004595.tif 000013
【図１２】
2007004595.tif 000014
【図１３】
2007004595.tif 000015
【図１４】
2007004595.tif 000016
【図１５】
2007004595.tif 000017
【図１６】
2007004595.tif 000018
【図１７】
2007004595.tif 000019
【図１８】
2007004595.tif 000020
【図１９】
2007004595.tif 000021
【図２０】
2007004595.tif 000022