(57)【要約】【課題】  計算機システムを構成しているいずれかの計算機が動作不能になっても、分散処理の一連の流れを追跡できるようにする。【解決手段】  計算機100AのアプリケーションＰ120が、一連の処理中の一部の処理を計算機100Bに依頼する（Ｓ106）。一連の処理に対して発行されたＩＤが付されている計算機100Aのログ情報は、計算機100Aのログ送信Ｐ152により、計算機Ｂに送られ（Ｓ110）、計算機100Bのログ情報受信Ｐ153がこのログ情報を受信してログバッファ160に格納する（Ｓ221,222）。計算機100BのアプリケーションＰ120は依頼された処理を実行し、この処理結果を計算機100Aに返す（Ｓ206）。依頼された処理の実行で生じた前記ＩＤが付されている計算機100Bのログ情報は、計算機100Bのログ送信Ｐ152により、計算機100Aに送られ（Ｓ210）、計算機100Aのログ情報受信Ｐ153がこのログ情報を受信してログバッファ１６０に格納する（Ｓ121,222）。【選択図】  図１２
2007058414.tif 000002
【特許請求の範囲】
【請求項１】
一連の処理を複数の計算機で分散処理する際に、該一連の処理の実行過程で生成される各処理毎のログ情報を管理する計算機のログ管理プログラムにおいて、
前記計算機の処理過程で生成されるログ情報を該計算機内の記憶領域に記憶する自処理ログ記憶ステップと、
前記計算機が他の計算機にデータを送信して該データを他の計算機に処理させた際に、該他の計算機による該データに関連する処理で生成されたログ情報を該他の計算機から受信し、及び、他の計算機が該計算機にデータを送信して該データを該計算機に処理させる際に、該他の計算機による該データに関連する処理で生成されたログ情報を該他の計算機から受信するログ受信ステップと、
前記ログ受信ステップで受信した前記ログ情報を前記記憶領域内に記憶する他処理ログ記憶ステップと、
を前記計算機に実行させることを特徴とするログ管理プログラム。
【請求項２】
請求項１に記載のログ管理プログラムにおいて、
前記計算機が他の計算機にデータを送信して該データを該他の計算機に処理させる際に、該計算機による該データに関連する処理で生成されたログ情報を該他の計算機に送信し、及び、他の計算機が該計算機にデータを送信して該データを該計算機に処理させた際に、該計算機による該データに関連する処理で生成されたログ情報を該他の計算機に送信するログ送信ステップ、
を前記計算機に実行させることを特徴とするログ管理プログラム。
【請求項３】
請求項１及び２のいずれか一項に記載のログ管理プログラムにおいて、
前記ログ情報には、外部からの処理要求で実行させる一連の処理に対して付され、他の一連の処理と区別し得る一意な処理識別子を含み、
前記自処理ログ記憶ステップ及び前記他処理ログ記憶ステップでは、前記処理識別子を含むログ情報を前記記憶領域に記憶する、
ことを特徴とするログ管理プログラム。
【請求項４】
請求項３に記載のログ管理プログラムにおいて、
一連の処理の実行過程で生成される各処理毎のログ情報の連番を、該ログ情報に含ませる連番発行ステップを前記計算機に実行させ、
前記連番発行ステップでは、ログ情報に連番を含ませる際、該ログ情報の処理識別子と同じ処理識別子のログ情報のうちで最後の連番を含むログ情報の連番に１を加えた値を、該ログ情報の連番とし、該ログ情報の処理識別子と同じ処理識別子のログ情報がない場合には、連番としての最初の番号を該ログ情報の連番とする、
ことを特徴とするログ管理プログラム。
【請求項５】
請求項１から４のいずれか一項に記載のログ管理プログラムにおいて、
前記ログ送信ステップでは、予め定められた時間間隔になったタイミング、前記データの送信に同期したタイミング、前記記憶領域内のデータ記憶量が予め定められた量になったタイミング、のいずれかのタイミングで、前記ログ情報を送信する、
ことを特徴とするログ管理プログラム。
【請求項６】
請求項５に記載のログ管理プログラムにおいて、
前記ログ送信ステップは、予め定められた時間間隔になったタイミング、前記データの送信に同期したタイミング、前記記憶領域内のデータ記憶量が予め定められた量になったタイミング、のいずれかのタイミングでログ情報を送信するかを外部から受け付ける送信タイミング受付ステップを含み、該送信タイミング受付ステップで受け付けたタイミングになると、前記ログ情報を送信する、
ことを特徴とするログ管理プログラム。
【請求項７】
一連の処理を複数の計算機で分散処理する際に、該一連の処理の実行過程で生成される各処理毎のログ情報を管理する計算機のログ管理方法において、
前記計算機の処理過程で生成されるログ情報を該計算機内の記憶領域に記憶する自処理ログ記憶工程と、
前記計算機が他の計算機にデータを送信して該データを他の計算機に処理させた際に、該他の計算機による該データに関連する処理で生成されたログ情報を該他の計算機から受信し、及び、他の計算機が該計算機にデータを送信して該データを該計算機に処理させる際に、該他の計算機による該データに関連する処理で生成されたログ情報を該他の計算機から受信するログ受信工程と、
前記ログ受信工程で受信した前記ログ情報を前記記憶領域内に記憶する他処理ログ記憶工程と、
を含むことを特徴とするログ管理方法。
【請求項８】
請求項７に記載のログ管理方法において、
前記計算機が他の計算機にデータを送信して該データを該他の計算機に処理させる際に、該計算機による該データに関連する処理で生成されたログ情報を該他の計算機に送信し、及び、他の計算機が該計算機にデータを送信して該データを該計算機に処理させた際に、該計算機による該データに関連する処理で生成されたログ情報を該他の計算機に送信するログ送信工程、
を含むことを特徴とするログ管理方法。
【請求項９】
複数の計算機を備え、一連の処理を複数の該計算機で分散処理する際に、該一連の処理の実行過程で生成される各処理毎のログ情報を管理する計算機システムにおいて、
複数の前記計算機のうちの第一の計算機は、プロセッサと記憶領域とを備え、
前記第一の計算機の前記プロセッサは、
前記第一の計算機の処理過程で生成されるログ情報を該第一の計算機内の前記記憶領域に記憶する自処理ログ記憶ステップと、
複数の前記計算機のうちの第二の計算機に未処理データを送信する処理データ送信ステップと、
前記第二の計算機から未処理データを受信する処理データ受信ステップと、
前記処理データ送信ステップで前記第二の計算機に前記未処理データを送信したことにより、該第二の計算機による該未処理データに関連する処理で生成されたログ情報を、該第二の計算機から受信し、及び、前記第二の計算機が前記未処理データを送信する過程で、該第二の計算機による該未処理データに関連する処理で生成されたログ情報を、該第二の計算機から受信するログ受信ステップと、
前記ログ受信ステップで受信した前記ログ情報を前記記憶領域内に記憶する他処理ログ記憶ステップと、
を実行し、
前記第二の計算機は、プロセッサを備え、
前記第二の計算機の前記プロセッサは、
前記第一の計算機から送信された前記未処理データを受信する処理データ受信ステップと、
前記第一の計算機に前記未処理データを送信する処理データ送信ステップと、
前記第二の計算機の前記処理データ受信ステップで受信した前記第一の計算機からの前記未処理データに関連する処理で生成された前記ログ情報を前記第一の計算機に送信し、前記第二の計算機の前記処理データ送信ステップで前記未処理データを送信する過程で、該未処理データに関連する処理で生成されたログ情報を該第一の計算機に送信するログ送信ステップと、
を実行する、
ことを特徴とする計算機システム。
【請求項１０】
請求項９に記載の計算機システムにおいて、
前記第二の計算機は、記憶領域を備え、
前記第二の計算機の前記プロセッサは、
前記第二の計算機の処理過程で生成されるログ情報を該第二の計算機内の前記記憶領域に記憶する自処理ログ記憶ステップと、
前記第二の計算機の前記処理データ送信ステップで前記第一の計算機に前記未処理データを送信したことにより、該第一の計算機による該未処理データに関連する処理で生成されたログ情報を、該第一の計算機から受信し、及び、前記第一の計算機が前記未処理データを送信する過程で、該第一の計算機による該未処理データに関連する処理で生成されたログ情報を、該第一の計算機から受信するログ受信ステップと、
前記ログ受信ステップで受信した前記ログ情報を前記第二の計算機の前記記憶領域内に記憶する他処理ログ記憶ステップと、
を実行し、
前記第一の計算機の前記プロセッサは、
前記第一の計算機の前記処理データ受信ステップで受信した前記第二の計算機からの前記未処理データに関連する処理で生成された前記ログ情報を前記第二の計算機に送信し、前記第一の計算機の前記処理データ送信ステップで前記未処理データを送信する過程で、該未処理データに関連する処理で生成されたログ情報を該第二の計算機に送信するログ送信ステップを実行する、
ことを特徴とする計算機システム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、一連の処理を複数の計算機で分散処理する計算機システム、これらの計算機での処理実行過程で生成されるログ情報を管理する計算機のログ管理プログラム、計算機のログ管理方法に関する。
【背景技術】
【０００２】
多くの計算機システムは、処理履歴をログという形で保存している。障害発生時には、このログを参照し、原因を分析するための手段として利用している。近年、計算機システムの構成は、複雑化しており、一つのタスクを複数の計算機で処理する、つまり分散処理するケースも見られるようになってきている。このような分散処理を行う計算機システムでは、障害発生時に複数の計算機毎の各ログを参照して処理の流れを追跡する必要があり、保守作業が極めて複雑で面倒である。
【０００３】
分散処理を行う計算機システムのログの参照を容易にし、保守作業を支援する技術として、以下の特許文献１に記述されている技術がある。この技術は、複数の計算機の各ログを一台の保守用計算機に収集し整形して表示させる技術である。この技術により、保守員は複数の計算機に跨るタスクにおいても一元化されたログを参照できるため、保守性の向上、ひいては障害復旧の時間短縮という効果が期待できる。
【０００４】
【特許文献１】特開２００４−２２７３６０号公報
【発明の開示】
【発明が解決しようとする課題】
【０００５】
しなしながら、ログ参照は、その多くがシステム障害時に行うにも関わらず、特許文献１に記載の技術では、計算機システムを構成している複数の計算機のうちのいずれかの計算機に障害が発生して動作不能になっていると、その計算機のログを参照できず、処理の流れを途中までしか追跡できないという問題点がある。
【０００６】
そこで、本発明は、このような従来技術の問題点に着目し、計算機システムを構成しているいずれかの計算機が動作不能になっても、分散処理の一連の流れを追跡することができるログ管理プログラム、ログ管理方法、及び計算機システムを提供することを目的とする。
【課題を解決するための手段】
【０００７】
前記問題点を解決するためのログ管理プログラムに係る発明は、
一連の処理を複数の計算機で分散処理する際に、該一連の処理の実行過程で生成される各処理毎のログ情報を管理する計算機のログ管理プログラムにおいて、
前記計算機の処理過程で生成されるログ情報を該計算機内の記憶領域に記憶する自処理ログ記憶ステップと、
前記計算機が他の計算機にデータを送信して該データを他の計算機に処理させた際に、該他の計算機による該データに関連する処理で生成されたログ情報を該他の計算機から受信し、及び、他の計算機が該計算機にデータを送信して該データを該計算機に処理させる際に、該他の計算機による該データに関連する処理で生成されたログ情報を該他の計算機から受信するログ受信ステップと、
前記ログ受信ステップで受信した前記ログ情報を前記記憶領域内に記憶する他処理ログ記憶ステップと、を前記計算機に実行させることを特徴とする。
【０００８】
ここで、前記ログ管理プログラムにおいて、
前記計算機が他の計算機にデータを送信して該データを該他の計算機に処理させる際に、該計算機による該データに関連する処理で生成されたログ情報を該他の計算機に送信し、及び、他の計算機が該計算機にデータを送信して該データを該計算機に処理させた際に、該計算機による該データに関連する処理で生成されたログ情報を該他の計算機に送信するログ送信ステップを前記計算機に実行させることが好ましい。
【０００９】
また、前記問題点を解決するための計算機のログ管理方法に係る発明は、
一連の処理を複数の計算機で分散処理する際に、該一連の処理の実行過程で生成される各処理毎のログ情報を管理する計算機のログ管理方法において、
前記計算機の処理過程で生成されるログ情報を該計算機内の記憶領域に記憶する自処理ログ記憶工程と、
前記計算機が他の計算機にデータを送信して該データを他の計算機に処理させた際に、該他の計算機による該データに関連する処理で生成されたログ情報を該他の計算機から受信し、及び、他の計算機が該計算機にデータを送信して該データを該計算機に処理させる際に、該他の計算機による該データに関連する処理で生成されたログ情報を該他の計算機から受信するログ受信工程と、
前記ログ受信工程で受信した前記ログ情報を前記記憶領域内に記憶する他処理ログ記憶工程と、を含むことを特徴とする。
【００１０】
前記問題点を解決するための計算機システムは、
複数の計算機を備え、一連の処理を複数の該計算機で分散処理する際に、該一連の処理の実行過程で生成される各処理毎のログ情報を管理する計算機システムにおいて、
複数の前記計算機のうちの第一の計算機は、プロセッサと記憶領域とを備え、
前記第一の計算機の前記プロセッサは、
前記第一の計算機の処理過程で生成されるログ情報を該第一の計算機内の前記記憶領域に記憶する自処理ログ記憶ステップと、
複数の前記計算機のうちの第二の計算機に未処理データを送信する処理データ送信ステップと、
前記第二の計算機から未処理データを受信する処理データ受信ステップと、
前記処理データ送信ステップで前記第二の計算機に前記未処理データを送信したことにより、該第二の計算機による該未処理データに関連する処理で生成されたログ情報を、該第二の計算機から受信し、及び、前記第二の計算機が前記未処理データを送信する過程で、該第二の計算機による該未処理データに関連する処理で生成されたログ情報を、該第二の計算機から受信するログ受信ステップと、
前記ログ受信ステップで受信した前記ログ情報を前記記憶領域内に記憶する他処理ログ記憶ステップと、
を実行し、
前記第二の計算機は、プロセッサを備え、
前記第二の計算機の前記プロセッサは、
前記第一の計算機から送信された前記未処理データを受信する処理データ受信ステップと、
前記第一の計算機に前記未処理データを送信する処理データ送信ステップと、
前記第二の計算機の前記処理データ受信ステップで受信した前記第一の計算機からの前記未処理データに関連する処理で生成された前記ログ情報を前記第一の計算機に送信し、前記第二の計算機の前記処理データ送信ステップで前記未処理データを送信する過程で、該未処理データに関連する処理で生成されたログ情報を該第一の計算機に送信するログ送信ステップと、
を実行することを特徴とする。
【発明の効果】
【００１１】
本発明によれば、一連の処理を分散処理する複数の計算機のうち、ある計算機と他の計算機との間で、一方の計算機の処理中に生成されたログ情報を互いに冗長的に保存するため、いずれかの計算機が動作不能になっても、分散処理の一連の流れを追跡することができる
【発明を実施するための最良の形態】
【００１２】
以下、本発明に係る計算機システムの一実施形態について、図面を用いて説明する。
【００１３】
本実施形態の計算機システムは、図１に示すように、複数の計算機１００Ａ,１００Ｂ相互がネットワーク２００で接続されているものである。このネットワーク２００には、同図では、以下の説明を簡略化するために、二台の計算機１００Ａ,１００Ｂが接続されているようにしか描いていないが、さらに多くの計算機が接続されていてもよいし、他の機器が接続されていてもよい。
【００１４】
各計算機１００Ａ,１００Ｂは、いずれも、メインプロセッサ１０１と入出力プロセッサ（以下、ＩＯＰ：Input Output Processor）１０２と通信アダプタ１０３とディスク制御装置１０４とディスク装置１０５とメモリ１１０とを備えている。
【００１５】
メモリ１１０には、メインプロセッサ１０１が実行する、アプリケーションプログラム１２０、ＩＤ発行プログラム１３０、処理データ転送プログラム１４０、ログ管理プログラム１５０等が記憶されている。また、このメモリ１１０には、ログ管理テーブルが展開されるログバッファ１６０の領域、通信先管理テーブル１７０の領域も確保されている。
【００１６】
アプリケーションプログラム１２０は、１つまたは複数存在し、トランザクション処理などの業務を行う。なお、実際には、このアプリケーションプログラム１２０を実行するメインプロセッサ１０１がトランザクション処理などの業務を行うのであるが、ここでは、説明を簡便化するためにプログラムを主体として説明している。また、以下の説明においても、プログラムの実行によるメインプロセッサ１０１の動作説明に関して、同様とする。
【００１７】
ＩＤ発行プログラム１３０は、アプリケーションプログラム１２０が外部から処理要求を受けたとき、この要求で実行する一連の処理、つまりトランザクションに対し計算機システム全体で識別可能な処理ＩＤを割り当てるプログラムである。なお、全てのアプリケーションプログラム１２０自身が処理ＩＤを割り当てる場合には、このＩＤ発行プログラム１３０は不要であることは言うまでもない。
【００１８】
処理データ転送プログラム１４０は、アプリケーションプログラム１２０が他の計算機のアプリケーションプログラムに処理を要求する場合に、未処理データを送受信する、さらに、他の計算機のアプリケーションプログラムで処理した処理結果データを送受信するプログラムである。この処理データ転送プログラム１４０は、データの送受信の際、ＩＯＰ１０２を用いて通信アダプタ１０２を制御し、ネットワーク２０を介してデータを送受信する。なお、通信のためのデバイスドライバが別に存在し、介在する構成であってもよい。
【００１９】
この処理データ転送プログラム１４０は、より具体的には、図２に示すように、処理データ送信プログラム１４１と処理データ受信プログラム１４２とを有している。処理データ送信プログラム１４１は、アプリケーションプログラム１２０により呼び出され、他の計算機のアプリケーションプログラム１２０が処理する未処理データを、又は自計算機のアプリケーションプログラム１２０が処理した処理結果データを、他の計算機の処理データ受信プログラム１４２に送信する。処理データ受信プログラム１４２は、他の計算機の処理データ送信プログラム１４１から送信されてきた未処理データ又は処理結果データを受信し、アプリケーションプログラム１２０に渡す。
【００２０】
ログ管理プログラム１５０は、アプリケーションプログラム１２０から記録要求されたログ情報をログバッファ１６０に記録すると共に、このログ情報を他の計算機に送信し、他の計算機からログ情報を受信するプログラムである。このログ管理プログラム１５０は、ログ情報を送信する際、送信先を通信先管理テーブル１７０の内容に基づき決定し、また、他の計算機からログ情報を受信した際には、当該ログ情報を自計算機のアプリケーション１２０のログ情報とマージしてログバッファ１６０に記録する。
【００２１】
このログ管理プログラム１５０は、より具体的には、図３に示すように、ログ記録プログラム１５１とログ送信プログラム１５２とログ受信プログラム１５３とを有している。ログ記録プログラム１５１は、アプリケーションプログラム１２０からログ情報の記録要求を受け、ログバッファ１６０にログ情報を格納する。ログ送信プログラム１５２は、処理データ転送プログラム１４０からの送信要求を受けて、ログバッファ１６０に記憶されているログ情報を他の計算機へ送信する。ログ受信プログラム１５３は、他の計算機から送信されてきたログ情報を受信し、ログバッファ１６０に、自計算機のログ情報とマージして格納する。
【００２２】
ログバッファ１６０は、自計算機内で生成されたログ情報および他の計算機で生成され送信されてきたログ情報を格納するメモリ１１０上の領域である。ログバッファ１６０内の記録内容は、後述するように、他の計算機からログ情報を受信して、このログバッファ１６０にこのログ情報を格納した際に、ディスク装置１０５へ格納される。
【００２３】
ログ情報６１は、図４に示すように、ＩＤ発行プログラム１３０が発行したＩＤ、つまり一つのトランザクションに対し計算機システム全体で識別可能な処理ＩＤデータ６２と、一連の処理での各処理毎の処理内容を表すログコンテンツ６４と、一連の処理内での各処理の処理順を示す連番データ６３と、を有している。このログ情報６１は、パケット化された状態で送受信される。このパケットで、処理ＩＤデータ６２、連番データ６３、ログコンテンツ６４以外の領域６１,６５には、他の情報を格納しもよい。
【００２４】
以上のログ情報６１が格納されるログバッファ１６０やディスク装置１０５には、図５に示すように、ログ管理テーブル１６１が展開されている。このログ管理テーブル１６１には、ログ情報６１を構成する処理ＩＤ６２、連番６３及びログコンテンツ６４を格納するために、処理ＩＤデータ欄１６２、連番データ欄６３、ログコンテンツ欄６４が設けられている。さらに、このログ管理テーブル１６１には、ログ情報を送信したか否かを示す送信済みフラグ欄１６５も設けられている。この送信済みフラグ欄１６５には、未送信のログ情報に対して「０」が格納されて、送信済みのログ情報に対しては「１」が格納される。
【００２５】
通信先管理テーブル１７０は、ＩＤ発行プログラム１３０が発行した処理ＩＤと、未処理データ又は処理結果データの送信先となる計算機との関連付けを管理するテーブルである。この通信先管理テーブル１７０の内容は、処理データ転送プログラム１４０及びログ管理プログラム１５０によって更新される。また、この通信先管理テーブル１７０のテーブルエントリは、図６に示すように、ＩＤ発行プログラム１３０が発行した処理ＩＤ１７２と、未処理データ又は処理結果データの送信先となる計算機ＩＤ１７３とを有している。なお、このエントリの空き１７１には、他の情報を格納してもよい。
【００２６】
次に、各プログラムの動作、正確には各プログラムを実行した際のプロセッサ１０１の動作について説明する。
【００２７】
まず、図７に示すフローチャートに従って、処理データ転送プログラム１４０の処理データ送信プログラム１４１での処理手順について説明する。
【００２８】
処理データ送信プログラム１４１は、アプリケーションプログラム１２０から未処理データ又は処理結果データの送信要求に伴って、このアプリケーションプログラム１２０から、このデータ自体と、このデータの処理ＩＤ及び送信先の計算機ＩＤとを受け付ける（Ｓ10）。続いて、この処理データ送信プログラム１４１は、通信先管理テーブル１７０の先頭エントリを参照する（Ｓ11）。この際、参照すべきエントリが無い、又はテーブルが空きの場合（Ｓ12）は、全エントリを検索したものとしてステップ15に進む。また、参照すべきエントリがある場合には、このエントリの処理ＩＤとステップ10で受け付けた処理ＩＤとが同じであるか否か、及び、このエントリの計算機ＩＤとステップ10で受け付けた計算機ＩＤとが同じであるか否かを判断し、いずれも同じでればステップ16に進み、いずれか一方でも同じでなければステップ14に進んで次のエントリを参照し、ステップ12に戻る。
【００２９】
ステップ12の判断で、全エントリを検索したと判断し、ステップ15に進むと、通信先管理テーブル１７０にエントリを追加し、このエントリに、ステップ10で受け付けた処理ＩＤ及び計算機ＩＤを格納し、ステップ16に進む。以上のように更新された通信先管理テーブル１７０は、後述するように、ログ情報の送信時の送信先データとして使用される。
【００３０】
ステップ16では、ステップ10で受け付けたデータを、計算機ＩＤが示す計算機に送信する。この際、送信するデータには、このデータの処理ＩＤ、送信元である自計算機ＩＤも含ませる。
【００３１】
最後に、ステップ10で受け付けた処理ＩＤをパラメータとして、ログ送信プログラム１５２を呼び出して、処理データの送信処理を終了する。なお、このログ送信プログラム１５２の呼び出しは、後述するように、データの送信に同期させて、このデータ送信先の計算機に、自計算機のログを送信させるためである。
【００３２】
次に、図８に示すフローチャートに従って、処理データ転送プログラム１４０の処理データ受信プログラム１４２の処理手順について説明する。
【００３３】
処理データ受信プログラム１４２は、他の計算機から未処理データ又は処理結果データ及びその処理ＩＤを受信すると（Ｓ20）、このデータ及び処理ＩＤをアプリケーションプログラム１２０に渡して処理を終了する（Ｓ21）。なお、アプリケーションプログラム１２０にデータや処理ＩＤを渡す際、自計算機ＩＤや、このデータの転送元の計算機ＩＤをアプリケーションプログラム１２０に渡すようにしてもよい。
【００３４】
次に、図９に示すフローチャートに従って、ログ管理プログラム１５０のログ記録プログラム１５１の処理手順について説明する。
【００３５】
ログ記録プログラム１５１は、アプリケーションプログラム１２０のログコンテンツ生成を契機に、このアプリケーションプログラム１２０から、ＩＤ発行プログラム１３０が発行した処理ＩＤ、及びログコンテンツを受け取る（Ｓ30）。ログ記録プログラム１５１は、処理ＩＤ及びログコンテンツを受け取ると、図５に示すログ管理テーブル１６１から、ステップ３０で受け取った処理ＩＤと同じ処理ＩＤのエントリを検索し（Ｓ31）、ログ管理テーブル１６１内に同じ処理ＩＤが無ければ（Ｓ32）、ステップ３０で受け取った処理ＩＤは新たな処理ＩＤであるとして、連番を１に設定する（Ｓ33）。また、ログ管理テーブル１６１内に同じ処理ＩＤが有れば（Ｓ32）、この処理ＩＤが付されているエントリのうちで最後の連番が付されているエントリを捜し、この最後の連番に＋1した値を連番として設定する（Ｓ34）。最後に、ログ管理テーブル１６１にエントリを追加し、ステップ30で受け付けた処理ＩＤ及びログコンテンツを追加エントリに格納するいと共に、ステップ33又はステップ34で生成された連番を追加エントリに格納する（Ｓ35）。
【００３６】
なお、追加エントリとしては、新たにメモリ領域に確保してもよいし、既に使用済みのエントリを流用してもよい。また、ここでは、ログ情報中に連番を含ませているが、これを含ませなくてもよく、例えば、アプリケーションプログラム１２０からログコンテンツと共に、ログコンテンツが示す内容を実行した時刻を受け取り、連番の替わりに、この時刻をログ情報に含ませてもよい。
【００３７】
次に、図１０に示すフローチャートに従って、ログ管理プログラム１５０のログ送信プログラム１５２の処理手順について説明する。
【００３８】
ログ送信プログラム１５２は、処理データ送信プログラム１４１から、データ送信通知及びそのデータの処理ＩＤを受け付けると（Ｓ40）、通信先管理テーブル１７０から、ステップ40で受け付けた処理ＩＤのエントリを検索し（Ｓ41）、該当エントリが有れば（Ｓ42）該当エントリの計算機ＩＤを抽出し（Ｓ43）、該当エントリが無ければ（Ｓ42）予め定められた計算機ＩＤを取得する（Ｓ44）。
【００３９】
次に、ログ送信プログラム１５２は、図５に示すログ管理テーブル１６１から、ステップ２０で受け付けた処理ＩＤのエントリを検索し、さらに、このエントリのうちから送信済みフラグが「０」のエントリを検索する（Ｓ45）。そして、この検索で得たエントリの送信済みフラグを「１」に設定した後（Ｓ46）、ステップ43又は44で得た計算機ＩＤの計算機へ、このエントリのログ情報と共に送信済みフラグのデータを送信する（Ｓ47）。この際、ステップ45の検索で得たエントリが複数、つまりログ情報が複数ある場合には、複数のログ情報の全てを送信する。
【００４０】
なお、ここでは、未処理データ又は処理結果データの送信に同期して、ログ情報を送信させるために、処理データ送信プログラム１４１からデータ送信通知を受けることで、ログ送信プログラム１５２が起動するようにしているが、未処理データ又は処理結果データの送信にログ情報を同期して送信させる必要は無く、例えば、タイマにより管理された一定時間間隔毎にログ情報を送信するようにしてもよいし、ログバッファ１６０での記憶データ量を管理しておき、この記憶データ量が予め定めたデータ量、例えば、新たなエントリを追加できなくなるデータ量になったときに、ログ情報を送信するようにしてもよい。さらに、このログ送信プログラム１５２に、データの送信に同期したタイミング、予め定められた時間間隔になったタイミング、ログバッファ１６０のデータ記憶量が予め定められた量になったタイミング、のいずれかのタイミングでログ情報を送信するかを外部から受け付ける送信タイミング受付ステップを含ませ、この送信タイミング受付ステップで受け付けたタイミングになると、ログ情報を送信するようにしてもよい。
【００４１】
次に、図１１に示すフローチャートに従って、ログ管理プログラム１５０のログ受信プログラム１５３の処理手順について説明する。
【００４２】
ログ受信プログラム１５３は、他の計算機からログ情報を受け付けると（Ｓ５０）、受け付けたログ情報の数量分のエントリをログバッファ１６０のログ管理テーブル１６１に追加し、追加エントリにログ情報を格納する（Ｓ51）。なお、このログ情報には、ログ情報を構成する処理ＩＤ、連番、ログコンテンツの他に、送信済みフラグのデータも含まれている。また、このログ情報の格納の際、ログ情報の連番に従って、ログ情報が順番に並ぶように、ログ情報をマージして格納する。
【００４３】
新たなログ情報をログバッファ１６０に格納すると、この新たなログ情報をディスク装置１０５のログ管理テーブルにも格納する（Ｓ52）。このディスク装置１０５への記憶形式は、ログバッファ１６０上のイメージをそのまま記憶してもよいが、他の形式に変換してから記憶してもよい。
【００４４】
なお、本実施形態では、受信したログ情報をログバッファ１６０に格納した際（Ｓ51）に、ログバッファ１６０の記憶内容をディスク装置１０５へ格納するようにしているが（Ｓ52）、ステップ51の後のステップ52の処理を省略してもよい。この場合、定期的に、又はログバッファ１６０に新たなエントリを追加できなくなった時点で、ログバッファ１６０の記憶内容をディスク装置１０５へ格納するとよい。
【００４５】
次に、図１２を用いて、主要なデータ及びログ情報の流れについて説明する。なお、ここでは、計算機１００Ａが外部からの処理要求を受け、一連の処理の途中で、計算機１００Ｂに処理を要求し、計算機１００Ｂがこの処理を行って、この処理の結果を計算機１００Ａに返すことを想定して、主要なデータ及びログ情報の流れと共に各プログラムの処理について説明する。また、同図では、主要なデータの流れを実線で示し、ログ情報の流れを一点鎖線で示し、その他の要求やデータ等の流れを破線で示している。
【００４６】
計算機１００Ａのアプリケーションプログラム１２０が外部から処理要求を受けると（Ｓ100）、ＩＤ発行プログラム１３０に対して処理ＩＤの発行を要求し、ＩＤ発行プログラム１３０から処理ＩＤを受け取る（Ｓ101）。以下、特に断りがない限り、計算機１００Ａ内での処理である。
【００４７】
次に、アプリケーションプログラム１２０は、外部からの処理要求に応じて処理を行い、ログの記録事象が発生すると、ログ記録プログラム１５１にログ記録を要求する（Ｓ102）。このとき、アプリケーションプログラム１２０は、ステップ101で取得した処理ＩＤとログコンテンツをログ記録プログラム１５１に渡す。
【００４８】
ログ記録プログラム１５１は、図９を用いて前述したように、ログバッファ１６０のログ管理テーブルにエントリを追加し、アプリケーションプログラム１２０から受け取ったログコンテンツに対する連番を付して、ログ情報として、この連番と共に、処理ＩＤ、ログコンテンツを、ログバッファ１６０のログ管理テーブルの追加エントリに格納する（Ｓ103）。
【００４９】
一方、アプリケーションプログラム１２０は、処理データ送信プログラム１４１に対し、計算機１００Ｂへの未処理データ送信を要求する（Ｓ104）。このとき、アプリケーションプログラム１２０は、送信する未処理データ、その処理ＩＤ、送信先の計算機ＩＤを処理データ送信プログラム１４１に渡す。
【００５０】
処理データ送信プログラム１４１は、図７を用いて前述したように、未処理データ、処理ＩＤ、計算機ＩＤを受け取ると、まず、通信先管理テーブル１７０にエントリを追加し、この追加エントリに処理ＩＤ及び計算機ＩＤを格納した後（Ｓ105）、未処理データ及びその処理ＩＤを計算機１００Ｂへ送信する（Ｓ106）。そして、ログ送信プログラム１５２にログ送信を要求する（Ｓ107）。このとき、処理データ送信プログラムは、ログ送信要求と共に、処理ＩＤをログ送信プログラム１５２に渡す。
【００５１】
ログ送信プログラム１５２は、パラメータとして渡された処理ＩＤを基に、通信先管理テーブル１７０から送信先の計算機ＩＤを取得すると共に（Ｓ108）、ログバッファ１６０のログ管理テーブルから該当ログ情報を取得し（Ｓ109）、計算機ＩＤが示す計算機１００Ｂへこのログ情報を送信する（Ｓ110）。
【００５２】
例えば、ステップ100での外部からの処理要求が、あるデータのライト要求である場合、計算機１００Ａから計算機１００Ｂへ送られる未処理データは、ライト要求と、ライトすべきデータ等である。この未処理データが計算機１００Ｂへ送信された段階（Ｓ106）では、ログ管理テーブル１６１には、図５に示すように、例えば、
1）処理ＩＤが「10ＡＢ」、連番が「1」、ログコンテンツが「計算機Ａが外部からライト要求を受付」の第一のログ情報と、
2）処理ＩＤが同じ「10ＡＢ」、連番が「2」、ログコンテンツが「計算機Ａが計算機Ｂへライト要求を送信」の第二のログ情報と、
が、記憶されている。なお、この段階（Ｓ106）では、いずれのログ情報の送信済みフラグ欄１６５には、未送信を示す「０」が設定されている。
【００５３】
ログ送信プログラム１５２は、処理データ送信プログラム１４１から、処理ＩＤ「10ＡＢ」のログ情報の送信要求を受けると（Ｓ107）、先に説明したログ管理テーブル１６１から、処理ＩＤ「10ＡＢ」で、且つフラグ欄１６５に「０（未送信）」が設定されているログ情報、つまり、前述の第一のログ情報と第二のログ情報とを抽出し（Ｓ109）、これらのログ情報の送信済みフラグ欄１６５に「１（送信済み）」を設定する（図１０のＳ45,Ｓ46）。そして、これらのログ情報と共にこれらのフラグデータを計算機１００Ｂへ送信する（Ｓ110）。
【００５４】
以下の説明は、特に断りのない場合は計算機１００Ｂの処理である。
【００５５】
計算機１００Ａの処理データ送信プログラム１０６が前述のステップ106で送信した未処理データ及びその処理ＩＤは、計算機Ｂの処理データ受信プログラム１４２に受信され（Ｓ200）、アプリケーションプログラム１２０に渡される（Ｓ201）。
【００５６】
また、計算機１００Ａのログ送信プログラム１５２が前述のステップ110で送信したログ情報等は、計算機Ｂのログ受信プログラム１５３に受信され（Ｓ221）、ログバッファ１６０に格納された後（Ｓ222）、ディスク装置１０５に格納される（Ｓ223）。なお、この時点で、このディスク装置１０５内のログ管理テーブル１６１の記録内容は、同時点での計算機１００Ａのログバッファ１６０内のログ管理テーブの記録内容と同じで、計算機１００Ａの第一のログ情報及び第二のログ情報である。また、これらのログ情報の送信済みフラグ欄１６５は、送信済みを示す「１」になっている。
【００５７】
計算機１００Ｂのアプリケーションプログラム１２０は、ステップ201で渡された未処理データを処理し、ログ記録事象が発生すると、ログ記録プログラム１５１に対し、ログ記録を要求する（Ｓ202）。このとき、アプリケーションプログラム１２０は、ステップ201で取得した処理ＩＤとログコンテンツをログ記録プログラム１５１に渡す。
【００５８】
計算機１００Ｂのログ記録プログラム１５１も、図９を用いて前述したように、ログバッファ１６０のログ管理テーブルにエントリを追加し、アプリケーションプログラム１２０から受け取ったログコンテンツに対する連番を付して、ログ情報として、この連番と共に、処理ＩＤ、ログコンテンツを、ログバッファ１６０のログ管理テーブルの追加エントリに格納する（Ｓ103）。
【００５９】
一方、アプリケーションプログラム１２０は、計算機１００Ａから渡された未処理データの処理が終了して、処理結果データを計算機１００Ａに返却できる状態になると、処理データ送信プログラム１４１に対し、計算機１００Ａへの処理結果データ送信を要求する（Ｓ204）。このとき、アプリケーションプログラム１２０は、送信する処理結果データ、その処理ＩＤ、送信先の計算機ＩＤを処理データ送信プログラム１４１に渡す。
【００６０】
計算機１００Ｂの処理データ送信プログラム１４１も、図７を用いて前述したように、処理結果データ、処理ＩＤ、計算機ＩＤを受け取ると、まず、通信先管理テーブル１７０にエントリを追加し、この追加エントリに処理ＩＤ及び計算機ＩＤを格納した後（Ｓ205）、処理結果データ及びその処理ＩＤを計算機１００Ａへ送信する（Ｓ206）。そして、ログ送信プログラム１５２にログ送信を要求する（Ｓ207）。このとき、処理データ送信プログラムは、ログ送信要求と共に、処理ＩＤをログ送信プログラム１５２に渡す。
【００６１】
ログ送信プログラム１５２は、パラメータとして渡された処理ＩＤを基に、通信先管理テーブル１７０から送信先の計算機ＩＤを取得すると共に（Ｓ208）、ログバッファ１６０のログ管理テーブルから該当ログ情報を取得し（Ｓ209）、計算機ＩＤが示す計算機１００Ａへこのログ情報を送信する（Ｓ210）。
【００６２】
例えば、前述したように、ステップ100での外部からの処理要求が、あるデータのライト要求である場合、計算機１００Ｂから計算機１００Ａへ送られる処理結果データは、ライト処理終了である。この処理結果データが計算機１００Ａへ送信された段階（Ｓ206）では、ログバッファ１６０のログ管理テーブル１６１には、図５に示すように、例えば、
1）連番が「1」の第一のログ情報と、
2）連番が「2」の第二のログ情報との他に、
3）処理ＩＤが「10ＡＢ」、連番が「3」、ログコンテンツが「計算機Ｂが計算機Ａからライト要求を受信」の第三のログ情報と、
4）処理ＩＤが同じ「10ＡＢ」、連番が「4」、ログコンテンツが「計算機Ｂがライト処理終了」の第四のログ情報と、
5）処理ＩＤが同じ「10ＡＢ」、連番が「5」、ログコンテンツが「計算機Ｂが計算機Ａへライト処理終了を送信」の第五のログ情報と、
が記憶されている。なお、この段階（Ｓ206）では、第一及び第二のログ情報の送信済みフラグ欄１６５には、送信済みを示す「１」が設定されているものの、第三、第四及び第五のログ情報の送信済みフラグ欄１６５には、未送信を示す「０」が設定されている。
【００６３】
ログ送信プログラム１５２は、処理データ送信プログラム１４１から、処理ＩＤ「10ＡＢ」のログ情報の送信要求を受けると（Ｓ207）、先に説明したログ管理テーブル１６１から、処理ＩＤ「10ＡＢ」で、且つフラグ欄１６５に「０（未送信）」が設定されているログ情報、つまり、前述の第三、第四及び第五のログ情報とを抽出し（Ｓ209）、これらのログ情報の送信済みフラグ欄１６５に「１（送信済み）」を設定する（図１０のＳ45,Ｓ46）。そして、これらのログ情報と共にこれらのフラグデータを計算機１００Ａへ送信する（Ｓ210）。
【００６４】
以下の説明は、特に断りのない場合は計算機１００Ａの処理である。
【００６５】
計算機１００Ｂの処理データ送信プログラム１０６が前述のステップ206で送信した処理結果データ及びその処理ＩＤは、計算機Ａの処理データ受信プログラム１４２に受信され（Ｓ111）、アプリケーションプログラム１２０に渡される（Ｓ112）。このアプリケーションプログラム１２０は、処理結果データに基づき、処理を継続するか、又は、処理要求をした外部へ処理終了を通知する（Ｓ113）
また、計算機１００Ｂのログ送信プログラム１５２が前述のステップ210で送信したログ情報等は、計算機Ａのログ受信プログラム１５３に受信され（Ｓ121）、ログバッファ１６０に格納された後（Ｓ122）、ディスク装置１０５に格納される（Ｓ123）。
【００６６】
この時点で、このディスク装置１０５内のログ管理テーブル１６１の記録内容は、同時点での計算機１００Ｂのログバッファ１６０内のログ管理テーブの記録内容と同じである。
【００６７】
以上のように、本実施形態では、外部からの処理要求を単位として分散処理を行う際、この処理要求を受けた計算機の他に、この処理要求に関連する他の計算機にログ情報を送信し、このログ情報を冗長記録しているので、分散処理を行ったいずれかの計算機が動作不能になっても、分散処理の一連の流れを追跡することができる。
【００６８】
なお、以上の実施形態は、二台の計算機１００Ａ，１００Ｂで構成される計算機システムを例にしているが、本発明はこれに限定されるものではなく、三台以上の計算機で構成される計算機システムに対しても、本発明を適用できることは言うまでもない。例えば、計算機Ａが外部から処理要求を受け、計算機Ｂに処理の一部を実行させ、その後、計算日Ｃに処理の他の一部を実行させる場合に、本発明を適用すると、計算機Ａには、自計算機Ａのログ情報のほかに、計算機Ｂでの分散処理に関するログ情報と計算機Ｃでの分散処理に関するログ情報とが記憶され、計算機Ｂには、自計算機Ｂのログ情報のほかに、計算機Ａのログ情報が記憶され、計算機Ｃには、自計算機Ｃのログ情報のほかに、計算機Ａのログ情報が記憶される。
【００６９】
また、以上の実施形態では、アプリケーションプログラム１２０が実行した処理に関するログ情報を取り扱っているが、本発明はこれに限定されるものではなく、他のプログラム、例えば、ＩＤ発行プログラム１３０、処理データ送信プログラム１４１、処理データ受信プログラム１４２、ログ記録プログラム１５１、ログ送信プログラム１５２、ログ受信プログラム１５３等のコンポーネントが実行した処理に関するログ情報に関しても、本実形態と同様に、他の計算機に送信、及び他の計算機から受信し、このようなログ情報を記憶するようにしてもよい。
【図面の簡単な説明】
【００７０】
【図１】本発明に係る一実施形態における計算機システムのブロック構成図である。
【図２】本発明に係る一実施形態における処理データ転送プログラムの構成を示す説明図である。
【図３】本発明に係る一実施形態におけるログ管理プログラムの構成を示す説明図である。
【図４】本発明に係る一実施形態におけるログ情報の構成を示す説明図である。
【図５】本発明に係る一実施形態におけるログ管理テーブルの構成を示す説明図である。
【図６】本発明に係る一実施形態における通信先管理テーブルエントリの構成を示す説明図である。
【図７】本発明に係る一実施形態における処理データ送信プログラムの処理内容を示すフローチャートである。
【図８】本発明に係る一実施形態における処理データ受信プログラムの処理内容を示すフローチャートである。
【図９】本発明に係る一実施形態におけるログ記録プログラムの処理内容を示すフローチャートである。
【図１０】本発明に係る一実施形態におけるログ送信プログラムの処理内容を示すフローチャートである。
【図１１】本発明に係る一実施形態におけるログ受信プログラムの処理内容を示すフローチャートである。
【図１２】本発明に係る一実施形態における主要データ及びログ情報の流れを示す説明図である。
【符号の説明】
【００７１】
１００Ａ，１００Ｂ：計算機、１０１：メインプロセッサ、１０５：ディスク装置、１１０：メモリ、１２０：アプリケーションプログラム、１３０：ＩＤ発行プログラム、１４０：処理データ転送プログラム、１４１：処理データ送信プログラム、１４２：処理データ受信プログラム、１５０：ログ管理プログラム、１５１：ログ記録プログラム、１５２：ログ送信プログラム、１５３：ログ受信プログラム、１６０：ログバッファ、１６１：ログ管理テーブル
【図１】
2007058414.tif 000003
【図２】
2007058414.tif 000004
【図３】
2007058414.tif 000005
【図４】
2007058414.tif 000006
【図５】
2007058414.tif 000007
【図６】
2007058414.tif 000008
【図７】
2007058414.tif 000009
【図８】
2007058414.tif 000010
【図９】
2007058414.tif 000011
【図１０】
2007058414.tif 000012
【図１１】
2007058414.tif 000013
【図１２】
2007058414.tif 000014