(57)【特許請求の範囲】
【請求項１】
通信回線を介して互いに接続された複数台のコンピュータを含むコンピュータ・システムであって、
前記複数台のコンピュータ上で各々動作し前記複数台のコンピュータと通信回線を介して接続された外部コンピュータからの要求に応じた処理を各々行う各インスタンスの稼働状態を各々取得する取得手段と、
前記取得手段によって取得された前記各インスタンスの稼働状態に基づいて、前記各インスタンスの中に稼働中でないインスタンスが存在しており、かつ稼働中のインスタンスの数が予め設定された生存インスタンス数未満の場合には、前記稼働中でないインスタンスのうちの何れか１つの特定インスタンスと同一のコンピュータ上で動作する制御手段により前記特定インスタンスの再起動を行わせ、前記各インスタンスの中に稼働中でないインスタンスが存在しており、かつ稼働中のインスタンスの数が前記生存インスタンス数以上の場合は、前記稼働中でないインスタンスの再起動を停止させる管理手段と、
を備えたことを特徴とするコンピュータ・システム。
【請求項２】
前記各インスタンスは、各々が動作するコンピュータに設けられたメモリに、前記外部コンピュータから受け付けた要求を表す情報を含む所定の情報を各々記憶させると共に、少なくとも何れか１つのインスタンスが新たに稼働中になったタイミングで、個々のコンピュータのメモリに記憶されている前記所定の情報の同期をとる同期処理を行うことを特徴とする請求項１記載のコンピュータ・システム。
【請求項３】
前記コンピュータ・システムの複数台のコンピュータは所定のデータベースを記憶する記憶媒体と各々接続されており、
前記各インスタンスは、前記外部コンピュータからの要求に応じて、前記データベースにアクセスする処理を含む処理を各々行うことを特徴とする請求項１又は請求項２記載のコンピュータ・システム。
【請求項４】
前記取得手段及び前記管理手段は、前記複数台のコンピュータのうち稼働中の何れか１台のコンピュータによって実現されることを特徴とする請求項１又は請求項２記載のコンピュータ・システム。
【請求項５】
前記生存インスタンス数として、前記外部コンピュータからの要求に対し、稼働中のインスタンスが、所定時間以内に前記要求に応じた処理を行って応答を返すことが可能な最小のインスタンス数が設定されていることを特徴とする請求項１〜請求項４の何れか１項記載のコンピュータ・システム。
【請求項６】
前記管理手段は、前記制御手段によって前記特定インスタンスの再起動を行わせた場合に、前記取得手段によって前記各インスタンスの稼働状態の取得を再度行わせることを特徴とする請求項１又は請求項２記載のコンピュータ・システム。
【請求項７】
前記管理手段は、前記制御手段によって行わせた前記特定インスタンスの再起動が失敗した場合、前記特定インスタンスの稼働状態を起動不可状態に設定し、以後の再起動の対象から除外することを特徴とする請求項１又は請求項２記載のコンピュータ・システム。
【請求項８】
通信回線を介して互いに接続された複数台のコンピュータを含むコンピュータ・システムの前記複数台のコンピュータのうちの何れか１つのコンピュータを、
前記複数台のコンピュータ上で各々動作し前記複数台のコンピュータと通信回線を介して接続された外部コンピュータからの要求に応じた処理を各々行う各インスタンスの稼働状態を各々取得する取得手段、
及び、前記取得手段によって取得された前記各インスタンスの稼働状態に基づいて、前記各インスタンスの中に稼働中でないインスタンスが存在しており、かつ稼働中のインスタンスの数が予め設定された生存インスタンス数未満の場合には、前記稼働中でないインスタンスのうちの何れか１つの特定インスタンスと同一のコンピュータ上で動作する制御手段により前記特定インスタンスの再起動を行わせ、前記各インスタンスの中に稼働中でないインスタンスが存在しており、かつ稼働中のインスタンスの数が前記生存インスタンス数以上の場合は、前記稼働中でないインスタンスの再起動を停止させる管理手段
として機能させるためのシステム管理プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明はコンピュータ・システム及びシステム管理プログラムに係り、特に、通信回線を介して互いに接続されると共に記憶媒体と各々接続された複数台のコンピュータを含むコンピュータ・システム、及び、当該コンピュータ・システムの複数台のコンピュータのうちの何れか１つのコンピュータを管理装置として機能させるためのシステム管理プログラムに関する。
【背景技術】
【０００２】
コンピュータ上で所定のインスタンス（アプリケーション）を動作させ、当該インスタンスにより、前記コンピュータと通信回線を介して接続された外部コンピュータからの要求に応じた処理を行わせることで、外部コンピュータ（を操作しているユーザ）へ所定のサービスを提供するにあたり、障害の発生によってサービスの提供が途絶えたり、コンピュータに多大な負荷が加わることで外部からの要求に対する応答が遅延する等の提供サービスの品質が低下することを回避するために、通信回線を介して互いに接続された複数台のコンピュータ上で前記インスタンスを各々動作させ、サービスを提供するための処理を複数台のコンピュータに分散させるシステム（マルチノードシステムともいう）が従来より知られている。
【０００３】
上記に関連して特許文献１は、１次ノード及び２次ノードを含むコンピュータシステムにおいて、システム・サービスを監視する監視スクリプトを定期的に実行し、サービスが機能しなくなったか又は異常終了したことが発見され、サービスを再開させるときに、休止サービスとはプロセス識別子（ＰＩＤ）は異なるが、同一の仮想ＩＰアドレスをもつサービスの新たなインスタンスを再開させる技術が記載されている。
【０００４】
また特許文献２には、データベースアプリケーションの複数のインスタンスが複数のノードで実行されるネットワーク化システムにおいて、インスタンスに対して予め定められた間隔でポーリングを行ってインスタンスの状態を判断すること、及び、インスタンス等から成る或るメンバーが障害を起こしたときや、これが別の障害を起こしたリソースに依存するときに、このメンバーまたはこれが依存するリソースを修理する修理処理がとられるまで不能化しておくことが記載されている。
【特許文献１】特開２００５−２０９１９１号公報
【特許文献２】特表２００５−５１２１９０号公報
【発明の開示】
【発明が解決しようとする課題】
【０００５】
通信回線を介して互いに接続された複数台のコンピュータ上でインスタンスを各々動作させてサービスを提供する構成のシステムにおいて、障害等の発生により何れかのコンピュータ上で動作するインスタンスの稼働が停止した場合に、特許文献２に記載の技術のように稼働を停止したインスタンスを一律に不能化したとすると、他のインスタンスが動作しているコンピュータに加わる負荷が増大するので、要求に対する応答が遅延する等の提供サービスの品質低下が生ずる可能性がある。
【０００６】
一方、上記構成のシステムでは、個々のコンピュータ上で動作するインスタンスが、外部コンピュータから受け付けた要求を表す情報等を個々のコンピュータのメモリに記憶させると共に、個々のコンピュータのメモリに記憶させている情報を適当なタイミングで一致させる同期処理を行う構成であることが多い。このため、特許文献１に記載の技術のようにインスタンスの稼働状態を監視し、異常を検知した場合はインスタンスを一律に再起動させる場合にも、インスタンスの再起動時に同期処理が行われる等によってシステム全体に一時的に高い負荷が加わり、要求に対する応答が遅延する等の提供サービスの品質低下が生ずる可能性がある。
【０００７】
本発明は上記事実を考慮して成されたもので、一部のインスタンスの稼働停止時に、稼働中のインスタンスによって実現される提供サービスの品質低下を抑制できるコンピュータ・システム及びシステム管理プログラムを得ることが目的である。
【課題を解決するための手段】
【０００８】
上記目的を達成するために請求項１記載の発明に係るコンピュータ・システムは、通信回線を介して互いに接続された複数台のコンピュータを含むコンピュータ・システムであって、前記複数台のコンピュータ上で各々動作し前記複数台のコンピュータと通信回線を介して接続された外部コンピュータからの要求に応じた処理を各々行う各インスタンスの稼働状態を各々取得する取得手段と、前記取得手段によって取得された前記各インスタンスの稼働状態に基づいて、前記各インスタンスの中に稼働中でないインスタンスが存在しており、かつ稼働中のインスタンスの数が予め設定された生存インスタンス数未満の場合には、前記稼働中でないインスタンスのうちの何れか１つの特定インスタンスと同一のコンピュータ上で動作する制御手段により前記特定インスタンスの再起動を行わせ、前記各インスタンスの中に稼働中でないインスタンスが存在しており、かつ稼働中のインスタンスの数が前記生存インスタンス数以上の場合は、前記稼働中でないインスタンスの再起動を停止させる管理手段と、を備えたことを特徴としている。
【０００９】
請求項１記載の発明に係るコンピュータ・システムは、通信回線を介して互いに接続された複数台のコンピュータを含んで構成されており、複数台のコンピュータ上では、複数台のコンピュータと通信回線を介して接続された外部コンピュータからの要求に応じた処理を各々行うインスタンスが各々動作している。なお、請求項１記載の発明において、複数台のコンピュータ上で各々動作する各インスタンスは、例えば請求項２に記載したように、各々が動作するコンピュータに設けられたメモリに、外部コンピュータから受け付けた要求を表す情報を含む所定の情報を各々記憶させると共に、少なくとも何れか１つのインスタンスが新たに稼働中になったタイミングで、個々のコンピュータのメモリに記憶されている所定の情報の同期をとる同期処理を行う構成であってもよい。なお、同期処理を行うタイミングは、何れか１つのインスタンスが新たに稼働中になったタイミングに限られるものではなく、前回の同期処理から一定時間が経過したタイミングや、メモリに記憶させた所定の情報の更新回数が所定回に達したタイミング等でも同期処理を行うようにしてもよい。
【００１０】
また、請求項１又は請求項２記載の発明において、コンピュータ・システムの複数台のコンピュータは所定のデータベースを記憶する記憶媒体と各々接続されていてもよく、この場合、複数台のコンピュータ上で各々動作する各インスタンスは、例えば請求項３に記載したように、外部コンピュータからの要求に応じて、データベースにアクセスする処理を含む処理を各々行う構成であってもよい。また、この場合、何れか１つのインスタンスがデータベースにアクセスするタイミングも、請求項２に記載の同期処理を行うタイミングに含まれていてもよい。
【００１１】
ここで、請求項１記載の発明では、取得手段によって取得された各インスタンスの稼働状態に基づいて、各インスタンスの中に稼働中でないインスタンスが存在しており、かつ稼働中のインスタンスの数が予め設定された生存インスタンス数未満の場合には、稼働中でないインスタンスのうちの何れか１つの特定インスタンスと同一のコンピュータ上で動作する制御手段により特定インスタンスの再起動を行わせ、各インスタンスの中に稼働中でないインスタンスが存在しており、かつ稼働中のインスタンスの数が生存インスタンス数以上の場合は、稼働中でないインスタンスの再起動を停止させる。
【００１２】
各インスタンスの中に稼働中でないインスタンスが存在しており、かつ稼働中のインスタンスの数が生存インスタンス数未満の場合、稼働中のインスタンスの数が比較的少数であるので、稼働中のインスタンスが動作しているコンピュータには定常的に大きな負荷が加わり、稼働中のインスタンスによって実現される提供サービスに、要求に対する応答が遅延する等の品質低下が定常的に生ずる可能性が高い。これに対して請求項１記載の発明では、各インスタンスの中に稼働中でないインスタンスが存在しており、かつ稼働中のインスタンスの数が生存インスタンス数未満の場合に、稼働中のインスタンスの数が生存インスタンス数未満であれば稼働中でないインスタンスの再起動を行わせるので、インスタンスの再起動時に、例えば請求項２に記載の同期処理が行われる等により、システム全体に一時的に高い負荷が加わる可能性はあるものの、稼働中のインスタンスが動作しているコンピュータには定常的に大きな負荷が加わることで、稼働中のインスタンスによって実現される提供サービスに定常的な品質低下が生ずることを防止することができる。
【００１３】
また、各インスタンスの中に稼働中でないインスタンスが存在しており、かつ稼働中のインスタンスの数が生存インスタンス数以上の場合、稼働中でないインスタンスが存在していることで、稼働中のインスタンスが動作しているコンピュータに定常的に負荷が加わるものの、当該負荷の大きさは比較的小さく、稼働中のインスタンスによって実現される提供サービスの品質低下の程度もごく軽微である可能性が高い。これに対して請求項１記載の発明では、各インスタンスの中に稼働中でないインスタンスが存在しており、かつ稼働中のインスタンスの数が生存インスタンス数以上の場合には、稼働中でないインスタンスの再起動を停止させるので、稼働中でないインスタンスの再起動が行われることでシステム全体に一時的に高い負荷が加わり、稼働中のインスタンスによって実現される提供サービスに一時的ではあっても明瞭な品質低下が生ずることを防止することができる。
【００１４】
このように、請求項１記載の発明では、各インスタンスの中に稼働中でないインスタンスが存在している場合に、稼働中でないインスタンスの再起動を行わせるか否かを、稼働中のインスタンスの数が生存インスタンス数未満か以上かに応じて切り替えるので、一部のインスタンスの稼働停止時に、稼働中のインスタンスによって実現される提供サービスの品質低下を抑制することができる。
【００１５】
なお、請求項１又は請求項２記載の発明において、上記の取得手段及び管理手段は、複数台のコンピュータ（インスタンスが動作するコンピュータ）と別に設けられ複数台のコンピュータと共に本発明に係るコンピュータ・システムを構成するコンピュータによって実現されるように構成してもよいが、例えば請求項４に記載したように、複数台のコンピュータのうち稼働中の何れか１台のコンピュータによって実現されるように構成することが好ましい。これにより、本発明に係るコンピュータ・システムの構成を簡略化することができる。
【００１６】
また、請求項１〜請求項５の何れかに記載の発明において、生存インスタンス数としては、例えば請求項５に記載したように、外部コンピュータからの要求に対し、稼働中のインスタンスが、所定時間以内に要求に応じた処理を行って応答を返すことが可能な最小のインスタンス数を設定することが好ましい。これにより、各インスタンスの中に稼働中でないインスタンスが存在しており、稼働中のインスタンスの数が生存インスタンス数以上であったために稼働中でないインスタンスの再起動を停止させた場合にも、稼働中のインスタンスが、所定時間以内に要求に応じた処理を行って応答を返すことができ、稼働中のインスタンスによって実現される提供サービスに定常的かつ顕著な品質低下が生ずることを確実に防止できる。また、各インスタンスの中に稼働中でないインスタンスが存在していた場合に、稼働中のインスタンスの数が生存インスタンス数未満であったとしても、再起動されるインスタンスの数が最小限に抑制されるので、インスタンスの再起動に伴って提供サービスの一時的な品質低下が生ずる回数も最小とすることができる。
【００１７】
また、或るコンピュータ上で動作するインスタンスの稼働停止が、別のコンピュータ上で動作するインスタンスの稼働が停止した影響で引き起こされる可能性があることを考慮すると、請求項１又は請求項２記載の発明において、管理手段は、例えば請求項６に記載したように、制御手段によって特定インスタンスの再起動を行わせた場合に、取得手段によって各インスタンスの稼働状態の取得を再度行わせるように構成することが好ましい。これにより、特定インスタンスの再起動に伴い、稼働中でない別のインスタンスが稼働中に戻った場合にもこれを直ちに検知することができ、インスタンスの再起動が必要以上に（稼働中のインスタンスの数が生存インスタンス数以上になった後も）行われることを防止することができる。
【００１８】
また、制御手段によってインスタンスの再起動を行わせても再起動が失敗する（インスタンスが稼働中にならない）ことがあるが、この場合、再起動失敗の原因となっている事象は、例えばハードウェアの故障やプログラムの不調等のように、人手による介入を必要とする事象であることが多く、インスタンスの再起動を再度行ったとしても再起動が再度失敗する可能性が高い。これを考慮すると、請求項１又は請求項２記載の発明において、管理手段は、例えば請求項７に記載したように、制御手段によって行わせた特定インスタンスの再起動が失敗した場合、特定インスタンスの稼働状態を起動不可状態に設定し、以後の再起動の対象から除外することが好ましい。これにより、インスタンスの再起動を必要以上に繰り返すことで、システムの動作が不安定となって提供サービスの品質が低下する等の不都合が生ずることを防止することができる。
【００１９】
請求項８記載の発明に係るシステム管理プログラムは、通信回線を介して互いに接続された複数台のコンピュータを含むコンピュータ・システムの前記複数台のコンピュータのうちの何れか１つのコンピュータを、前記複数台のコンピュータ上で各々動作し前記複数台のコンピュータと通信回線を介して接続された外部コンピュータからの要求に応じた処理を各々行う各インスタンスの稼働状態を各々取得する取得手段、及び、前記取得手段によって取得された前記各インスタンスの稼働状態に基づいて、前記各インスタンスの中に稼働中でないインスタンスが存在しており、かつ稼働中のインスタンスの数が予め設定された生存インスタンス数未満の場合には、前記稼働中でないインスタンスのうちの何れか１つの特定インスタンスと同一のコンピュータ上で動作する制御手段により前記特定インスタンスの再起動を行わせ、前記各インスタンスの中に稼働中でないインスタンスが存在しており、かつ稼働中のインスタンスの数が前記生存インスタンス数以上の場合は、前記稼働中でないインスタンスの再起動を停止させる管理手段として機能させる。
【００２０】
請求項９記載の発明に係るシステム管理プログラムは、上記コンピュータ・システムの複数台のコンピュータのうちの何れか１つのコンピュータを、上記の取得手段及び管理手段として機能させるためのプログラムであるので、前記何れか１つのコンピュータが請求項９記載の発明に係るシステム管理プログラムを実行することで、上記コンピュータ・システムが請求項１に記載のコンピュータ・システムとして機能することになり、請求項１記載の発明と同様に、一部のインスタンスの稼働停止時に、稼働中のインスタンスによって実現される提供サービスの品質低下を抑制することができる。
【発明の効果】
【００２１】
以上説明したように本発明は、複数台のコンピュータ上で各々動作し外部コンピュータからの要求に応じた処理を各々行う各インスタンスの稼働状態を各々取得し、各インスタンスの中に稼働中でないインスタンスが存在しており、かつ稼働中のインスタンスの数が予め設定された生存インスタンス数未満の場合には、稼働中でないインスタンスのうちの何れか１つの特定インスタンスと同一のコンピュータ上で動作する制御手段により特定インスタンスの再起動を行わせ、各インスタンスの中に稼働中でないインスタンスが存在しており、かつ稼働中のインスタンスの数が生存インスタンス数以上の場合は、稼働中でないインスタンスの再起動を停止させるようにしたので、一部のインスタンスの稼働停止時に、稼働中のインスタンスによって実現される提供サービスの品質低下を抑制できる、という優れた効果を有する。
【発明を実施するための最良の形態】
【００２２】
以下、図面を参照して本発明の実施形態の一例を詳細に説明する。図１には本実施形態に係るコンピュータ・システム１０が示されている。なお、以下では、本実施形態に係るコンピュータ・システム１０が、特定金融機関内の各種業務を支援する目的で特定金融機関内に設置されているものとして説明するが、本発明に係るコンピュータ・システムは他の用途に使用されるシステムであってもよい。コンピュータ・システム１０は、特定金融機関の情報センタ等に設置された複数台のサーバ・コンピュータ１２，１４，１６と、特定金融機関内に構築されたコンピュータ・ネットワーク２０を含んで構成されている。なお、複数台のサーバ・コンピュータ１２，１４，１６は本発明に係る複数台のコンピュータに対応している。なお、本実施形態ではサーバ・コンピュータが３台設けられている態様を説明するが、本発明はこれに限定されるものではない。
【００２３】
サーバ・コンピュータ１２，１４，１６は互いに同一の構成であるので、サーバ・コンピュータ１２を例にその構成を説明すると、サーバ・コンピュータ１２はＣＰＵ１２Ａ、ＲＡＭ等から成るメモリ１２Ｂ、磁気ディスク等から成る不揮発性の記憶部１２Ｃ、ネットワークインタフェース（Ｉ／Ｆ）部１２Ｄを備えており、ネットワークＩ／Ｆ部１２Ｄに接続された通信回線を介し、他のサーバコンピュータ１４，１６及びコンピュータ・ネットワーク２０（詳しくはネットワーク２０内のブランチサーバ２２）に各々接続されている。またサーバ・コンピュータ１２には、大容量の磁気ディスク等の記憶媒体から成るストレージ１８が接続されており、ストレージ１８には特定金融機関の各種業務に関連する業務情報を格納する業務情報データベース（ＤＢ）を記憶するための記憶領域が設けられている。なお、ストレージ１８は業務情報ＤＢに格納すべきデータ量に応じて複数台設けられていてもよい。ストレージ１８は請求項３に記載の記憶媒体に対応している。また、本実施形態に係るコンピュータ・システム１０のうち、複数台のサーバ・コンピュータ１２，１４，１６及びストレージ１８は本発明に係るコンピュータ・システムに対応している。
【００２４】
また、サーバ・コンピュータ１２の記憶部１２Ｃには、サーバ・コンピュータ１２を、業務情報ＤＢにアクセスする（業務情報ＤＢからの業務情報の読み出しや業務情報ＤＢへの業務情報の書き込み（追加や更新等）を行う）サービスを提供するＤＢアクセスアプリケーション（図２参照）として機能させるためのＤＢアクセスアプリケーション・プログラム、サーバ・コンピュータ１２をシステム管理部（図２参照）として機能させるためのシステム管理プログラム、サーバ・コンピュータ１２を起動制御部（図２参照）として機能させるための起動制御プログラムが各々記憶（インストール）されている。なお、上記のシステム管理部は本発明に係る取得手段及び管理手段に、起動制御部は請求項１等に記載の制御手段に対応しており、上記各プログラムのうち、システム管理プログラムは請求項８に記載のシステム管理プログラムに対応している。
【００２５】
一方、コンピュータ・ネットワーク２０は、特定金融機関の各支店に各々設置されたブランチサーバ２２（ＰＣ、ワークステーション、大型コンピュータの何れでもよい）が通信回線を介して互いに接続されて構成されており、個々のブランチサーバ２２には、個々のブランチサーバ２２と同一の支店に設置された複数台の営業店端末（金融機関の従業員が操作するための端末）２４が各々接続されている。
【００２６】
次に本実施形態の作用を説明する。なお、以下では、サーバ・コンピュータ１２をノードＮ、サーバ・コンピュータ１４をノードＮ＋１、サーバ・コンピュータ１６をノードＮ＋２と称して各々を区別する。各ノードＮ〜Ｎ＋２では、起動時に、ＤＢアクセスアプリケーション・プログラム、システム管理プログラム及び起動制御プログラムが記憶部からメモリに各々読み出されて実行されることで、各ノードＮ〜Ｎ＋２が稼働している状態では、図２に示すように、システム管理部、ＤＢアクセスアプリケーション（以下、インスタンスという）及び起動制御部が各々動作している。
【００２７】
本実施形態に係るコンピュータ・システム１０では、特定金融機関内で各種業務が行われ、これに伴い業務情報ＤＢにアクセスする必要が生ずる毎に、コンピュータ・システム１０内外の他のコンピュータ（請求項１等に記載の外部コンピュータに相当、具体的には、例えば個々の営業店端末２４等）から、ブランチサーバ２２経由でノード群（ノードＮ〜Ｎ＋２）に対して業務情報ＤＢへのアクセスが要求される。この業務情報ＤＢへのアクセス要求は、ノード群の何れかのノード（ノードＮ〜Ｎ＋２のうち稼働中の何れかのノード）上で動作しているインスタンスで受信され、業務情報ＤＢへのアクセス要求を受信したインスタンスは、当該アクセス要求を受け付けたことを表す受付情報を自ノードのメモリに記憶させることで受信したアクセス要求を受け付け、続いて受け付けたアクセス要求に従って業務情報ＤＢにアクセスし（業務情報ＤＢからの業務情報の読み出しや業務情報ＤＢへの業務情報の書き込みを行い）、アクセス要求元へ応答を送信する処理を行う。このように、各ノード上で動作しているインスタンスは、詳しくは請求項３に記載のインスタンスに対応している。
【００２８】
なお、ストレージ１８に対するアクセス速度がメモリに対するアクセス速度よりも非常に低速であることを考慮し、各ノード上で動作しているインスタンスは、自ノードの起動時に、業務情報ＤＢに格納されている情報の一部を業務情報ＤＢから読み出し、自ノードのメモリにキャッシュ情報として記憶させる処理を行い（なお、他のノードで既にインスタンスが動作している場合は、業務情報ＤＢから読み出した情報に代えて他のノードから転送されたキャッシュ情報が自ノードのメモリに記憶される）、受け付けたアクセス要求におけるアクセス対象の情報が自ノードのメモリに記憶されているキャッシュ情報に含まれている場合には、自ノードのメモリにアクセスすることで業務情報ＤＢへのアクセスを行い、受け付けたアクセス要求におけるアクセス対象の情報がキャッシュ情報に含まれていない場合にのみストレージ１８にアクセスすることで、アクセス要求を受信してからアクセス要求元へ応答を返す間での応答時間を短縮している。
【００２９】
また、各ノード上で動作しているインスタンスが自ノードのメモリに記憶させているキャッシュ情報は、各ノード上で動作しているインスタンスが、受け付けたアクセス要求に応じて自ノードのキャッシュ情報に対する業務情報の書き込みを互いに独立に行うことで不一致が生ずる。また、各ノード上で動作しているインスタンスが自ノードのメモリに記憶させる受付情報についても、アクセス要求を受け付けたインスタンスが、受け付けたアクセス要求に応じて業務情報ＤＢへのアクセスを行う前にハングアップ状態となるかダウンしてしまった場合、前記アクセス要求に対する応答がアクセス要求元へ送信されないという問題が生ずる。このため、各ノード上で動作しているインスタンスは、自ノードのメモリに記憶されているキャッシュ情報や受付情報を、他のノードのメモリに記憶されている同情報と一致させる同期処理（請求項２に記載の同期処理に相当）を行う。
【００３０】
なお、同期処理を行うタイミング（請求項２に記載の所定のタイミング）は、何れか１つのインスタンスがキャッシュ情報に基づいて業務情報ＤＢを更新するタイミングが挙げられるが、これ以外に、同期処理を前回行ってから一定時間が経過したタイミングや、何れか１つのインスタンスにおける自ノードのキャッシュ情報への業務情報の書込回数が所定回に達したタイミング等でも同期処理を行うようにしてもよい。また、後述するインスタンスの再起動が行われることで、何れか１つのインスタンスが新たに稼働中になった場合には、新たに稼働中となったインスタンスが動作しているノードのメモリにはキャッシュ情報及び受付情報が記憶されていないので、上記の同期処理が必ず実行される。また、キャッシュ情報の同期処理と受付情報の同期処理は必ずしも同時に行う必要はなく、両者の同期処理を異なるタイミングで行うようにしてもよい。
【００３１】
また、システム管理部及び起動管理部は各ノード上で各々動作しているが、このうちシステム管理部については、図２にも示すように、何れか１つのノード上で動作しているシステム管理部が稼働系となり、当該稼働系のシステム管理部が各インスタンスの稼働状態の管理を行う（詳細は後述）一方、他のノード上で動作しているシステム管理部は待機系となる。また、各ノード上で各々動作している起動管理部は、稼働系のシステム管理部からの指示に応じて、自ノードで動作しているインスタンスの強制終了や再起動等の処理を行う。
【００３２】
次に、各ノード上で動作しているシステム管理部によって一定時間周期で各々実行されるシステム管理処理について、図３を参照して説明する。システム管理処理では、まずステップ５０において、自ノードのメモリ上の所定領域に設定されている情報を参照する等により、当該システム管理処理を行っているシステム管理部自身が稼働系か否かを判定する。判定が肯定された場合（システム管理部自身が稼働系である場合）はステップ５８へ移行するが、判定が否定された場合（システム管理部自身は待機系である場合）はステップ５２へ移行し、他のノード上で動作している全てのシステム管理部に対して稼働状態を問い合わせる情報を送信し、各システム管理部からの応答の有無及び応答の内容を判断することで、各システム管理部の稼働状態を取得する。
【００３３】
次のステップ５４では、ステップ５２で取得した各システム管理部の稼働状態に基づいて、システム管理部自身が稼働系に切替わる必要が有るか否か判定する。本実施形態では、各ノード上で動作するシステム管理部に対して稼働系への切り替わりの優先順位が定められており、システム管理部自身よりも前記優先順位が上位のシステム管理部の中に稼働中のシステム管理部が存在している場合は前記判定が否定され、システム管理処理を終了する。一方、システム管理部自身よりも前記優先順位が上位のシステム管理部の中に稼働中のシステム管理部が存在していない場合（例えば、前記優先順位がノード番号の昇順でシステム管理部自身がノードＮ＋２上で動作しており、ノードＮ,Ｎ＋１上で動作するシステム管理部が何れも稼働を停止していた等の場合）は前記判定が肯定され、ステップ５６でシステム管理部自身が稼働系となるように稼働系を切り替える処理を行った後にステップ５８へ移行する。
【００３４】
このように、待機系のシステム管理部は、他のノード上で動作するシステム管理部の稼働状態の監視のみを行い、他のノード上で動作する前記優先順位がより上位のシステム管理部が稼働を停止していることを検知した場合に、それ迄稼働系であったシステム管理部に代って稼働系へ切り替わることになる。なお、上記事項は請求項４記載の発明に対応している。
【００３５】
稼働系のシステム管理部では、まずステップ５８において、自ノードを含む全てのノードで動作する各インスタンスの稼働状態を取得する。本実施形態では、インスタンスの稼働状態を、インスタンスが稼働中であることを意味する"起動"、インスタンスがハングアップ状態であることを意味する"ハング"、インスタンスがダウン状態であることを意味する"停止"、インスタンスの再起動を禁止している状態であることを意味する"起動不可"の４種類の状態に区分している。このうち"起動不可"はインスタンスの再起動に失敗した場合に設定される状態であり、ステップ５８では、各インスタンスについて所定の情報を送信し、各インスタンスからの応答の有無及び応答の内容を判定する稼働確認処理を各インスタンスについて各々行うことで、各インスタンスの稼働状態が"起動"、"ハング"及び"停止"の何れの状態かを各々判定する。
【００３６】
また、稼働系のシステム管理部は、自ノードのメモリ上に、各インスタンスの稼働状態を表す状態区分をテーブル等の形式で記憶しており、次のステップ６０では、ステップ５８による各インスタンスの稼働状態の判定結果に基づいて、メモリ上に記憶している各インスタンスの状態区分を更新する。但し、状態区分が既に"起動不可"に設定されていたインスタンスについては状態区分の上書きは行わず、状態区分を"起動不可"のまま維持させる。なお、ステップ５８，６０は本発明に係る取得手段に対応している。次のステップ６２では、メモリ上に記憶されている更新後の各インスタンスの状態区分を参照し、各ノード上で動作する全てのインスタンスの状態区分が"起動"(稼働中)か否か判定する。判定が肯定された場合は処理を終了する。
【００３７】
また、全インンスタンスの中に状態区分が"起動"でないインスタンス（稼働中でないインスタンス）が存在している場合は、ステップ６２の判定が否定されてステップ６４へ移行し、状態区分が"起動"のインスタンスの数を計数し、計数した状態区分が"起動"のインスタンスの数が、予め設定された生存インスタンス数以上か否か判定する。本実施形態に係るコンピュータ・システムは、業務情報ＤＢへのアクセス要求を稼働中のインスタンスが分担して処理する構成であるので、アクセス要求を受け付けてから、受け付けたアクセス要求に応じて業務情報ＤＢにアクセスし、アクセス要求元へ応答を返す迄の時間（アクセス要求処理時間）は、状態区分が"起動"のインスタンス（稼働中のインスタンス）の数が少なくなるに従って増大する。本実施形態では稼働中のインスタンス数の変化に対するアクセス要求処理時間の変化が予め計測され、生存インスタンス数として、アクセス要求処理時間が所定時間以下となる最小のインスタンス数（請求項５に記載の生存インスタンス数に相当）が設定されている。
【００３８】
状態区分が"起動"のインスタンスの数が生存インスタンス数以上である場合、ステップ６４の判定が肯定されてステップ９６へ移行し、全インスタンスの中に状態区分が"ハング"のインスタンスが存在しているか否か判定する。判定が否定された場合はシステム管理処理を終了する。また、全インスタンスの中に状態区分が"ハング"のインスタンスが存在している場合はステップ９６の判定が肯定されてステップ９８へ移行し、状態区分が"ハング"のインスタンスと同一のノード上で動作している起動制御部により、状態区分が"ハング"のインスタンスを強制終了させる。また、次のステップ１００では、メモリ上に記憶しれている上記インスタンスの状態区分を"停止"に設定し、システム管理処理を終了する。
【００３９】
このように、本実施形態では、全インスタンスの中に状態区分が"起動"でないインスタンスが存在しているものの、状態区分が"起動"のインスタンスの数が生存インスタンス数以上である場合に、状態区分が"起動"でないインスタンスの再起動を停止させている（後述するステップ７４，８２を行うことなくシステム管理処理を終了している）。これにより、状態区分が"起動"でないインスタンスを再起動させることなく、アクセス要求処理時間を所定時間以下に維持できると共に、状態区分が"起動"でないインスタンスを再起動させることで、先に説明した同期処理が行われることに伴ってアクセス要求処理時間が一時的に悪化（長時間化）することも回避することができる。なお、ステップ６４は本発明に係る管理手段に対応している。
【００４０】
一方、状態区分が"起動"のインスタンスの数が生存インスタンス数未満の場合には、ステップ６４の判定が否定されてステップ６６へ移行し、次のステップ６８以降の処理を未実行のインスタンスが有るか否か判定する。この場合は判定が肯定されてステップ６８へ移行し、全インスタンスの中の何れか１つのインスタンスを処理対象のインスタンスとして選択する。なお、処理対象のインスタンスは、例えば個々のインスタンスが動作するノードのノード番号の昇順又は降順に選択することができる。また、次のステップ７０では処理対象のインスタンスの状態区分が"ハング"か否か判定する。この判定が否定された場合はステップ７２へ移行し、処理対象のインスタンスの状態区分が"停止"か否か判定する。処理対象のインスタンスの状態区分が"起動"又は"起動不可"の場合には、ステップ７０,７２の判定が何れも否定されてステップ６４に戻る。
【００４１】
また、処理対象のインスタンスの状態区分が"ハング"である場合には、ステップ７０の判定が肯定されてステップ７８へ移行する。各ノードのメモリ上には、インスタンスが各種のログ情報を格納するためのログ格納領域が設けられており、ステップ７８では、処理対象のインスタンスが動作している特定ノードのメモリ上に設けられているログ格納領域（処理対象のインスタンスがログ情報を格納する格納領域）の空き容量を確認し、次のステップ８０では前記ログ格納領域に空き容量の不足が生じている（空き容量が閾値以下）か否か判定する。
【００４２】
処理対象のインスタンスがログ情報を格納する格納領域に空き容量の不足が生じている場合、処理対象のインスタンスについては、ハングアップ状態になった原因がログ格納領域の空き容量不足であり、ログ格納領域に格納されているログ情報を別の記録媒体へ待避してログ格納領域をクリアする等のメインテナンス作業が行われない限り、処理対象のインスタンスを正常に稼働させることは困難と判断できる。このため、ステップ８０の判定が肯定された場合はステップ９２へ移行し、処理対象のインスタンスと同一のノード上で動作している起動制御部によって処理対象のインスタンスを強制終了させる。またステップ９４では、メモリ上に記憶されている処理対象のインスタンスの状態区分を"起動不可"に設定し、ステップ６４に戻る。この場合、処理対象のインスタンスの状態区分は、サービスエンジニア等によって上記のメインテナンス作業が行われ、メモリ上に記憶されている各インスタンスの状態区分がリセットされる迄の間"起動不可"のまま維持され、再起動の対象から除外される。
【００４３】
また、状態区分が"起動"のインスタンスの数が生存インスタンス数未満の場合、アクセス要求処理時間が定常的に所定時間よりも大となり、提供サービスの品質低下が生じていると判断できるが、処理対象のインスタンスの状態区分が"ハング"であり、かつ、処理対象のインスタンスがログ情報を格納する格納領域に空き容量の不足が生じていない場合には、処理対象のインスタンスを再起動させることができれば、同期処理が行われることに伴ってアクセス要求処理時間は一時的に悪化（長時間化）するものの、アクセス要求処理時間が定常的に悪化している状態を解消できる。
【００４４】
このため、ステップ８０の判定が否定された場合はステップ８２へ移行し、処理対象のインスタンスと同一のノード上で動作している起動制御部により、処理対象のインスタンスを一旦強制終了させた後に処理対象のインスタンスを再起動させる。またステップ８４では、インスタンスの強制終了及び再起動が正常に行われた場合の所要時間以上の時間待機した後に、先のステップ５８,６０と同様にして各インスタンスの稼働状態の取得、メモリ上に記憶されている各インスタンスの状態区分の更新を行う。なお、このステップ８４は、請求項６に記載の「取得手段によって各インスタンスの稼働状態の取得を再度行わせる」ことに対応している。次のステップ８６では、メモリ上に記憶されている更新後の各インスタンスの状態区分を参照し、処理対象のインスタンスの状態区分が"ハング"から"起動"に変化したか、すなわち処理対象のインスタンスの再起動が成功したか否か判定する。
【００４５】
ステップ８６の判定が肯定された場合はステップ６４に戻る。このとき、状態区分が"起動"のインスタンスの数が生存インスタンス数以上になっていれば、アクセス要求処理時間は所定時間以下に回復している（提供サービスの品質が許容レベル迄回復している）ので、ステップ６４の判定が肯定されてステップ９６へ移行し、状態区分が"ハング"のインスタンスが他にも存在していれば（ステップ９６の判定が肯定されれば）、当該インスタンスについては再起動が行われることなく強制終了のみ行われると共に、状態区分が"停止"に設定される（ステップ９８，１００）ことで、必要以上にインスタンスの再起動が行われることなく処理が終了される。
【００４６】
また、処理対象のインスタンスの再起動を行ったものの、処理対象のインスタンスの状態区分が"起動"へ変化しなかった、すなわち処理対象のインスタンスの再起動が失敗した場合、その原因としては、処理対象のインスタンスが動作するノード（サーバ・コンピュータ）のハードウェアの故障又は不調や、プログラム（ＤＢアクセスアプリケーション）のバグ等が考えられ、処理対象のインスタンスの再起動を再度行ったとしても成功する確率は低く、ハードウェアの修理や交換、プログラムの更新等のメインテナンス作業が必要と判断できる。このため、ステップ８６の判定が否定された場合はステップ８８へ移行し、処理対象のインスタンスと同一のノード上で動作している起動制御部によって処理対象のインスタンスを強制終了させる。またステップ９０では、メモリ上に記憶されている処理対象のインスタンスの状態区分を"起動不可"に設定し、ステップ６４に戻る。この場合、処理対象のインスタンスの状態区分は、サービスエンジニア等によって上記のメインテナンス作業が行われ、メモリ上に記憶されている各インスタンスの状態区分がリセットされる迄の間"起動不可"のまま維持され、再起動の対象から除外される。なお、このステップ９０は請求項７に記載の管理手段に対応している。
【００４７】
なお、或るインスタンスがハングアップ状態となっていることで、別のインスタンスもハングアップ状態になることがあり、或るインスタンスの再起動を行うと、当該インスタンスの再起動が失敗したとしても、別のインスタンスのハングアップ状態が解消され、状態区分が"ハング"から"起動"へ変化することがある。このため、処理対象のインスタンスの再起動が失敗してステップ８６の判定が否定された場合にも、状態区分が"起動"のインスタンスの数が生存インスタンス数以上になることでステップ６４の判定が肯定されることがある。この場合もアクセス要求処理時間は所定時間以下に回復している（提供サービスの品質が許容レベル迄回復している）ので、状態区分が"ハング"のインスタンスが他にも存在していれば（ステップ９６の判定が肯定されれば）、当該インスタンスについては再起動が行われることなく強制終了のみ行われると共に、状態区分が"停止"に設定される（ステップ９８，１００）ことで、必要以上にインスタンスの再起動が行われることなく処理が終了される。
【００４８】
また、処理対象のインスタンスの状態区分が"停止"である場合は、ステップ７２の判定が肯定されてステップ７４へ移行し、処理対象のインスタンスと同一のノード上で動作している起動制御部により、処理対象のインスタンスを再起動させる。また、処理対象のインスタンスの状態区分が"停止"であった場合には、処理対象のインスタンスの再起動に失敗することはないので、次のステップ７６では処理対象のインスタンスの状態区分を"起動"に設定し、ステップ６４へ戻る。
【００４９】
また、各インスタンスを順に処理対象としながら上述したステップ６４以降の処理を繰り返す間に、状態区分が"起動"のインスタンスの数が生存インスタンス数以上になった場合には、先にも説明したようにステップ６４の判定が肯定されるが、全てのインスタンスを処理対象としてステップ６４以降の処理を各々行っても状態区分が"起動"のインスタンスの数が生存インスタンス数未満のままであった場合には、ステップ６６の判定が否定されて処理を終了する。この場合、アクセス要求処理時間は所定時間よりも大の状態のままであるので、サービスエンジニアを呼び出す等の処理を行うことで、メインテナンス作業を直ちに行わせることが望ましい。
【００５０】
上述したシステム管理処理によって実現される各条件での動作について、図４を参照して更に説明する。なお、図４に示す例では、何れもノードＮ〜Ｎ＋２の３個のノード上でインスタンスＮ〜Ｎ＋２が各々動作しており、生存インスタンス数＝２とされている。図４(Ａ)はインスタンスＮ〜Ｎ＋２が全て稼働中（状態区分が"起動"）の状態から、単一のインスタンス（ここではインスタンスＮ＋１）がハングアップ状態へ変化し、このインスタンスＮ＋１のハングアップ状態への変化を検知した（状態区分が"ハング"へ変化した）場合を示している。
【００５１】
この場合、状態区分が"起動"のインスタンスの数は３から２へ減少するものの、依然として生存インスタンス数以上であるので、インスタンスＮ＋１に対しては強制終了のみ行われて再起動は行われず、インスタンスＮ＋１の状態区分は"停止"に設定される。これにより、インスタンスＮ＋１の再起動によってアクセス要求処理時間の一時的な悪化を生じさせることなく、アクセス要求処理時間を所定時間以下に維持できる。また、インスタンスＮ＋１の状態区分は"停止"である（"起動不可"ではない）ので、更に他のインスタンス（例えばインスタンスＮ）がハングアップ状態へ変化するか又はダウンしたことが検知された場合は、アクセス要求処理時間の定常的な悪化を回避するためにインスタンスＮ＋１の再起動が行われることになる。
【００５２】
また、図４(Ｂ)はインスタンスＮ〜Ｎ＋２が全て稼働中（状態区分が"起動"）の状態から、複数のインスタンス（ここではインスタンスＮ＋１，Ｎ＋２）が各々ハングアップ状態へ変化し、このハングアップ状態への変化を検知した場合を示している。この場合、状態区分が"起動"のインスタンスの数は３から１へ減少して生存インスタンス数未満となり、アクセス要求処理時間が所定時間よりも大となるので、状態区分が"ハング"となったインスタンスＮ＋１，Ｎ＋２の何れか一方に対して再起動が行われる。
【００５３】
上記の再起動の結果、再起動が成功し（再起動を行った一方のインスタンスの状態区分が"起動"へ変化し）、他方のインスタンスも同時に稼働中（状態区分が"起動"）へ変化した場合は、両インスタンスは共に稼働中で維持され、アクセス要求処理時間が最小の理想的な状態となるが、一方のインスタンスの再起動には成功したものの、他方のインスタンスの状態区分が"ハング"のまま変化しなかった場合は、当該他方のインスタンスが強制終了されて状態区分が"停止"に設定される。この場合、更に他方のインスタンスの再起動を行うことでアクセス要求処理時間の一時的な悪化を生じさせることなく、アクセス要求処理時間が所定時間以下に回復している状態を維持することができる。
【００５４】
また、一方のインスタンスの再起動を行ったものの当該一方のインスタンスの状態区分が"起動"へ変化しなかった場合（再起動が失敗した場合）、上記一方のインスタンスの状態区分は"起動不可"に設定されるが、一方のインスタンスの再起動に伴って他方のインスタンスの状態区分が"ハング"から"起動"へ変化した場合には、他方のインスタンスが稼働中の状態（アクセス要求処理時間が所定時間以下に回復している状態）で維持される。また、一方のインスタンスの再起動が失敗し、当該再起動を行っても他方のインスタンスの状態区分が"ハング"から変化しなかった場合には、アクセス要求処理時間を所定時間以下に回復させることを目的として他方のインスタンスの再起動が行われることになる。
【００５５】
また、図４(Ｃ)はインスタンスＮ＋２の状態区分が"停止"かつインスタンスＮ、Ｎ＋１が稼働中（状態区分が"起動"）の状態から、単一のインスタンス（ここではインスタンスＮ＋１）がハングアップ状態へ変化し、このハングアップ状態への変化を検知した場合を示している。この場合は、状態区分が"起動"のインスタンスの数は２から１へ減少して生存インスタンス数未満となり、アクセス要求処理時間が所定時間よりも大となるので、状態区分が"ハング"となったインスタンスＮ＋１又は状態区分が"停止"のインスタンスＮ＋２の再起動が行われるが、例えばインスタンスＮ＋１の再起動が行われ、当該再起動が成功した場合はインスタンスＮ＋２の再起動は行われず、インスタンスＮ＋２の再起動によってアクセス要求処理時間の一時的な悪化を生じさせることなく、アクセス要求処理時間が所定時間以下に回復している状態を維持することができる。また、例えばインスタンスＮ＋１の再起動が行われ、当該再起動が失敗した場合には、インスタンスＮ＋１の状態区分は"起動不可"に設定され、アクセス要求処理時間を所定時間以下に回復させることを目的としてインスタンスＮ＋２の再起動が行われることになる。
【００５６】
なお、図４(Ｃ)の例において、例えばインスタンスＮ＋２の再起動が行われた場合は、当該再起動に成功するので、インスタンスＮ＋１が強制終了されて状態区分が"停止"に設定される。この場合、インスタンスＮ＋１の再起動を行うことでアクセス要求処理時間の一時的な悪化を生じさせることなく、アクセス要求処理時間が所定時間以下に回復している状態を維持することができる。
【００５７】
なお、上記では複数台のコンピュータ上で各々動作するインスタンスの一例として、外部からのアクセス要求に従ってＤＢにアクセスし、アクセス要求元へ応答を送信する処理を行うインスタンスを説明したが、本発明に係るコンピュータ・システムは、各インスタンスが上記処理を行う構成に限られるものではなく、本発明は、各インスタンスが任意の処理を行うコンピュータ・システムに適用可能である。
【００５８】
また、上記では本発明に係るシステム管理プログラムが複数台のサーバ・コンピュータ１２，１４，１６の記憶部に予め記憶（インストール）されている態様を説明したが、本発明に係るシステム管理プログラムは、ＣＤ−ＲＯＭやＤＶＤ−ＲＯＭ等の記録媒体に記録されている形態で提供することも可能である。
【図面の簡単な説明】
【００５９】
【図１】本実施形態に係るコンピュータ・システムの概略構成を示すブロック図である。
【図２】各ノード(サーバ・コンピュータ)上で動作するインスタンス等を示す概略図である。
【図３】システム管理部によって行われるシステム管理処理の内容を示すフローチャートである。
【図４】システム管理処理によって実現される各条件での動作を示す概念図である。
【符号の説明】
【００６０】
１０  コンピュータ・システム
１２，１４，１６  サーバ・コンピュータ
１８  ストレージ
２０  コンピュータ・ネットワーク
２２  ブランチサーバ
２４  営業店端末
【図１】
0004485560.tif 000002
【図２】
0004485560.tif 000003
【図３】
0004485560.tif 000004
【図４】
0004485560.tif 000005