(57)【要約】【課題】マルチプロセス型システムにおける障害を円滑に解析する。【解決手段】相互間で授受するメッセージを用いてそれぞれが所定のコンピュータ処理に対応したプロセスを実行する複数のプロセス実行部（１０〜１３）と、前記複数のプロセス実行部間において、メッセージを送出したプロセス実行部からのメッセージを一時的に格納し、該メッセージを受けるべき他のプロセス実行部へ当該メッセージを供給するキュー処理部（１４）と、前記各プロセス実行部から前記キュー処理部へのメッセージの格納履歴を記録するログ記録部（１５）とを備える。【選択図】      図１
2005004356.tif 000002
【特許請求の範囲】
【請求項１】
相互間で授受するメッセージを用いてそれぞれが所定のコンピュータ処理に対応したプロセスを実行する複数のプロセス実行部と、
前記複数のプロセス実行部間において、メッセージを送出したプロセス実行部からのメッセージを一時的に格納し、該メッセージを受けるべき他のプロセス実行部へ当該メッセージを供給するキュー処理部と、
前記各プロセス実行部から前記キュー処理部へのメッセージの格納履歴を記録するログ記録部とを備えることを特徴とするメッセージキュー制御システム。
【請求項２】
さらに、前記ログ記録部で記録された格納履歴に基づいて前記キュー処理部を介したメッセージの授受に関するプロセス実行部の動作を解析し該解析の結果を出力する動作解析部を備えることを特徴とする請求項１記載のメッセージキュー制御システム。
【請求項３】
さらに、前記キュー処理部に順次的に格納されたメッセージを示すデータを出力するダンプ処理部を備えることを特徴とする請求項２記載のメッセージキュー制御システム。
【請求項４】
前記各プロセス実行部は、受信すべきメッセージが前記キュー処理部に格納されたことを検知する格納検知部と、該格納検知部の検知に対応するメッセージを前記キュー処理部から取得するメッセージ取得部とを有することを特徴とする請求項１記載のメッセージキュー制御システム。
【請求項５】
前記各プロセス実行部は、さらに、受信すべきメッセージが他のプロセス実行部から送出されたことを検知し該検知の結果を前記格納検知部に通知する送出検知部を有することを特徴とする請求項４記載のメッセージキュー制御システム。
【請求項６】
前記各プロセス実行部は、送信すべきメッセージに、送信元のプロセス実行部を識別するための送信識別情報と、当該メッセージを受信すべきプロセス実行部を識別するための受信識別情報とを付与する手段を有し、メッセージを受信するとき、前記格納検知部が、受信識別情報に基づき前記キュー処理部からメッセージを取得することを特徴とする請求項４または５記載のメッセージキュー制御システム。
【請求項７】
プロセッサおよび該プロセッサに接続されるメモリを備え、
前記メモリは、
前記プロセッサにより実行される複数のプロセスが配置される第１のメモリ部と、
前記複数のプロセス間で授受されるメッセージを前記各プロセスから独立して一括管理可能に登録するメッセージキューが配置される第２のメモリ部とを有し、
前記プロセッサは、前記第１のメモリ部において、前記第２のメモリ部のメッセージキューを用いて前記複数のプロセスを実行することを特徴とする一括管理型メッセージキュー制御システム。
【請求項８】
前記メモリは、前記メッセージキューにメッセージの登録履歴を格納するメッセージログを有することを特徴とする請求項７記載の一括管理型メッセージキュー制御システム。
【請求項９】
前記複数のプロセスは、前記プロセッサに実行させるための処理ステップとして、
他プロセス宛にメッセージを送信するとき、送信すべきメッセージを前記メッセージキューに登録すると共に、当該登録の内容を前記メッセージログに出力するステップと、
メッセージを受信するとき、所定のイベントに基づき前記メッセージキューへの自プロセス宛のメッセージ登録を検知し、該検知に対応するメッセージを前記メッセージキューから読み込み、当該メッセージに基づき所定のデータ処理を実行するステップとを有する請求項８記載の一括管理型メッセージキュー制御システム。
【請求項１０】
前記所定のイベントは、セマフォオブジェクトのセマフォ値を用いたイベントである請求項９記載の一括管理型メッセージキュー制御システム。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は、所定のコンピュータ処理に対応したプロセスを実行する際のメッセージを伝搬するためのメッセージキューを制御するシステムに関し、特に、種々のプロセスを実行するマルチプロセス型システムに好適なメッセージキュー制御システムに関する。
【０００２】
【従来の技術】
従来、後述する特許文献１に記載の技術のように、マルチプロセス型システムにおいてプロセス間のメッセージ通信を管理する技術がある。文献１の技術は、プロセス毎に割り当てられた各メッセージキューについて、その動作状態を常時監視することにより、プロセス間でのデッドロック現象のような障害に対処するものである。
【０００３】
【特許文献１】
特開２００１−２５６１８５号公報（第３−５頁、第１図）
【０００４】
【発明が解決しようとする課題】
しかしながら、前記したような従来のシステムでは、メッセージキューが複数のプロセスに対して個別に設けられていることから、プロセス間の障害を解析するには、各キューから個別に動作情報を収集する必要がある。そのため、障害発生時に、その原因を迅速に追究することが困難であった。
【０００５】
本発明は、上記の課題に鑑みてなされたものであり、マルチプロセス型システムにおいて、メッセージ通信における障害時の解析を円滑に行うことができるメッセージキュー制御システムを提供することを目的とする。
【０００６】
【課題を解決するための手段】
本発明に係るメッセージキュー制御システムは、相互間で授受するメッセージを用いてそれぞれが所定のコンピュータ処理に対応したプロセスを実行する複数のプロセス実行部と、前記複数のプロセス実行部間において、メッセージを送出したプロセス実行部からのメッセージを一時的に格納し、該メッセージを受けるべき他のプロセス実行部へ当該メッセージを供給するキュー処理部と、前記各プロセス実行部から前記キュー処理部へのメッセージの格納履歴を記録するログ記録部とを備える。
【０００７】
本発明に係るメッセージキュー制御システムは、複数のプロセス実行部間のメッセージ伝搬を単一のキュー処理部を介して行い、その伝搬履歴をログ記録部で記録する。
【０００８】
また、本発明に係る一括管理型メッセージキュー制御システムは、プロセッサおよび該プロセッサに接続されるメモリを備え、前記メモリは、前記プロセッサにより実行される複数のプロセスが配置される第１のメモリ部と、前記複数のプロセス間で授受されるメッセージを前記各プロセスから独立して一括管理可能に登録するメッセージキューが配置される第２のメモリ部とを有し、前記プロセッサは、前記第１のメモリ部において、前記第２のメモリ部のメッセージキューを用いて前記複数のプロセスを実行する。
【０００９】
【発明の実施の形態】
以下、本発明の実施の形態について図面を用いて詳細に説明する。
【００１０】
〈実施形態１〉
図１は、本発明に係るメッセージキュー制御システムの実施形態１の構成を示すブロック図である。実施形態１のメッセージキュー制御システム１０１は、コンピュータのオペレーションシステム（以下、単に「ＯＳ」と称する。）の指示に従い動作するマルチプロセス型システムに設けられ、図１に示すように、それぞれが所定のコンピュータ処理に対応したプロセスＡ〜Ｄを実行するプロセス実行部１０〜１３と、プロセス実行部１０〜１３間で授受されるメッセージを一時的に格納するキュー処理部であるメッセージキュー１４と、メッセージキュー１４へのメッセージの格納履歴を記録するログ記録部であるメッセージログ１５とを備える。
【００１１】
プロセス実行部１０〜１３から送出されるメッセージには、送信側のプロセス実行部を識別するための送信ＩＤ番号と、受信側を識別するための受信ＩＤ番号とが付与されており、メッセージキュー１４は、これらのＩＤ番号と共にメッセージを順次格納する。
【００１２】
また、メッセージキュー制御システム１０１は、メッセージログ１５の格納履歴に基づいて、メッセージキュー１４に関わるプロセス実行部１０〜１３の動作を解析する動作解析部１６と、メッセージキュー１４に格納されたメッセージに関するメッセージデータを出力するダンプ処理部１７とを備える。
【００１３】
図２に、プロセス実行部１０〜１３およびメッセージキュー１４と、コンピュータのハードウエアとの対応を示す。図２に示すように、プロセス実行部１０〜１３は、ＯＳ１上で動作するプロセッサであるＣＰＵ２に設けられている。これらのプロセス実行部１０〜１３が実行すべきプログラムであるプロセスＡ〜Ｄは、ＣＰＵ２に接続されたメモリ３の第１のメモリ部であるメモリ領域１０Ａ〜１３Ａに格納されている。また、メッセージキュー１４は、第１のメモリ部から独立した第２のメモリ部となる領域１４Ａに割り当てられている。メッセージログ１５が記録する格納履歴およびダンプ処理部１７が出力するメッセージデータは、領域１４Ａに格納されたメッセージに対応する。
【００１４】
なお、格納履歴およびメッセージデータは、図２に示す例に替えて、メモリ３内の所定領域に格納するように設定してもよい。また、図示の例では、プロセス実行部１０〜１３およびメッセージキュー１４が単一のメモリ３内に配置されているが、それぞれを別個のメモリ機構に配置する構成とすることもできる。
【００１５】
プロセス実行部１０〜１３は、それぞれ後述の構成を同様に備えるが、以下、プロセス実行部１２を例に挙げて構成を説明する。プロセス実行部１２は、図１に示すように、所定時間毎にメッセージキュー１４を監視して自己宛のメッセージを検知する格納検知部１２ａと、格納検知部１２ａが検知したメッセージをメッセージキュー１４から取得するメッセージ取得部１２ｂと、取得したメッセージを用いてプロセスＣに関する所定のデータ処理を行うデータ処理部１２ｃとを備える。プロセス実行部１２では、これらの格納検知部１２ａ〜データ処理部１２ｃによりループ処理が行われる。
【００１６】
メッセージキュー制御システム１０１の動作を図１に沿って説明する。ここでは、プロセス実行部１０からプロセス実行部１２に向けてのメッセージ通信、および、プロセス実行部１１からプロセス実行部１３に向けてのメッセージ通信が行われるが、主に、プロセス実行部１０およびプロセス実行部１２間の手順を例に挙げて説明する。
【００１７】
プロセス実行部１０がプロセス実行部１２へ供給すべきメッセージをメッセージキュー１４に送出すると、メッセージキュー１４は、当該メッセージを所定の領域に格納する（ステップＳ１）。このとき、プロセス実行部１０は、メッセージをメッセージキュー１４へ格納した旨をメッセージログ１５に登録する（ステップＳ２）。
【００１８】
メッセージログ１５は、プロセス実行部１０からの登録要求を受けて、プロセス実行部１２へのメッセージがメッセージキュー１４に格納されたことを格納履歴に記録する。図３に、メッセージログ１５により記録された格納履歴の一例を示す。格納履歴の記録にあたっては、例えば、所定のデータファイルにテキスト形式にて順次記録するようにする。図３に示す例は、ＩＤ番号が２０、２５、３０および４０であるプロセス実行部間のメッセージ通信動作の履歴であり、例えば、履歴００１および００２は、ＩＤ・２０のプロセス実行部がメッセージの受信を待機する状態に入った後、ＩＤ・２５が同じく受信待機状態になったことを示す。また、履歴００３および００４は、ＩＤ・４０がメッセージキュー１４にＩＤ・３０へ向けてのメッセージを格納し、その後、ＩＤ・３０が、このメッセージをメッセージキュー１４から受け取ったことが記録されている。このように、メッセージログ１５の格納履歴により、メッセージキュー１４を介したメッセージ通信の状況を時系列に沿って把握することができる。
【００１９】
受信側のプロセス実行部１２の格納検知部１２ａは、メッセージキュー１４に格納されているメッセージの受信ＩＤ番号を定期的に監視する（ステップＳ３）。そして、自己宛のメッセージ、すなわちプロセス実行部１２に対応する受信ＩＤ番号を持つメッセージが格納されたことを検知したとき、その旨をメッセージ取得部１２ｂへ通知する（ステップＳ４）。メッセージ取得部１２ｂは、前記通知に対応するメッセージをメッセージキュー１４から取得し（ステップＳ５）、取得したメッセージをデータ処理部１２ｃへ供給する。
【００２０】
その後、プロセス実行部１２では、データ処理部１２ｃが前記メッセージを用いてプロセスＣに対応した所定のデータ処理を行い、当該処理が終了すると、格納検知部１２ａによるメッセージの検知を待つ（ステップＳ７）。なお、プロセス実行部１１からプロセス実行部１３へのメッセージ通信も、メッセージキュー１４を介した上述と同様な手順に沿って行われる。
【００２１】
動作解析部１６は、所定期間毎あるいは障害発生時の必要に応じて、メッセージログ１５が記録した格納履歴を取得し、この履歴を用いてメッセージキュー１４を介したメッセージ通信手順に関するトレース処理を行う（ステップＳ８）。そして、トレースの結果に基づいてシステムの動作状況を解析し、その解析結果を出力する。この解析結果は、例えば、障害発生時の原因追究や、正常稼働時におけるシステムの性能チェック等に用いることができる。
【００２２】
また、ダンプ処理部１７は、メッセージキュー１４に順次的に格納された状態のメッセージを示すメッセージデータを所定期間毎に出力する（ステップＳ９）。図４に、ダンプ処理部１７から出力されたメッセージデータの一例を示す。図示の例では、メッセージキュー１４のアドレス番号（「Ｑｎｏ」）の順番に沿って順次格納されたメッセージを、その送信元、送信先のＩＤ番号およびメッセージ長と共に提示している。ダンプ処理部１７によるメッセージデータの出力は、所定期間毎に限らず、必要に応じて任意に行うこともでき、その出力先は、メモリ上の所定の領域あるいは外部の記憶機構等、適宜設定することができる。出力されたメッセージデータを用いて、例えば、メッセージの授受が遅れているプロセス実行部を特定することができ、これによりデッドロックの原因の解析を行うことができる。
【００２３】
以上説明したように、実施形態１のメッセージキュー制御システム１０１によれば、プロセス実行部１０〜１３間で授受するメッセージの伝搬手段を、単一のメッセージキュー１４に統合し、このメッセージキュー１４を介したメッセージ通信の履歴をメッセージログ１５に記録することから、システムにおけるメッセージの伝搬状況を時系列に沿って一括的に把握することができる。これにより、障害発生時に、その原因を円滑に解析することができる。さらに、ダンプ処理部１７により出力されるメッセージデータを用いて、メッセージ処理が滞っているプロセスを特定することにより、デッドロックのような障害の原因を容易に追究することができる。
【００２４】
〈実施形態２〉
図５は、本発明に係るメッセージ制御システムの実施形態２の構成を示すブロック図である。実施形態２のメッセージキュー制御システム１０２は、実施形態１のメッセージキュー制御システム１０１と同様な構成に加え、プロセス実行部２０〜２３に、送信側から自己宛のメッセージが出力された旨を検知する送出検知部であるセマフォ処理部２２ｄを備える。セマフォ処理部２２ｄは、従来よく知られたセマフォ（ｓｅｍａｐｈｏｒｅ）オブジェクトに基づき動作するものであり、コンピュータのＯＳにより制御されるセマフォ変数の増減に応じて、後述する所定の処理を行う。
【００２５】
実施形態２のメッセージキュー制御システム１０２の動作を図５に沿って説明する。なお、送信側のプロセス実行部２０からメッセージが出力される前は、受信側のプロセス実行部２２は、セマフォオブジェクトにより「ＷＡＩＴ」、すなわち、ループ処理の待機状態に置かれている。
【００２６】
プロセス実行部２０は、プロセス実行部２２へのメッセージをメッセージキュー１４へ格納すると共に、メッセージログ２５にその旨を登録し（ステップＳ１１、１２）、さらに、メッセージを送出した旨のイベントを、受信側のプロセス実行部２２に通知する（ステップＳ１３）。
【００２７】
プロセス実行部２２では、プロセス実行部２０からの前記通知を受けると、ＯＳによりセマフォ変数の値が１加算される。セマフォ処理部２２ｄは、セマフォ変数の増加を検知したとき、プロセス実行部２０からメッセージが送出されたことを格納検知部２２ａへ通知する（ステップＳ１４）。セマフォ処理部２２ｄから格納検知部２２ａへの前記通知を契機に、プロセス実行部２０のループ処理が起動され、起動後は、セマフォ変数が１減算される。従って、プロセス実行部２０におけるセマフォ変数の値は、このプロセス実行部２０が受信すべきメッセージの数量に対応する。
【００２８】
格納検知部２２ａは、セマフォ処理部２２ｄからの通知を受けると、メッセージ取得部２２ｂに対し、自己宛のメッセージをメッセージキュー２４から取得するよう指示し（ステップＳ１５）、この指示を受けたメッセージ取得部２２ｂは、当該指示に対応したメッセージを取得して（ステップＳ１６）、これをデータ処理部２２ｃへ供給する（ステップＳ１７）。そして、データ処理部２２ｃによる所定のデータ処理が完了すると、格納検知部２２ａがセマフォ処理部２２ｄからの通知を待つ（ステップＳ１８）。なお、プロセス実行部２１からプロセス実行部２３へのメッセージ通信の際にも、上述と同様な手順を用いる。
【００２９】
また、メッセージログ２５の履歴を用いた動作解析部２６によるトレース処理（ステップＳ１９）、および、ダンプ処理部２７によるメッセージデータの出力（ステップＳ２０）については、実施形態１で説明した手順と同様であり、説明を省略する。
【００３０】
以上説明したように、実施形態２のメッセージキュー制御システム１０２によれば、複数のプロセス実行部２０〜２３間で、単一のメッセージキュー２４を介したメッセージ通信を行うことから、実施形態１と同様な効果を奏し、さらに、送信側からのメッセージ送出を検知するセマフォ処理部（２２ｄ）が設けられたことにより、受信側でメッセージキュー１４を監視することなく効率的にメッセージを取得することができる。
【００３１】
【発明の効果】
本発明に係るメッセージキュー制御システムによれば、複数のプロセス実行部間で授受するメッセージが単一のキュー処理部を介して伝搬され、このキュー処理部へのメッセージの格納履歴がログ記録部に記録されることから、システムにおけるメッセージの伝搬状況を時系列に沿って一括的に把握することができる。これにより、各プロセス実行部間のメッセージの伝搬を容易に追跡することができ、障害発生時に、その原因を円滑に解析することが可能となる。
【００３２】
また、本発明に係る一括管理型メッセージキュー制御システムによれば、メモリにおいて、第１のメモリ部の複数のプロセス間で授受すべき全てのメッセージを、第２のメモリ部のメッセージキューを介して伝搬することから、メッセージ伝搬の管理を一括的に行うことができる。これにより、障害発生時の原因解析を円滑に行うことができる。
【図面の簡単な説明】
【図１】本発明に係るメッセージキュー制御システムの実施形態１の構成を示すブロック図である。
【図２】本発明による実施形態の構成部分とハードウエアとの対応に関する説明図である。
【図３】本発明による実施形態におけるメッセージの格納履歴を説明するための説明図である。
【図４】本発明による実施形態におけるメッセージデータを説明するための説明図である。
【図５】本発明に係るメッセージキュー制御システムの実施形態２の構成を示すブロック図である。
【符号の説明】
１０１、１０２  メッセージキュー制御システム
１０〜１３、２０〜２３  プロセス実行部
１４、２４  メッセージキュー
１５、２５  メッセージログ
１６、２６  動作解析部
１７、２７  ダンプ処理部
１２ａ、１３ａ、２２ａ、２３ａ  格納検知部
１２ｂ、１３ｂ、２２ｂ、２３ｂ  メッセージ取得部
１２ｃ、１３ｃ、２２ｃ、２３ｃ  データ処理部
２２ｄ、２３ｄ  セマフォ処理部
１  ＯＳ
２  ＣＰＵ
３  メモリ
１０Ａ〜１４Ａ  メモリ領域
【図１】
2005004356.tif 000003
【図２】
2005004356.tif 000004
【図３】
2005004356.tif 000005
【図４】
2005004356.tif 000006
【図５】
2005004356.tif 000007