通信回線を介して互いに接続された複数台のコンピュータ上でインスタンスを各々動作させてサービスを提供する構成のシステムにおいて、障害等の発生により何れかのコンピュータ上で動作するインスタンスの稼働が停止した場合に、特許文献2に記載の技術のように稼働を停止したインスタンスを一律に不能化したとすると、他のインスタンスが動作しているコンピュータに加わる負荷が増大するので、要求に対する応答が遅延する等の提供サービスの品質低下が生ずる可能性がある。
一方、上記構成のシステムでは、個々のコンピュータ上で動作するインスタンスが、外部コンピュータから受け付けた要求を表す情報等を個々のコンピュータのメモリに記憶させると共に、個々のコンピュータのメモリに記憶させている情報を適当なタイミングで一致させる同期処理を行う構成であることが多い。このため、特許文献1に記載の技術のようにインスタンスの稼働状態を監視し、異常を検知した場合はインスタンスを一律に再起動させる場合にも、インスタンスの再起動時に同期処理が行われる等によってシステム全体に一時的に高い負荷が加わり、要求に対する応答が遅延する等の提供サービスの品質低下が生ずる可能性がある。
本発明は上記事実を考慮して成されたもので、一部のインスタンスの稼働停止時に、稼働中のインスタンスによって実現される提供サービスの品質低下を抑制できるコンピュータ・システム及びシステム管理プログラムを得ることが目的である。
上記目的を達成するために請求項1記載の発明に係るコンピュータ・システムは、通信回線を介して互いに接続された複数台のコンピュータを含むコンピュータ・システムであって、前記複数台のコンピュータ上で各々動作し前記複数台のコンピュータと通信回線を介して接続された外部コンピュータからの要求に応じた処理を各々行う各インスタンスの稼働状態を各々取得する取得手段と、前記取得手段によって取得された前記各インスタンスの稼働状態に基づいて、前記各インスタンスの中に稼働中でないインスタンスが存在しており、かつ稼働中のインスタンスの数が予め設定された生存インスタンス数未満の場合には、前記稼働中でないインスタンスのうちの何れか1つの特定インスタンスと同一のコンピュータ上で動作する制御手段により前記特定インスタンスの再起動を行わせ、前記各インスタンスの中に稼働中でないインスタンスが存在しており、かつ稼働中のインスタンスの数が前記生存インスタンス数以上の場合は、前記稼働中でないインスタンスの再起動を停止させる管理手段と、を備えたことを特徴としている。
請求項1記載の発明に係るコンピュータ・システムは、通信回線を介して互いに接続された複数台のコンピュータを含んで構成されており、複数台のコンピュータ上では、複数台のコンピュータと通信回線を介して接続された外部コンピュータからの要求に応じた処理を各々行うインスタンスが各々動作している。なお、請求項1記載の発明において、複数台のコンピュータ上で各々動作する各インスタンスは、例えば請求項2に記載したように、各々が動作するコンピュータに設けられたメモリに、外部コンピュータから受け付けた要求を表す情報を含む所定の情報を各々記憶させると共に、少なくとも何れか1つのインスタンスが新たに稼働中になったタイミングで、個々のコンピュータのメモリに記憶されている所定の情報の同期をとる同期処理を行う構成であってもよい。なお、同期処理を行うタイミングは、何れか1つのインスタンスが新たに稼働中になったタイミングに限られるものではなく、前回の同期処理から一定時間が経過したタイミングや、メモリに記憶させた所定の情報の更新回数が所定回に達したタイミング等でも同期処理を行うようにしてもよい。
また、請求項1又は請求項2記載の発明において、コンピュータ・システムの複数台のコンピュータは所定のデータベースを記憶する記憶媒体と各々接続されていてもよく、この場合、複数台のコンピュータ上で各々動作する各インスタンスは、例えば請求項3に記載したように、外部コンピュータからの要求に応じて、データベースにアクセスする処理を含む処理を各々行う構成であってもよい。また、この場合、何れか1つのインスタンスがデータベースにアクセスするタイミングも、請求項2に記載の同期処理を行うタイミングに含まれていてもよい。
ここで、請求項1記載の発明では、取得手段によって取得された各インスタンスの稼働状態に基づいて、各インスタンスの中に稼働中でないインスタンスが存在しており、かつ稼働中のインスタンスの数が予め設定された生存インスタンス数未満の場合には、稼働中でないインスタンスのうちの何れか1つの特定インスタンスと同一のコンピュータ上で動作する制御手段により特定インスタンスの再起動を行わせ、各インスタンスの中に稼働中でないインスタンスが存在しており、かつ稼働中のインスタンスの数が生存インスタンス数以上の場合は、稼働中でないインスタンスの再起動を停止させる。
各インスタンスの中に稼働中でないインスタンスが存在しており、かつ稼働中のインスタンスの数が生存インスタンス数未満の場合、稼働中のインスタンスの数が比較的少数であるので、稼働中のインスタンスが動作しているコンピュータには定常的に大きな負荷が加わり、稼働中のインスタンスによって実現される提供サービスに、要求に対する応答が遅延する等の品質低下が定常的に生ずる可能性が高い。これに対して請求項1記載の発明では、各インスタンスの中に稼働中でないインスタンスが存在しており、かつ稼働中のインスタンスの数が生存インスタンス数未満の場合に、稼働中のインスタンスの数が生存インスタンス数未満であれば稼働中でないインスタンスの再起動を行わせるので、インスタンスの再起動時に、例えば請求項2に記載の同期処理が行われる等により、システム全体に一時的に高い負荷が加わる可能性はあるものの、稼働中のインスタンスが動作しているコンピュータには定常的に大きな負荷が加わることで、稼働中のインスタンスによって実現される提供サービスに定常的な品質低下が生ずることを防止することができる。
また、各インスタンスの中に稼働中でないインスタンスが存在しており、かつ稼働中のインスタンスの数が生存インスタンス数以上の場合、稼働中でないインスタンスが存在していることで、稼働中のインスタンスが動作しているコンピュータに定常的に負荷が加わるものの、当該負荷の大きさは比較的小さく、稼働中のインスタンスによって実現される提供サービスの品質低下の程度もごく軽微である可能性が高い。これに対して請求項1記載の発明では、各インスタンスの中に稼働中でないインスタンスが存在しており、かつ稼働中のインスタンスの数が生存インスタンス数以上の場合には、稼働中でないインスタンスの再起動を停止させるので、稼働中でないインスタンスの再起動が行われることでシステム全体に一時的に高い負荷が加わり、稼働中のインスタンスによって実現される提供サービスに一時的ではあっても明瞭な品質低下が生ずることを防止することができる。
このように、請求項1記載の発明では、各インスタンスの中に稼働中でないインスタンスが存在している場合に、稼働中でないインスタンスの再起動を行わせるか否かを、稼働中のインスタンスの数が生存インスタンス数未満か以上かに応じて切り替えるので、一部のインスタンスの稼働停止時に、稼働中のインスタンスによって実現される提供サービスの品質低下を抑制することができる。
なお、請求項1又は請求項2記載の発明において、上記の取得手段及び管理手段は、複数台のコンピュータ(インスタンスが動作するコンピュータ)と別に設けられ複数台のコンピュータと共に本発明に係るコンピュータ・システムを構成するコンピュータによって実現されるように構成してもよいが、例えば請求項4に記載したように、複数台のコンピュータのうち稼働中の何れか1台のコンピュータによって実現されるように構成することが好ましい。これにより、本発明に係るコンピュータ・システムの構成を簡略化することができる。
また、請求項1〜請求項5の何れかに記載の発明において、生存インスタンス数としては、例えば請求項5に記載したように、外部コンピュータからの要求に対し、稼働中のインスタンスが、所定時間以内に要求に応じた処理を行って応答を返すことが可能な最小のインスタンス数を設定することが好ましい。これにより、各インスタンスの中に稼働中でないインスタンスが存在しており、稼働中のインスタンスの数が生存インスタンス数以上であったために稼働中でないインスタンスの再起動を停止させた場合にも、稼働中のインスタンスが、所定時間以内に要求に応じた処理を行って応答を返すことができ、稼働中のインスタンスによって実現される提供サービスに定常的かつ顕著な品質低下が生ずることを確実に防止できる。また、各インスタンスの中に稼働中でないインスタンスが存在していた場合に、稼働中のインスタンスの数が生存インスタンス数未満であったとしても、再起動されるインスタンスの数が最小限に抑制されるので、インスタンスの再起動に伴って提供サービスの一時的な品質低下が生ずる回数も最小とすることができる。
また、或るコンピュータ上で動作するインスタンスの稼働停止が、別のコンピュータ上で動作するインスタンスの稼働が停止した影響で引き起こされる可能性があることを考慮すると、請求項1又は請求項2記載の発明において、管理手段は、例えば請求項6に記載したように、制御手段によって特定インスタンスの再起動を行わせた場合に、取得手段によって各インスタンスの稼働状態の取得を再度行わせるように構成することが好ましい。これにより、特定インスタンスの再起動に伴い、稼働中でない別のインスタンスが稼働中に戻った場合にもこれを直ちに検知することができ、インスタンスの再起動が必要以上に(稼働中のインスタンスの数が生存インスタンス数以上になった後も)行われることを防止することができる。
また、制御手段によってインスタンスの再起動を行わせても再起動が失敗する(インスタンスが稼働中にならない)ことがあるが、この場合、再起動失敗の原因となっている事象は、例えばハードウェアの故障やプログラムの不調等のように、人手による介入を必要とする事象であることが多く、インスタンスの再起動を再度行ったとしても再起動が再度失敗する可能性が高い。これを考慮すると、請求項1又は請求項2記載の発明において、管理手段は、例えば請求項7に記載したように、制御手段によって行わせた特定インスタンスの再起動が失敗した場合、特定インスタンスの稼働状態を起動不可状態に設定し、以後の再起動の対象から除外することが好ましい。これにより、インスタンスの再起動を必要以上に繰り返すことで、システムの動作が不安定となって提供サービスの品質が低下する等の不都合が生ずることを防止することができる。
請求項8記載の発明に係るシステム管理プログラムは、通信回線を介して互いに接続された複数台のコンピュータを含むコンピュータ・システムの前記複数台のコンピュータのうちの何れか1つのコンピュータを、前記複数台のコンピュータ上で各々動作し前記複数台のコンピュータと通信回線を介して接続された外部コンピュータからの要求に応じた処理を各々行う各インスタンスの稼働状態を各々取得する取得手段、及び、前記取得手段によって取得された前記各インスタンスの稼働状態に基づいて、前記各インスタンスの中に稼働中でないインスタンスが存在しており、かつ稼働中のインスタンスの数が予め設定された生存インスタンス数未満の場合には、前記稼働中でないインスタンスのうちの何れか1つの特定インスタンスと同一のコンピュータ上で動作する制御手段により前記特定インスタンスの再起動を行わせ、前記各インスタンスの中に稼働中でないインスタンスが存在しており、かつ稼働中のインスタンスの数が前記生存インスタンス数以上の場合は、前記稼働中でないインスタンスの再起動を停止させる管理手段として機能させる。
請求項9記載の発明に係るシステム管理プログラムは、上記コンピュータ・システムの複数台のコンピュータのうちの何れか1つのコンピュータを、上記の取得手段及び管理手段として機能させるためのプログラムであるので、前記何れか1つのコンピュータが請求項9記載の発明に係るシステム管理プログラムを実行することで、上記コンピュータ・システムが請求項1に記載のコンピュータ・システムとして機能することになり、請求項1記載の発明と同様に、一部のインスタンスの稼働停止時に、稼働中のインスタンスによって実現される提供サービスの品質低下を抑制することができる。
以上説明したように本発明は、複数台のコンピュータ上で各々動作し外部コンピュータからの要求に応じた処理を各々行う各インスタンスの稼働状態を各々取得し、各インスタンスの中に稼働中でないインスタンスが存在しており、かつ稼働中のインスタンスの数が予め設定された生存インスタンス数未満の場合には、稼働中でないインスタンスのうちの何れか1つの特定インスタンスと同一のコンピュータ上で動作する制御手段により特定インスタンスの再起動を行わせ、各インスタンスの中に稼働中でないインスタンスが存在しており、かつ稼働中のインスタンスの数が生存インスタンス数以上の場合は、稼働中でないインスタンスの再起動を停止させるようにしたので、一部のインスタンスの稼働停止時に、稼働中のインスタンスによって実現される提供サービスの品質低下を抑制できる、という優れた効果を有する。
以下、図面を参照して本発明の実施形態の一例を詳細に説明する。図1には本実施形態に係るコンピュータ・システム10が示されている。なお、以下では、本実施形態に係るコンピュータ・システム10が、特定金融機関内の各種業務を支援する目的で特定金融機関内に設置されているものとして説明するが、本発明に係るコンピュータ・システムは他の用途に使用されるシステムであってもよい。コンピュータ・システム10は、特定金融機関の情報センタ等に設置された複数台のサーバ・コンピュータ12,14,16と、特定金融機関内に構築されたコンピュータ・ネットワーク20を含んで構成されている。なお、複数台のサーバ・コンピュータ12,14,16は本発明に係る複数台のコンピュータに対応している。なお、本実施形態ではサーバ・コンピュータが3台設けられている態様を説明するが、本発明はこれに限定されるものではない。
サーバ・コンピュータ12,14,16は互いに同一の構成であるので、サーバ・コンピュータ12を例にその構成を説明すると、サーバ・コンピュータ12はCPU12A、RAM等から成るメモリ12B、磁気ディスク等から成る不揮発性の記憶部12C、ネットワークインタフェース(I/F)部12Dを備えており、ネットワークI/F部12Dに接続された通信回線を介し、他のサーバコンピュータ14,16及びコンピュータ・ネットワーク20(詳しくはネットワーク20内のブランチサーバ22)に各々接続されている。またサーバ・コンピュータ12には、大容量の磁気ディスク等の記憶媒体から成るストレージ18が接続されており、ストレージ18には特定金融機関の各種業務に関連する業務情報を格納する業務情報データベース(DB)を記憶するための記憶領域が設けられている。なお、ストレージ18は業務情報DBに格納すべきデータ量に応じて複数台設けられていてもよい。ストレージ18は請求項3に記載の記憶媒体に対応している。また、本実施形態に係るコンピュータ・システム10のうち、複数台のサーバ・コンピュータ12,14,16及びストレージ18は本発明に係るコンピュータ・システムに対応している。
また、サーバ・コンピュータ12の記憶部12Cには、サーバ・コンピュータ12を、業務情報DBにアクセスする(業務情報DBからの業務情報の読み出しや業務情報DBへの業務情報の書き込み(追加や更新等)を行う)サービスを提供するDBアクセスアプリケーション(図2参照)として機能させるためのDBアクセスアプリケーション・プログラム、サーバ・コンピュータ12をシステム管理部(図2参照)として機能させるためのシステム管理プログラム、サーバ・コンピュータ12を起動制御部(図2参照)として機能させるための起動制御プログラムが各々記憶(インストール)されている。なお、上記のシステム管理部は本発明に係る取得手段及び管理手段に、起動制御部は請求項1等に記載の制御手段に対応しており、上記各プログラムのうち、システム管理プログラムは請求項8に記載のシステム管理プログラムに対応している。
一方、コンピュータ・ネットワーク20は、特定金融機関の各支店に各々設置されたブランチサーバ22(PC、ワークステーション、大型コンピュータの何れでもよい)が通信回線を介して互いに接続されて構成されており、個々のブランチサーバ22には、個々のブランチサーバ22と同一の支店に設置された複数台の営業店端末(金融機関の従業員が操作するための端末)24が各々接続されている。
次に本実施形態の作用を説明する。なお、以下では、サーバ・コンピュータ12をノードN、サーバ・コンピュータ14をノードN+1、サーバ・コンピュータ16をノードN+2と称して各々を区別する。各ノードN〜N+2では、起動時に、DBアクセスアプリケーション・プログラム、システム管理プログラム及び起動制御プログラムが記憶部からメモリに各々読み出されて実行されることで、各ノードN〜N+2が稼働している状態では、図2に示すように、システム管理部、DBアクセスアプリケーション(以下、インスタンスという)及び起動制御部が各々動作している。
本実施形態に係るコンピュータ・システム10では、特定金融機関内で各種業務が行われ、これに伴い業務情報DBにアクセスする必要が生ずる毎に、コンピュータ・システム10内外の他のコンピュータ(請求項1等に記載の外部コンピュータに相当、具体的には、例えば個々の営業店端末24等)から、ブランチサーバ22経由でノード群(ノードN〜N+2)に対して業務情報DBへのアクセスが要求される。この業務情報DBへのアクセス要求は、ノード群の何れかのノード(ノードN〜N+2のうち稼働中の何れかのノード)上で動作しているインスタンスで受信され、業務情報DBへのアクセス要求を受信したインスタンスは、当該アクセス要求を受け付けたことを表す受付情報を自ノードのメモリに記憶させることで受信したアクセス要求を受け付け、続いて受け付けたアクセス要求に従って業務情報DBにアクセスし(業務情報DBからの業務情報の読み出しや業務情報DBへの業務情報の書き込みを行い)、アクセス要求元へ応答を送信する処理を行う。このように、各ノード上で動作しているインスタンスは、詳しくは請求項3に記載のインスタンスに対応している。
なお、ストレージ18に対するアクセス速度がメモリに対するアクセス速度よりも非常に低速であることを考慮し、各ノード上で動作しているインスタンスは、自ノードの起動時に、業務情報DBに格納されている情報の一部を業務情報DBから読み出し、自ノードのメモリにキャッシュ情報として記憶させる処理を行い(なお、他のノードで既にインスタンスが動作している場合は、業務情報DBから読み出した情報に代えて他のノードから転送されたキャッシュ情報が自ノードのメモリに記憶される)、受け付けたアクセス要求におけるアクセス対象の情報が自ノードのメモリに記憶されているキャッシュ情報に含まれている場合には、自ノードのメモリにアクセスすることで業務情報DBへのアクセスを行い、受け付けたアクセス要求におけるアクセス対象の情報がキャッシュ情報に含まれていない場合にのみストレージ18にアクセスすることで、アクセス要求を受信してからアクセス要求元へ応答を返す間での応答時間を短縮している。
また、各ノード上で動作しているインスタンスが自ノードのメモリに記憶させているキャッシュ情報は、各ノード上で動作しているインスタンスが、受け付けたアクセス要求に応じて自ノードのキャッシュ情報に対する業務情報の書き込みを互いに独立に行うことで不一致が生ずる。また、各ノード上で動作しているインスタンスが自ノードのメモリに記憶させる受付情報についても、アクセス要求を受け付けたインスタンスが、受け付けたアクセス要求に応じて業務情報DBへのアクセスを行う前にハングアップ状態となるかダウンしてしまった場合、前記アクセス要求に対する応答がアクセス要求元へ送信されないという問題が生ずる。このため、各ノード上で動作しているインスタンスは、自ノードのメモリに記憶されているキャッシュ情報や受付情報を、他のノードのメモリに記憶されている同情報と一致させる同期処理(請求項2に記載の同期処理に相当)を行う。
なお、同期処理を行うタイミング(請求項2に記載の所定のタイミング)は、何れか1つのインスタンスがキャッシュ情報に基づいて業務情報DBを更新するタイミングが挙げられるが、これ以外に、同期処理を前回行ってから一定時間が経過したタイミングや、何れか1つのインスタンスにおける自ノードのキャッシュ情報への業務情報の書込回数が所定回に達したタイミング等でも同期処理を行うようにしてもよい。また、後述するインスタンスの再起動が行われることで、何れか1つのインスタンスが新たに稼働中になった場合には、新たに稼働中となったインスタンスが動作しているノードのメモリにはキャッシュ情報及び受付情報が記憶されていないので、上記の同期処理が必ず実行される。また、キャッシュ情報の同期処理と受付情報の同期処理は必ずしも同時に行う必要はなく、両者の同期処理を異なるタイミングで行うようにしてもよい。
また、システム管理部及び起動管理部は各ノード上で各々動作しているが、このうちシステム管理部については、図2にも示すように、何れか1つのノード上で動作しているシステム管理部が稼働系となり、当該稼働系のシステム管理部が各インスタンスの稼働状態の管理を行う(詳細は後述)一方、他のノード上で動作しているシステム管理部は待機系となる。また、各ノード上で各々動作している起動管理部は、稼働系のシステム管理部からの指示に応じて、自ノードで動作しているインスタンスの強制終了や再起動等の処理を行う。
次に、各ノード上で動作しているシステム管理部によって一定時間周期で各々実行されるシステム管理処理について、図3を参照して説明する。システム管理処理では、まずステップ50において、自ノードのメモリ上の所定領域に設定されている情報を参照する等により、当該システム管理処理を行っているシステム管理部自身が稼働系か否かを判定する。判定が肯定された場合(システム管理部自身が稼働系である場合)はステップ58へ移行するが、判定が否定された場合(システム管理部自身は待機系である場合)はステップ52へ移行し、他のノード上で動作している全てのシステム管理部に対して稼働状態を問い合わせる情報を送信し、各システム管理部からの応答の有無及び応答の内容を判断することで、各システム管理部の稼働状態を取得する。
次のステップ54では、ステップ52で取得した各システム管理部の稼働状態に基づいて、システム管理部自身が稼働系に切替わる必要が有るか否か判定する。本実施形態では、各ノード上で動作するシステム管理部に対して稼働系への切り替わりの優先順位が定められており、システム管理部自身よりも前記優先順位が上位のシステム管理部の中に稼働中のシステム管理部が存在している場合は前記判定が否定され、システム管理処理を終了する。一方、システム管理部自身よりも前記優先順位が上位のシステム管理部の中に稼働中のシステム管理部が存在していない場合(例えば、前記優先順位がノード番号の昇順でシステム管理部自身がノードN+2上で動作しており、ノードN,N+1上で動作するシステム管理部が何れも稼働を停止していた等の場合)は前記判定が肯定され、ステップ56でシステム管理部自身が稼働系となるように稼働系を切り替える処理を行った後にステップ58へ移行する。
このように、待機系のシステム管理部は、他のノード上で動作するシステム管理部の稼働状態の監視のみを行い、他のノード上で動作する前記優先順位がより上位のシステム管理部が稼働を停止していることを検知した場合に、それ迄稼働系であったシステム管理部に代って稼働系へ切り替わることになる。なお、上記事項は請求項4記載の発明に対応している。
稼働系のシステム管理部では、まずステップ58において、自ノードを含む全てのノードで動作する各インスタンスの稼働状態を取得する。本実施形態では、インスタンスの稼働状態を、インスタンスが稼働中であることを意味する"起動"、インスタンスがハングアップ状態であることを意味する"ハング"、インスタンスがダウン状態であることを意味する"停止"、インスタンスの再起動を禁止している状態であることを意味する"起動不可"の4種類の状態に区分している。このうち"起動不可"はインスタンスの再起動に失敗した場合に設定される状態であり、ステップ58では、各インスタンスについて所定の情報を送信し、各インスタンスからの応答の有無及び応答の内容を判定する稼働確認処理を各インスタンスについて各々行うことで、各インスタンスの稼働状態が"起動"、"ハング"及び"停止"の何れの状態かを各々判定する。
また、稼働系のシステム管理部は、自ノードのメモリ上に、各インスタンスの稼働状態を表す状態区分をテーブル等の形式で記憶しており、次のステップ60では、ステップ58による各インスタンスの稼働状態の判定結果に基づいて、メモリ上に記憶している各インスタンスの状態区分を更新する。但し、状態区分が既に"起動不可"に設定されていたインスタンスについては状態区分の上書きは行わず、状態区分を"起動不可"のまま維持させる。なお、ステップ58,60は本発明に係る取得手段に対応している。次のステップ62では、メモリ上に記憶されている更新後の各インスタンスの状態区分を参照し、各ノード上で動作する全てのインスタンスの状態区分が"起動"(稼働中)か否か判定する。判定が肯定された場合は処理を終了する。
また、全インンスタンスの中に状態区分が"起動"でないインスタンス(稼働中でないインスタンス)が存在している場合は、ステップ62の判定が否定されてステップ64へ移行し、状態区分が"起動"のインスタンスの数を計数し、計数した状態区分が"起動"のインスタンスの数が、予め設定された生存インスタンス数以上か否か判定する。本実施形態に係るコンピュータ・システムは、業務情報DBへのアクセス要求を稼働中のインスタンスが分担して処理する構成であるので、アクセス要求を受け付けてから、受け付けたアクセス要求に応じて業務情報DBにアクセスし、アクセス要求元へ応答を返す迄の時間(アクセス要求処理時間)は、状態区分が"起動"のインスタンス(稼働中のインスタンス)の数が少なくなるに従って増大する。本実施形態では稼働中のインスタンス数の変化に対するアクセス要求処理時間の変化が予め計測され、生存インスタンス数として、アクセス要求処理時間が所定時間以下となる最小のインスタンス数(請求項5に記載の生存インスタンス数に相当)が設定されている。
状態区分が"起動"のインスタンスの数が生存インスタンス数以上である場合、ステップ64の判定が肯定されてステップ96へ移行し、全インスタンスの中に状態区分が"ハング"のインスタンスが存在しているか否か判定する。判定が否定された場合はシステム管理処理を終了する。また、全インスタンスの中に状態区分が"ハング"のインスタンスが存在している場合はステップ96の判定が肯定されてステップ98へ移行し、状態区分が"ハング"のインスタンスと同一のノード上で動作している起動制御部により、状態区分が"ハング"のインスタンスを強制終了させる。また、次のステップ100では、メモリ上に記憶しれている上記インスタンスの状態区分を"停止"に設定し、システム管理処理を終了する。
このように、本実施形態では、全インスタンスの中に状態区分が"起動"でないインスタンスが存在しているものの、状態区分が"起動"のインスタンスの数が生存インスタンス数以上である場合に、状態区分が"起動"でないインスタンスの再起動を停止させている(後述するステップ74,82を行うことなくシステム管理処理を終了している)。これにより、状態区分が"起動"でないインスタンスを再起動させることなく、アクセス要求処理時間を所定時間以下に維持できると共に、状態区分が"起動"でないインスタンスを再起動させることで、先に説明した同期処理が行われることに伴ってアクセス要求処理時間が一時的に悪化(長時間化)することも回避することができる。なお、ステップ64は本発明に係る管理手段に対応している。
一方、状態区分が"起動"のインスタンスの数が生存インスタンス数未満の場合には、ステップ64の判定が否定されてステップ66へ移行し、次のステップ68以降の処理を未実行のインスタンスが有るか否か判定する。この場合は判定が肯定されてステップ68へ移行し、全インスタンスの中の何れか1つのインスタンスを処理対象のインスタンスとして選択する。なお、処理対象のインスタンスは、例えば個々のインスタンスが動作するノードのノード番号の昇順又は降順に選択することができる。また、次のステップ70では処理対象のインスタンスの状態区分が"ハング"か否か判定する。この判定が否定された場合はステップ72へ移行し、処理対象のインスタンスの状態区分が"停止"か否か判定する。処理対象のインスタンスの状態区分が"起動"又は"起動不可"の場合には、ステップ70,72の判定が何れも否定されてステップ64に戻る。
また、処理対象のインスタンスの状態区分が"ハング"である場合には、ステップ70の判定が肯定されてステップ78へ移行する。各ノードのメモリ上には、インスタンスが各種のログ情報を格納するためのログ格納領域が設けられており、ステップ78では、処理対象のインスタンスが動作している特定ノードのメモリ上に設けられているログ格納領域(処理対象のインスタンスがログ情報を格納する格納領域)の空き容量を確認し、次のステップ80では前記ログ格納領域に空き容量の不足が生じている(空き容量が閾値以下)か否か判定する。
処理対象のインスタンスがログ情報を格納する格納領域に空き容量の不足が生じている場合、処理対象のインスタンスについては、ハングアップ状態になった原因がログ格納領域の空き容量不足であり、ログ格納領域に格納されているログ情報を別の記録媒体へ待避してログ格納領域をクリアする等のメインテナンス作業が行われない限り、処理対象のインスタンスを正常に稼働させることは困難と判断できる。このため、ステップ80の判定が肯定された場合はステップ92へ移行し、処理対象のインスタンスと同一のノード上で動作している起動制御部によって処理対象のインスタンスを強制終了させる。またステップ94では、メモリ上に記憶されている処理対象のインスタンスの状態区分を"起動不可"に設定し、ステップ64に戻る。この場合、処理対象のインスタンスの状態区分は、サービスエンジニア等によって上記のメインテナンス作業が行われ、メモリ上に記憶されている各インスタンスの状態区分がリセットされる迄の間"起動不可"のまま維持され、再起動の対象から除外される。
また、状態区分が"起動"のインスタンスの数が生存インスタンス数未満の場合、アクセス要求処理時間が定常的に所定時間よりも大となり、提供サービスの品質低下が生じていると判断できるが、処理対象のインスタンスの状態区分が"ハング"であり、かつ、処理対象のインスタンスがログ情報を格納する格納領域に空き容量の不足が生じていない場合には、処理対象のインスタンスを再起動させることができれば、同期処理が行われることに伴ってアクセス要求処理時間は一時的に悪化(長時間化)するものの、アクセス要求処理時間が定常的に悪化している状態を解消できる。
このため、ステップ80の判定が否定された場合はステップ82へ移行し、処理対象のインスタンスと同一のノード上で動作している起動制御部により、処理対象のインスタンスを一旦強制終了させた後に処理対象のインスタンスを再起動させる。またステップ84では、インスタンスの強制終了及び再起動が正常に行われた場合の所要時間以上の時間待機した後に、先のステップ58,60と同様にして各インスタンスの稼働状態の取得、メモリ上に記憶されている各インスタンスの状態区分の更新を行う。なお、このステップ84は、請求項6に記載の「取得手段によって各インスタンスの稼働状態の取得を再度行わせる」ことに対応している。次のステップ86では、メモリ上に記憶されている更新後の各インスタンスの状態区分を参照し、処理対象のインスタンスの状態区分が"ハング"から"起動"に変化したか、すなわち処理対象のインスタンスの再起動が成功したか否か判定する。
ステップ86の判定が肯定された場合はステップ64に戻る。このとき、状態区分が"起動"のインスタンスの数が生存インスタンス数以上になっていれば、アクセス要求処理時間は所定時間以下に回復している(提供サービスの品質が許容レベル迄回復している)ので、ステップ64の判定が肯定されてステップ96へ移行し、状態区分が"ハング"のインスタンスが他にも存在していれば(ステップ96の判定が肯定されれば)、当該インスタンスについては再起動が行われることなく強制終了のみ行われると共に、状態区分が"停止"に設定される(ステップ98,100)ことで、必要以上にインスタンスの再起動が行われることなく処理が終了される。
また、処理対象のインスタンスの再起動を行ったものの、処理対象のインスタンスの状態区分が"起動"へ変化しなかった、すなわち処理対象のインスタンスの再起動が失敗した場合、その原因としては、処理対象のインスタンスが動作するノード(サーバ・コンピュータ)のハードウェアの故障又は不調や、プログラム(DBアクセスアプリケーション)のバグ等が考えられ、処理対象のインスタンスの再起動を再度行ったとしても成功する確率は低く、ハードウェアの修理や交換、プログラムの更新等のメインテナンス作業が必要と判断できる。このため、ステップ86の判定が否定された場合はステップ88へ移行し、処理対象のインスタンスと同一のノード上で動作している起動制御部によって処理対象のインスタンスを強制終了させる。またステップ90では、メモリ上に記憶されている処理対象のインスタンスの状態区分を"起動不可"に設定し、ステップ64に戻る。この場合、処理対象のインスタンスの状態区分は、サービスエンジニア等によって上記のメインテナンス作業が行われ、メモリ上に記憶されている各インスタンスの状態区分がリセットされる迄の間"起動不可"のまま維持され、再起動の対象から除外される。なお、このステップ90は請求項7に記載の管理手段に対応している。
なお、或るインスタンスがハングアップ状態となっていることで、別のインスタンスもハングアップ状態になることがあり、或るインスタンスの再起動を行うと、当該インスタンスの再起動が失敗したとしても、別のインスタンスのハングアップ状態が解消され、状態区分が"ハング"から"起動"へ変化することがある。このため、処理対象のインスタンスの再起動が失敗してステップ86の判定が否定された場合にも、状態区分が"起動"のインスタンスの数が生存インスタンス数以上になることでステップ64の判定が肯定されることがある。この場合もアクセス要求処理時間は所定時間以下に回復している(提供サービスの品質が許容レベル迄回復している)ので、状態区分が"ハング"のインスタンスが他にも存在していれば(ステップ96の判定が肯定されれば)、当該インスタンスについては再起動が行われることなく強制終了のみ行われると共に、状態区分が"停止"に設定される(ステップ98,100)ことで、必要以上にインスタンスの再起動が行われることなく処理が終了される。
また、処理対象のインスタンスの状態区分が"停止"である場合は、ステップ72の判定が肯定されてステップ74へ移行し、処理対象のインスタンスと同一のノード上で動作している起動制御部により、処理対象のインスタンスを再起動させる。また、処理対象のインスタンスの状態区分が"停止"であった場合には、処理対象のインスタンスの再起動に失敗することはないので、次のステップ76では処理対象のインスタンスの状態区分を"起動"に設定し、ステップ64へ戻る。
また、各インスタンスを順に処理対象としながら上述したステップ64以降の処理を繰り返す間に、状態区分が"起動"のインスタンスの数が生存インスタンス数以上になった場合には、先にも説明したようにステップ64の判定が肯定されるが、全てのインスタンスを処理対象としてステップ64以降の処理を各々行っても状態区分が"起動"のインスタンスの数が生存インスタンス数未満のままであった場合には、ステップ66の判定が否定されて処理を終了する。この場合、アクセス要求処理時間は所定時間よりも大の状態のままであるので、サービスエンジニアを呼び出す等の処理を行うことで、メインテナンス作業を直ちに行わせることが望ましい。
上述したシステム管理処理によって実現される各条件での動作について、図4を参照して更に説明する。なお、図4に示す例では、何れもノードN〜N+2の3個のノード上でインスタンスN〜N+2が各々動作しており、生存インスタンス数=2とされている。図4(A)はインスタンスN〜N+2が全て稼働中(状態区分が"起動")の状態から、単一のインスタンス(ここではインスタンスN+1)がハングアップ状態へ変化し、このインスタンスN+1のハングアップ状態への変化を検知した(状態区分が"ハング"へ変化した)場合を示している。
この場合、状態区分が"起動"のインスタンスの数は3から2へ減少するものの、依然として生存インスタンス数以上であるので、インスタンスN+1に対しては強制終了のみ行われて再起動は行われず、インスタンスN+1の状態区分は"停止"に設定される。これにより、インスタンスN+1の再起動によってアクセス要求処理時間の一時的な悪化を生じさせることなく、アクセス要求処理時間を所定時間以下に維持できる。また、インスタンスN+1の状態区分は"停止"である("起動不可"ではない)ので、更に他のインスタンス(例えばインスタンスN)がハングアップ状態へ変化するか又はダウンしたことが検知された場合は、アクセス要求処理時間の定常的な悪化を回避するためにインスタンスN+1の再起動が行われることになる。
また、図4(B)はインスタンスN〜N+2が全て稼働中(状態区分が"起動")の状態から、複数のインスタンス(ここではインスタンスN+1,N+2)が各々ハングアップ状態へ変化し、このハングアップ状態への変化を検知した場合を示している。この場合、状態区分が"起動"のインスタンスの数は3から1へ減少して生存インスタンス数未満となり、アクセス要求処理時間が所定時間よりも大となるので、状態区分が"ハング"となったインスタンスN+1,N+2の何れか一方に対して再起動が行われる。
上記の再起動の結果、再起動が成功し(再起動を行った一方のインスタンスの状態区分が"起動"へ変化し)、他方のインスタンスも同時に稼働中(状態区分が"起動")へ変化した場合は、両インスタンスは共に稼働中で維持され、アクセス要求処理時間が最小の理想的な状態となるが、一方のインスタンスの再起動には成功したものの、他方のインスタンスの状態区分が"ハング"のまま変化しなかった場合は、当該他方のインスタンスが強制終了されて状態区分が"停止"に設定される。この場合、更に他方のインスタンスの再起動を行うことでアクセス要求処理時間の一時的な悪化を生じさせることなく、アクセス要求処理時間が所定時間以下に回復している状態を維持することができる。
また、一方のインスタンスの再起動を行ったものの当該一方のインスタンスの状態区分が"起動"へ変化しなかった場合(再起動が失敗した場合)、上記一方のインスタンスの状態区分は"起動不可"に設定されるが、一方のインスタンスの再起動に伴って他方のインスタンスの状態区分が"ハング"から"起動"へ変化した場合には、他方のインスタンスが稼働中の状態(アクセス要求処理時間が所定時間以下に回復している状態)で維持される。また、一方のインスタンスの再起動が失敗し、当該再起動を行っても他方のインスタンスの状態区分が"ハング"から変化しなかった場合には、アクセス要求処理時間を所定時間以下に回復させることを目的として他方のインスタンスの再起動が行われることになる。
また、図4(C)はインスタンスN+2の状態区分が"停止"かつインスタンスN、N+1が稼働中(状態区分が"起動")の状態から、単一のインスタンス(ここではインスタンスN+1)がハングアップ状態へ変化し、このハングアップ状態への変化を検知した場合を示している。この場合は、状態区分が"起動"のインスタンスの数は2から1へ減少して生存インスタンス数未満となり、アクセス要求処理時間が所定時間よりも大となるので、状態区分が"ハング"となったインスタンスN+1又は状態区分が"停止"のインスタンスN+2の再起動が行われるが、例えばインスタンスN+1の再起動が行われ、当該再起動が成功した場合はインスタンスN+2の再起動は行われず、インスタンスN+2の再起動によってアクセス要求処理時間の一時的な悪化を生じさせることなく、アクセス要求処理時間が所定時間以下に回復している状態を維持することができる。また、例えばインスタンスN+1の再起動が行われ、当該再起動が失敗した場合には、インスタンスN+1の状態区分は"起動不可"に設定され、アクセス要求処理時間を所定時間以下に回復させることを目的としてインスタンスN+2の再起動が行われることになる。
なお、図4(C)の例において、例えばインスタンスN+2の再起動が行われた場合は、当該再起動に成功するので、インスタンスN+1が強制終了されて状態区分が"停止"に設定される。この場合、インスタンスN+1の再起動を行うことでアクセス要求処理時間の一時的な悪化を生じさせることなく、アクセス要求処理時間が所定時間以下に回復している状態を維持することができる。
なお、上記では複数台のコンピュータ上で各々動作するインスタンスの一例として、外部からのアクセス要求に従ってDBにアクセスし、アクセス要求元へ応答を送信する処理を行うインスタンスを説明したが、本発明に係るコンピュータ・システムは、各インスタンスが上記処理を行う構成に限られるものではなく、本発明は、各インスタンスが任意の処理を行うコンピュータ・システムに適用可能である。
また、上記では本発明に係るシステム管理プログラムが複数台のサーバ・コンピュータ12,14,16の記憶部に予め記憶(インストール)されている態様を説明したが、本発明に係るシステム管理プログラムは、CD−ROMやDVD−ROM等の記録媒体に記録されている形態で提供することも可能である。