(57)【要約】【課題】本発明は、処理効率を格段に向上させ得るサーバ装置を提案する。【解決手段】サーバ装置であって、ロードが完了したライブラリを格納する呼出ライブラリ格納領域から前記ライブラリを呼び出して、クライアント装置からの要求を処理する第１の制御部と、前記第１の制御部と非同期に、前記呼出ライブラリ格納領域と異なる格納領域に新たなライブラリをロードする第２の制御部とを備え、前記第１の制御部は、前記第２の制御部において前記新たなライブラリのロードが完了した場合、前記新たなライブラリの格納領域を前記呼出ライブラリ格納領域に設定することを特徴とする。【選択図】図３
2011118522.tif 000002
【特許請求の範囲】
【請求項１】
ロードが完了したライブラリを格納する呼出ライブラリ格納領域から前記ライブラリを呼び出して、クライアント装置からの要求を処理する第１の制御部と、
前記第１の制御部と非同期に、前記呼出ライブラリ格納領域と異なる格納領域に新たなライブラリをロードする第２の制御部と
を備え、
前記第１の制御部は、
前記第２の制御部において前記新たなライブラリのロードが完了した場合、前記新たなライブラリの格納領域を前記呼出ライブラリ格納領域に設定する
ことを特徴とするサーバ装置。
【請求項２】
前記第２の制御部は、
前記第１の制御部による前記設定が完了した後に、前記第１の制御部が前記設定前に呼び出していたライブラリをアンロードする
ことを特徴とする請求項１に記載のサーバ装置。
【請求項３】
前記第２の制御部は、
前記第１の制御部が呼び出すライブラリが、前記第２の制御部の起動から何回目のロード処理によって取得したライブラリであるかを示す呼出世代情報と、前記第２の制御部がロード完了したライブラリが、前記第２の制御部の起動から何回目のロード処理によって取得したライブラリであるかを示すロード世代情報とを含んで構成される世代情報を作成し、
前記新たなライブラリのロードが完了した場合、前記ロード世代情報を更新し、
前記第１の制御部は、
前記呼出世代情報と前記ロード世代情報とが異なる場合、前記呼出世代情報を前記ロード世代情報と同一となるように更新し、前記新たなライブラリの格納領域を前記呼出ライブラリ格納領域に設定する
ことを特徴とする請求項１に記載のサーバ装置。
【請求項４】
サーバ装置の制御方法であって、
第１の制御部が、ロードが完了したライブラリを格納する呼出ライブラリ格納領域から前記ライブラリを呼び出して、クライアント装置からの要求を処理する第１のステップと、
第２の制御部が、前記第１の制御部と非同期に、前記呼出ライブラリ格納領域と異なる格納領域に新たなライブラリをロードする第２のステップと
を備え、
前記第１のステップでは、
前記第２のステップによる前記新たなライブラリのロードが完了した場合、前記新たなライブラリの格納領域を前記呼出ライブラリ格納領域に設定する
ことを特徴とするサーバ装置の制御方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、長時間の稼働が求められるサーバ装置及びその制御方法に関する。
【背景技術】
【０００２】
従来、２４時間稼働することが求められるシステムでは、クライアント装置からの処理要求の受付停止時間を短縮すべく、アプリケーションプログラム（Application Program :AP）が呼び出すアプリケーションライブラリを動的に置換する方式が必要となる。
【０００３】
とりわけ、大規模なシステムにおいては、アプリケーションプログラムの数も多くなり、置換が必要となるアプリケーションライブラリの数も多くなるため、置換処理時間を極力短くしてトランザクションの遅延時間を短くすることが望まれる。
【０００４】
例えば、動的にアプリケーションライブラリを置換するシステムとして、以下の特許文献１に記載のデータ処理装置が開示されている。すなわち、特許文献１に記載のデータ処理装置は、マルチスレッドシステム構成の処理スレッドのうち、現在用意されたアプリケーションライブラリを使用して電文の処理が可能な処理スレッド（置換不要処理スレッド）についてはそのまま処理を行わせる。一方、データ処理装置は、アプリケーションライブラリの置換が必要な処理スレッドについては、置換用アプリケーションライブラリの読み込みの処理を、置換不要処理スレッドが電文の処理を行っているときに時間的に並列して行わせる。
【先行技術文献】
【特許文献】
【０００５】
【特許文献１】特開２００６−２７７０４７号公報
【発明の概要】
【発明が解決しようとする課題】
【０００６】
従来では、図６に示すように、置換処理実行前の最後のトランザクションが完了してから、それまでに使用していたアプリケーションライブラリのアンロード、新たなアプリケーションライブラリのロードを行い、新たなアプリケーションライブラリを呼び出すための情報作成が完了してから、新たなアプリケーションライブラリを使用してトランザクションを再開していた。
【０００７】
このため、大量のアプリケーションライブラリが使用される大規模システムにおいて、大量のアプリケーションライブラリを置換するような場合、アプリケーションライブラリの置換処理が長くなり、その結果、トランザクションの遅延時間が長くなるという問題がある。
【０００８】
また、特許文献１に記載のデータ処理装置でも、置換が必要な処理スレッドについては、置換処理の間は処理要求の受付を停止することとなるため、上述の場合と同様の問題がある。
【０００９】
本発明は以上の点を考慮してなされたものであり、処理効率を格段に向上させ得るサーバ装置及びその制御方法を提案するものである。
【課題を解決するための手段】
【００１０】
かかる課題を解決するために本発明は、サーバ装置であって、ロードが完了したライブラリを格納する呼出ライブラリ格納領域から前記ライブラリを呼び出して、クライアント装置からの要求を処理する第１の制御部と、前記第１の制御部と非同期に、前記呼出ライブラリ格納領域と異なる格納領域に新たなライブラリをロードする第２の制御部とを備え、前記第１の制御部は、前記第２の制御部において前記新たなライブラリのロードが完了した場合、前記新たなライブラリの格納領域を前記呼出ライブラリ格納領域に設定することを特徴とする。
【００１１】
また、本発明は、サーバ装置の制御方法であって、第１の制御部が、ロードが完了したライブラリを格納する呼出ライブラリ格納領域から前記ライブラリを呼び出して、クライアント装置からの要求を処理する第１のステップと、第２の制御部が、前記第１の制御部と非同期に、前記呼出ライブラリ格納領域と異なる格納領域に新たなライブラリをロードする第２のステップとを備え、前記第１のステップでは、前記第２のステップによる前記新たなライブラリのロードが完了した場合、前記新たなライブラリの格納領域を前記呼出ライブラリ格納領域に設定することを特徴とする。
【００１２】
従って、ライブラリのロードを行うための専用の第２の制御部を用意し、ライブラリを呼び出す第１の制御部と非同期にライブラリのロードを行うため、クライアント装置からの処理要求の受付を止めることなくライブラリを動的に置換することが可能となる。
【発明の効果】
【００１３】
本発明によれば、処理効率を格段に向上させ得るサーバ装置及びその制御方法を実現することができる。
【図面の簡単な説明】
【００１４】
【図１】アプリケーションサーバのハードウェア構成を示すブロック図の一例である。
【図２】アプリケーションサーバの機能的構成を示すブロック図の一例である。
【図３】アプリケーションサーバの制御手順を示すフローチャートの一例である。
【図４】自プロセス用ライブラリ情報の構成を示す概念図の一例である。
【図５】世代情報の構成を示す概念図の一例である。
【図６】従来のアプリケーションサーバの制御手順を示すフローチャートの一例である。
【発明を実施するための形態】
【００１５】
以下、本発明の一実施の形態を、図面を参照して詳細に説明する。
【００１６】
図１は、アプリケーションサーバ１のハードウェア構成を例示する図である。アプリケーションサーバ１（サーバ装置）は、例えば、ＣＰＵ（Central Processing Unit）２、ＣＰＵ２にバス結合されたＲＯＭ（Read Only Memory）３、ＲＡＭ（Random Access Memory）４、記憶部５、入力部６、表示部７、および入出力インタフェース８など、通常のコンピュータ装置と同様のハードウェアを備えている。ここで、例えば、記憶部５は、ＨＤＤ（Hard Disk Drive）などの外部記憶装置である。
【００１７】
アプリケーションサーバ１は、物理的には、専用化したシステム、あるいは汎用の情報処理装置のいずれであっても良い。例えば、一般的な構成の情報処理装置において、本発明のアプリケーションサーバ１における各処理は、規定した処理を行うアプリケーションプログラムを呼び出すことによって実現することもできる。
【００１８】
図２は、アプリケーションサーバ１の機能的構成を例示する図である。アプリケーションサーバ１は、機能的には、少なくとも処理要求実行スレッド１１（第１の制御部）、ロード処理実行スレッド１２（第２の制御部）及びアプリケーション動的置換手段１３を備えている。処理要求実行スレッド１１、ロード処理実行スレッド１２及びアプリケーション動的置換手段１３は、主にＣＰＵ２がＲＯＭ３やＲＡＭ４に格納されるプログラムを呼び出して、各ハードウェアを制御することによって実現することができる。
【００１９】
さらに、アプリケーションサーバ１は、アプリケーション動的置換対象ライブラリＤＢ（Database）１４、自プロセス用ライブラリ情報１５、全ライブラリ情報管理テーブル１６及び世代情報１７を有する。さらに、アプリケーションサーバ１は、アプリケーションライブラリを格納するための格納領域１８を有しており、格納領域１８は、少なくとも２つのライブラリ格納領域１８Ａ、１８Ｂを含んでいる。
【００２０】
アプリケーション動的置換対象ライブラリＤＢ１４は、例えば、記憶部５を用いて構成される。自プロセス用ライブラリ情報１５、全ライブラリ情報管理テーブル１６及び世代情報１７は、例えば、ＲＡＭ４に格納される。格納領域１８は、ＲＡＭ４を用いて構成される。
【００２１】
処理要求実行スレッド１１は、クライアント装置１９からの処理要求を受信すると、格納領域１８の呼出ライブラリ格納領域から、対応するアプリケーションライブラリの関数を呼び出して処理要求を処理し、処理後にクライアント装置１９に応答する。呼出ライブラリ格納領域は、処理要求実行スレッド１１が呼び出すアプリケーションライブラリ（ライブラリ）を格納する領域であり、ライブラリ格納領域１８Ａ、１８Ｂのいずれかが呼出ライブラリ格納領域に設定される。
【００２２】
ロード処理実行スレッド１２は、初期設定として、アプリケーションライブラリの関数の呼出に必要なアプリケーションライブラリをアプリケーション動的置換対象ライブラリＤＢ１４からライブラリ格納領域１８Ａ、１８Ｂのいずれかにロードして、呼出ライブラリ格納領域に設定する。また、ロード処理実行スレッド１２は、動的置換処理として、処理要求実行スレッド１１と非同期に、ライブラリ格納領域１８Ａ、１８Ｂのうち格納領域１８内の呼出ライブラリ格納領域と異なる領域に、新たなアプリケーションライブラリをロードする。処理要求実行スレッド１１は、ロード処理実行スレッド１２において新たなアプリケーションライブラリのロードが完了した場合、新たなアプリケーションライブラリの格納領域を、呼出ライブラリ格納領域に設定する。一方、ロード処理実行スレッド１２は、新たなライブラリの格納領域が呼出ライブラリ格納領域に設定された後に、古いアプリケーションライブラリ（処理要求実行スレッド１１が前記設定前に呼び出していたアプリケーションライブラリ）をアンロードする。
【００２３】
なお、アプリケーションプログラムとは、特定の目的のために設計され、特定の処理を行うためのプログラムをいう。アプリケーションライブラリとは、ある特定の機能を有するプログラム（関数）を、他のプログラム（アプリケーションプログラム）から利用できるように部品化し、複数のプログラムを１つのファイルにまとめたものをいう。アプリケーションライブラリ自体は、単独で呼び出すことはできず、例えば、アプリケーションプログラムに呼び出されることによりその一部として動作する。ロードとは、外部記憶装置に記憶されているデータ、プログラム、アプリケーションライブラリなどをＲＡＭ４などのメインメモリに読み込むことをいう。アンロードとは、メインメモリに展開されたデータ、プログラム、アプリケーションライブラリなどを削除し、その領域を解放することをいう。
【００２４】
アプリケーション動的置換手段１３は、アプリケーション動的置換対象ライブラリＤＢ１４を参照し、ライブラリ情報を全ライブラリ情報管理テーブル１６に展開する。自プロセス用ライブラリ情報１５は、全ライブラリ情報管理テーブル１６から、処理要求実行スレッド１１にとって必要なライブラリ情報を抽出して構成される。自プロセス用ライブラリ情報１５は、ロード処理実行スレッド１２によって作成される。
【００２５】
世代情報１７は、呼出ライブラリ格納領域の設定を切り替えるための情報である。世代情報１７は、処理要求実行スレッド１１が呼び出すアプリケーションライブラリが、ロード処理実行スレッド１２の起動から何回目のロード処理によって取得したアプリケーションライブラリであるかを示す呼出世代情報と、ロード処理実行スレッド１２がロード完了したアプリケーションライブラリが、ロード処理実行スレッド１２の起動から何回目のロード処理によって取得したライブラリであるかを示すロード世代情報とを含んで構成される。
【００２６】
後述するように、ロード処理実行スレッド１２は、新たなアプリケーションライブラリのロードが完了した場合、ロード世代情報を更新し、一方、処理要求実行スレッド１１は、呼出世代情報とロード世代情報とが異なる場合、呼出世代情報をロード世代情報と同一となるように更新し、新たなアプリケーションライブラリの格納領域を呼出ライブラリ格納領域に設定する。
【００２７】
次に、アプリケーションサーバ１の動作を、図２及び図３を参照して説明する。
【００２８】
段階（ａ）及び（ｂ）は、要求処理実行前の段階である。
【００２９】
（ａ）ロード処理実行スレッド１２は、起動時に全ライブラリ情報管理テーブル１６を参照し、全ライブラリ情報管理テーブル１６のアプリケーションライブラリの一覧から、処理要求実行スレッド１１に関連するアプリケーションライブラリをロード世代番号「１」のアプリケーションライブラリとして、例えば、ライブラリ格納領域１８Ａにロードし、当該ライブラリ格納領域１８Ａを呼出ライブラリ格納領域に設定して、ロード世代番号「１」の自プロセス用ライブラリ情報１５を作成する。
【００３０】
ここで、図４は、自プロセス用ライブラリ情報１５の構成を例示する図である。自プロセス用ライブラリ情報１５は、アプリケーションライブラリのロード世代番号、関数名、関数アドレス及びライブラリファイル（格納先、ライブラリ名）を管理する。
【００３１】
図５は、世代情報１７の構成を例示する図である。世代情報１７は、処理要求実行スレッド１１がアプリケーションライブラリの関数を呼び出すアプリケーションライブラリの世代の番号を表す呼出世代（呼出世代情報）とロード処理実行スレッド１２がアプリケーションライブラリのロードを完了しているアプリケーションライブラリの世代の番号を表すロード世代（ロード世代情報）とを管理する。
【００３２】
（ｂ）ロード処理実行スレッド１２は、起動時に世代情報１７を作成し、世代情報１７の呼出世代を呼出世代番号「１」として、及びロード世代をロード世代番号「１」として初期化する。
【００３３】
段階（ｃ）は、動的置換処理実行前の段階である。
【００３４】
（ｃ）処理要求実行スレッド１１は、クライアント装置１９からの処理要求を受信すると、世代情報１７のロード世代番号と呼出世代番号とを比較する。処理要求実行スレッド１１は、呼出世代番号とロード世代番号とが同一であるため、世代情報１７の呼出世代のアプリケーションライブラリにおける、対応する関数を呼出ライブラリ格納領域から呼び出して、クライアント装置１９から処理要求を処理する。
【００３５】
段階（ｄ）〜（ｈ）は、動的置換処理実行中の段階である。
【００３６】
（ｄ）アプリケーション動的置換手段１３は、アプリケーション動的置換対象ライブラリＤＢ１４を参照し、全ライブラリ情報管理テーブル１６の内容を更新し、ロード処理実行スレッド１２に置換処理要求を行う。本処理については、例えば特開2005-157536号公報等で記述されているためここでは詳細に記述しない。
【００３７】
（ｅ）ロード処理実行スレッド１２は、全ライブラリ情報管理テーブル１６を参照し、アプリケーションライブラリの一覧から、処理要求実行スレッド１１に関連するアプリケーションライブラリの情報を取得し、例えば、自プロセス用ライブラリ情報１５にロード世代番号「２」のアプリケーションライブラリの情報を追加する。
【００３８】
（ｆ）ロード処理実行スレッド１２は、ロード世代番号「２」のアプリケーションライブラリについて、例えば、既にロードされているロード世代番号「１」のアプリケーションライブラリが格納されている呼出ライブラリ格納領域（ここでは、ライブラリ格納領域１８Ａ）と異なるライブラリ格納領域１８Ｂにロードする。
【００３９】
（ｇ）処理要求実行スレッド１１は、（ｄ）〜（ｆ）を実行中にクライアント装置１９から処理要求を受けた場合、世代情報１７のロード世代番号と呼出世代番号とを比較する。段階（ｄ）〜（ｆ）では、世代情報１７のロード世代番号と呼出世代番号とが一致するので、置換処理実行前と同様に、呼出ライブラリ格納領域（ここでは、ライブラリ格納領域１８Ａ）のアプリケーションライブラリの対応する関数を呼び出してクライアント装置１９から処理要求を処理する。
【００４０】
（ｈ）一方、ロード処理実行スレッド１２は、ロード世代番号「２」のアプリケーションライブラリのロードが完了した場合、世代情報１７のロード世代をロード世代番号「２」に更新する。これにより、動的置換処理が完了する。
【００４１】
段階（ｉ）及び（ｊ）は、動的置換処理実行後の段階である。
【００４２】
（ｉ）処理要求実行スレッド１１は、（ｈ）が完了した後でクライアント装置１９から処理要求を受信した場合、世代情報１７のロード世代番号と呼出世代番号とを比較する。段階（ｈ）では、世代情報１７のロード世代番号と呼出世代番号とが異なる、すなわち、世代情報１７のロード世代番号が呼出世代番号よりも大きくなっているので、ロード世代番号「２」のアプリケーションライブラリのライブラリ格納領域１８Ｂを呼出ライブラリ格納領域に設定し、世代情報１７の呼出世代番号をロード世代番号と同じ「２」に更新する。これにより、以降はロード世代番号「２」のアプリケーションライブラリの対応する関数を呼び出してクライアント装置１９からの処理要求を処理することになる。
【００４３】
（ｊ）ロード処理実行スレッド１２は、世代情報１７の呼出世代番号が「２」になったことを検知した後、置換後に不要となったアプリケーションライブラリ、すなわち、処理要求実行スレッド１１が呼び出しライブラリ格納領域の設定を行う前に呼び出していたライブラリ（ライブラリ格納領域１８Ａに格納されているアプリケーションライブラリ）のアンロードを行う。以下、同様にして、アプリケーションサーバ１は、状況に応じて、段階（ｃ）〜（ｊ）の処理を繰り返す。
【００４４】
このようにして、アプリケーションサーバ１は、処理要求実行スレッド１１と、ロード処理実行スレッド１２とを非同期に動作させ、新たなアプリケーションライブラリをロードしている場合、既にロードされているアプリケーションライブラリの対応する関数を呼び出してクライアント装置１９からの処理要求を処理する。
【００４５】
また、アプリケーションサーバ１は、新たなアプリケーションライブラリのロードが完了した場合、新たなアプリケーションライブラリの格納領域を呼出ライブラリ格納領域に設定して、新たなアプリケーションライブラリの対応する関数を呼び出してクライアント装置１９からの処理要求を処理する。
【００４６】
そして、アプリケーションサーバ１は、既にロードされているアプリケーションライブラリのアンロードを、新たなアプリケーションライブラリのロードが完了し、新たなアプリケーションライブラリの格納領域が呼出ライブラリ格納領域に設定された後に行う。
【００４７】
以上の処理によって、アプリケーションサーバ１は、クライアント装置１９からの処理要求を止めることなくアプリケーションライブラリを動的に置換することが可能となる。
【００４８】
そして、本発明の効果として、アプリケーションサーバ１は、大量のアプリケーションライブラリを置換する必要がある場合であっても、クライアント装置からの受付処理の停止時間を短くすることが可能となる。
【産業上の利用可能性】
【００４９】
本発明は、２４時間稼動を行う大規模システムにおいて、大量のアプリケーションライブラリの機能追加やバグ修正を、クライアント装置からの受付処理を停止することなく行う場合に有効である。
【符号の説明】
【００５０】
１……アプリケーションサーバ、２……ＣＰＵ、３……ＲＯＭ、４……ＲＡＭ、５……記憶部、６……入力部、７……表示部、８……入出力インタフェース、１１……処理要求実行スレッド、１２……ロード処理実行スレッド、１３……アプリケーション動的置換手段、１４……アプリケーション動的置換ライブラリ、１５……自プロセス用ライブラリ情報、１６……全ライブラリ情報管理テーブル、１７……世代情報、１８……格納領域、１９……クライアント装置
【図１】
2011118522.tif 000003
【図２】
2011118522.tif 000004
【図３】
2011118522.tif 000005
【図４】
2011118522.tif 000006
【図５】
2011118522.tif 000007
【図６】
2011118522.tif 000008