(57)【特許請求の範囲】
【請求項１】
サービス提供装置に設けられ、サービスを提供するサービス提供部と、
前記サービス提供装置とは異なるサービス利用装置に設けられ、前記サービス提供部が提供するサービスを利用するサービス利用部と、
前記サービス提供装置および前記サービス利用装置にそれぞれ設けられ、前記サービス利用部が前記サービス提供部と通信するための複数のコネクションを予め確立するコネクション確立部と、
前記サービス提供装置に設けられ、前記サービス提供装置として動作するコンピュータの負荷値を検出する負荷検出部と、
前記サービス利用装置に設けられ、前記負荷検出部が検出した負荷値を前記サービス提供装置から取得する負荷取得部と、
前記サービス利用装置に設けられ、前記負荷取得部が取得した負荷値が予め定められた接続数減少負荷値より大きくなった場合に、前記コネクション確立部によって確立されているコネクションを切断することによって、前記コネクション確立部によって確立されているコネクションのうち、前記サービス利用部が使用することができるコネクションの数を減少させるコネクション制御部と
を備えるコンピュータシステム。
【請求項２】
前記負荷検出部が検出する負荷値は、前記コンピュータが有するリソースの使用量、および、前記サービス提供部が外部に応答するのに要する時間長さの少なくとも一方を含む
請求項１に記載のコンピュータシステム。
【請求項３】
前記リソースの使用量は、前記コンピュータが有するＣＰＵの使用率を含む
請求項２に記載のコンピュータシステム。
【請求項４】
前記サービス利用装置に設けられ、より大きい前記負荷値に対応づけて、より少ない前記使用することができるコネクションの数を格納するコネクション数格納部
をさらに備え、
前記コネクション制御部は、前記使用することができるコネクションの数を、前記負荷取得部が取得した負荷値に対応づけて前記コネクション数格納部が格納しているコネクションの数に制御する
請求項１から３のいずれか一項に記載のコンピュータシステム。
【請求項５】
前記コネクション制御部は、前記使用することができるコネクション数を減少させた後に、前記負荷取得部が取得した負荷値が予め定められた接続数増加負荷値以下になった場合に、前記使用することができるコネクション数を増加させる
請求項１から４のいずれか一項に記載のコンピュータシステム。
【請求項６】
前記サービス利用装置は複数設けられ、
複数の前記サービス利用装置にそれぞれ設けられた複数の前記コネクション確立部は、前記複数のサービス利用装置にそれぞれ設けられた複数の前記サービス利用部のそれぞれと前記サービス提供部との間で、複数のコネクションをそれぞれ確立し、
前記複数のサービス利用装置にそれぞれ設けられた複数の前記コネクション制御部のそれぞれは、前記負荷取得部が取得した負荷値が前記接続数減少負荷値より大きくなった場合に、前記複数のコネクション確立部によってそれぞれ確立されているコネクションを切断することによって、前記複数のサービス利用部のそれぞれが使用することができるコネクションの数をそれぞれ減少させる
請求項１から５のいずれか一項に記載のコンピュータシステム。
【請求項７】
前記サービス提供装置は、データを格納して外部にデータを提供するデータベースサーバであり、
前記サービス利用部は、前記データベースサーバが提供するデータを利用する
請求項１から６のいずれか一項に記載のコンピュータシステム。
【請求項８】
前記サービス利用装置は、前記データベースサーバが提供するデータを利用して外部にサービスを提供するアプリケーションサーバである
請求項７に記載のコンピュータシステム。
【請求項９】
複数の前記アプリケーションサーバのそれぞれに設けられた前記コネクション制御部は、前記負荷取得部が取得した負荷値が前記接続数減少負荷値より大きくなった場合に、前記コネクション確立部によってそれぞれ確立されているコネクションを切断することによって、前記複数のアプリケーションサーバのそれぞれに設けられた前記サービス利用部のそれぞれが使用することができるコネクションの数をそれぞれ減少させる
請求項８に記載のコンピュータシステム。
【請求項１０】
サービス提供装置に設けられたサービスを提供するサービス提供部が提供するサービスを利用するサービス利用部を備えるコンピュータシステムを制御する制御方法であって、
前記サービス提供装置と異なるサービス利用装置に設けられた前記サービス利用部が前記サービス提供部と通信するための複数のコネクションを、前記サービス提供装置および前記サービス利用装置にそれぞれ設けられたコネクション確立部が、予め確立するコネクション確立段階と、
前記サービス提供装置に設けられた負荷検出部が、前記サービス提供装置として動作するコンピュータの負荷値を検出する負荷検出段階と、
前記サービス利用装置に設けられた負荷取得部が、前記負荷検出段階において検出された負荷値を前記サービス提供装置から取得する負荷取得段階と、
前記サービス利用装置に設けられたコネクション制御部が、前記負荷取得段階で取得された負荷値が予め定められた接続数減少負荷値より大きくなった場合に、前記コネクション確立段階において確立されたコネクションを切断することによって、前記コネクション確立段階において確立されたコネクションのうち、前記サービス利用部が使用することができるコネクションの数を減少させるコネクション制御段階と
を備える制御方法。
【請求項１１】
サービスを提供するサービス提供部と、
複数のサービス利用装置にそれぞれ設けられ、前記サービス提供部が提供するサービスを利用する複数のサービス利用部と、
前記複数のサービス利用部のそれぞれと前記サービス提供部との間で、前記複数のサービス利用部のそれぞれが前記サービス提供部とそれぞれ通信するための複数のコネクションをそれぞれ予め確立するコネクション確立部と、
前記サービス提供部として動作するコンピュータの負荷値を検出する負荷検出部と、
前記複数のサービス利用部のそれぞれが使用することができるコネクションのうち、前記複数のサービス利用部のそれぞれが現在使用しているコネクションの数を検出するコネクション使用数検出部と、
前記負荷検出部が検出した負荷値が予め定められた接続数減少負荷値より大きくなった場合に、前記コネクション確立部によって確立されているコネクションのうち、前記複数のサービス利用部のそれぞれが使用することができるコネクションの数をそれぞれ減少させるコネクション制御部と
を備え、
前記負荷検出部が検出する負荷値は、前記コンピュータが有するリソースの使用量、および、前記サービス提供部が外部に応答するのに要する時間長さの少なくとも一方を含み、前記リソースの使用量は、前記コンピュータが有するＣＰＵの使用率を含み、
前記コネクション制御部は、前記負荷検出部が検出した負荷値が前記接続数減少負荷値より大きくなった場合に、前記コネクション使用数検出部が検出したコネクションの数及び前記複数のサービス利用部のそれぞれが使用することができるコネクションの数に基づいて、前記複数のサービス利用部がそれぞれ使用することができるコネクションの数に対する前記複数のサービス利用部がそれぞれ使用しているコネクションの数の比が前記複数のサービス利用部の間で等しくなる方向に、前記複数のサービス利用部の少なくとも１つが使用することができるコネクションの数を減少させ、
前記サービス提供部、前記負荷検出部、前記コネクション使用数検出部および前記コネクション制御部は、サービス提供装置に設けられ、
前記コネクション確立部は、前記複数のサービス利用装置および前記サービス提供装置のそれぞれに設けられる
コンピュータシステム。
【請求項１２】
前記コネクション制御部は、前記使用することができるコネクション数を減少させた後に、前記負荷検出部が検出した負荷値が予め定められた接続数増加負荷値より小さくなった場合に、前記コネクション使用数検出部が検出したコネクションの数及び前記複数のサービス利用部のそれぞれが使用することができるコネクションの数に基づいて、前記複数のサービス利用部がそれぞれ使用することができるコネクションの数に対する前記複数のサービス利用部がそれぞれ使用しているコネクションの数の比が、前記複数のサービス利用部の間で等しくなる方向に、前記複数のサービス利用部の少なくとも１つが使用することができるコネクションの数を増加させる
請求項１１に記載のコンピュータシステム。
【請求項１３】
サービスを提供するサービス提供部と、
複数のサービス利用装置にそれぞれ設けられ、前記サービス提供部が提供するサービスを利用する複数のサービス利用部と、
前記複数のサービス利用部のそれぞれと前記サービス提供部との間で、前記複数のサービス利用部のそれぞれが前記サービス提供部とそれぞれ通信するための複数のコネクションをそれぞれ予め確立するコネクション確立部と、
前記サービス提供部として動作するコンピュータの負荷値を検出する負荷検出部と、
前記複数のサービス利用部のそれぞれが使用することができるコネクションのうち、前記複数のサービス利用部のそれぞれが現在使用しているコネクションの数を検出するコネクション使用数検出部と、
前記負荷検出部が検出した負荷値が予め定められた接続数減少負荷値より大きくなった場合に、前記コネクション確立部によって確立されているコネクションのうち、前記複数のサービス利用部のそれぞれが使用することができるコネクションの数をそれぞれ減少させるコネクション制御部と
を備え、
前記負荷検出部が検出する負荷値は、前記コンピュータが有するリソースの使用量、および、前記サービス提供部が外部に応答するのに要する時間長さの少なくとも一方を含み、前記リソースの使用量は、前記コンピュータが有するＣＰＵの使用率を含み、
前記コネクション制御部は、前記使用することができるコネクション数を減少させた後に、前記負荷検出部が検出した負荷値が予め定められた接続数増加負荷値より小さくなった場合に、前記コネクション使用数検出部が検出したコネクションの数及び前記複数のサービス利用部のそれぞれが使用することができるコネクションの数に基づいて、前記複数のサービス利用部がそれぞれ使用することができるコネクションの数に対する前記複数のサービス利用部がそれぞれ使用しているコネクションの数の比が、前記複数のサービス利用部の間で等しくなる方向に、前記複数のサービス利用部の少なくとも１つが使用することができるコネクションの数を増加させ、
前記サービス提供部、前記負荷検出部、前記コネクション使用数検出部および前記コネクション制御部は、サービス提供装置に設けられ、
前記コネクション確立部は、前記複数のサービス利用装置および前記サービス提供装置のそれぞれに設けられる
コンピュータシステム。
【請求項１４】
前記サービス提供装置は、データを格納して外部にデータを提供するデータベースサーバであり、
前記複数のサービス利用部は、前記データベースサーバが提供するデータを利用する
請求項１１から１３のいずれか一項に記載のコンピュータシステム。
【請求項１５】
前記複数のサービス利用装置は、前記データベースサーバが提供するデータを利用して外部にサービスを提供するアプリケーションサーバである
請求項１４に記載のコンピュータシステム。
【請求項１６】
前記コネクション制御部は、前記負荷検出部が検出した負荷値が前記接続数減少負荷値より大きくなった場合に、前記コネクション確立部によって確立されているコネクションを切断することによって、前記複数のサービス利用部のそれぞれが使用することができるコネクションの数を、それぞれ減少させる
請求項１１からに１５のいずれか一項に記載のコンピュータシステム。
【請求項１７】
前記コネクション制御部は、前記負荷検出部が検出した負荷値が前記接続数減少負荷値より大きくなった場合に、前記使用することができるコネクションの数を減少させる命令を前記複数のサービス利用装置に送信することによって、前記複数のサービス利用部のそれぞれが使用することができるコネクションの数をそれぞれ減少させる
請求項１１から１５のいずれか一項に記載のコンピュータシステム。
【請求項１８】
サービス提供装置が提供するサービスを利用する、前記サービス提供装置とは異なるサービス利用装置であって、
前記サービス提供装置が提供するサービスを利用するサービス利用部と、
前記サービス利用装置が前記サービス提供装置と通信するための複数のコネクションを予め確立するコネクション確立部と、
前記サービス提供装置の負荷値を取得する負荷取得部と、
前記負荷取得部が取得した負荷値が予め定められた接続数減少負荷値より大きくなった場合に、前記コネクション確立部によって確立されているコネクションを切断することによって、前記コネクション確立部によって確立されているコネクションのうち、前記サービス利用部が使用することができるコネクションの数を減少させるコネクション制御部と
を備え、
前記サービス提供装置は、
前記サービス利用装置との間で前記複数のコネクションを予め確立するコネクション確立部と、
前記サービスを提供するサービス提供部と、
前記サービス提供装置として動作するコンピュータの負荷値を検出する負荷検出部と
を有し、
前記サービス利用部は、前記サービス提供部が提供するサービスを利用し、
前記コネクション確立部は、前記サービス利用部が前記サービス提供部と通信するための前記複数のコネクションを予め確立し、
前記負荷取得部は、前記負荷検出部が検出した負荷値を前記サービス提供装置から取得する
サービス利用装置。
【請求項１９】
コンピュータを、請求項１８に記載のサービス利用装置として機能させるためのプログラム。
【請求項２０】
サービス提供装置が提供するサービスを利用する、前記サービス提供装置とは異なるサービス利用装置を制御する制御方法であって、
前記サービス利用装置に設けられ前記サービスを利用するサービス利用部が前記サービス提供装置と通信するための複数のコネクションを予め確立するコネクション確立段階と、
前記サービス利用装置に設けられた負荷取得部が、前記サービス提供装置の負荷値を取得する負荷取得段階と、
前記負荷取得段階で取得された負荷値が予め定められた接続数減少負荷値より大きくなった場合に、前記コネクション確立段階において確立されたコネクションを切断することによって、前記コネクション確立段階において確立されたコネクションのうち、前記サービス利用部が使用することができるコネクションの数を減少させるコネクション制御段階と
を備え、
前記サービス提供装置は、
前記サービス利用装置との間で前記複数のコネクションを予め確立するコネクション確立部と、
前記サービスを提供するサービス提供部と、
前記サービス提供装置として動作するコンピュータの負荷値を検出する負荷検出部と
を有し、
前記コネクション確立段階は、前記サービス利用部が前記サービス提供部と通信するための前記複数のコネクションを予め確立し、
前記負荷取得段階は、前記負荷検出部が検出した負荷値を前記負荷取得部が前記サービス提供装置から取得する
制御方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、コンピュータシステム、サービス提供装置、サービス利用装置、制御方法、及びプログラムに関する。特に本発明は、サービスを提供及び利用するコンピュータシステム、サービスを提供するサービス提供装置、提供されるサービスを利用するサービス利用装置、コンピュータシステム、サービス提供装置、及びサービス利用装置を制御する制御方法、並びに当該コンピュータシステム、サービス提供装置、及びサービス利用装置用のプログラムに関する。
【背景技術】
【０００２】
クライアント端末に搭載されたアプリケーションとデータベースとを接続するコネクションを蓄積し、蓄積したコネクションの中から正常に動作するコネクションを取得してアプリケーションとデータベースとを接続するコネクション蓄積部を備えたデータ共有システムが知られている（例えば、特許文献１参照。）。このシステムでは、アプリケーションサーバは、コネクションプールに蓄積されたコネクションを利用して、データベースサーバにアクセスする。このとき、アプリケーションサーバは、正常に動作しないコネクションを破棄して新たにコネクションを生成する。
【特許文献１】特開２００３−２１６４７７号公報
【発明の開示】
【発明が解決しようとする課題】
【０００３】
特許文献１に記載のデータ共有システムによると、正常に動作しないコネクションを破棄して新たにコネクションを生成する。しかしながら、データベースサーバの負荷が高まった時に、蓄積しているコネクションを通じてアプリケーションサーバからさらに処理要求が送られてきた場合には、データベースサーバの負荷がその処理能力を超えてしまう虞がある。また、データベースサーバがアプリケーションサーバとコネクションを確立する処理はデータベースサーバにとって処理コストが高い処理であるので、データベースの負荷が高まっている状態でアプリケーションサーバがコネクションを新たに生成しようとすると、データベースサーバの負荷がさらに高まってしまう。
【課題を解決するための手段】
【０００４】
上記課題を解決するために、本発明の第１の形態によると、コンピュータシステムであって、サービスを提供するサービス提供部と、サービス提供部が提供するサービスを利用するサービス利用部と、サービス利用部がサービス提供部と通信するための複数のコネクションを予め確立するコネクション確立部と、サービス提供部として動作するコンピュータの負荷値を検出する負荷検出部と、負荷検出部が検出した負荷値が増加した場合に、コネクション確立部によって確立されているコネクションのうち、サービス利用部が使用することができるコネクションの数を減少させるコネクション制御部とを備える。
【０００５】
コネクション制御部は、負荷検出部が検出した負荷値が予め定められた接続数減少負荷値より大きくなった場合に、使用することができるコネクションの数を減少させてよい。また、負荷検出部が検出する負荷値は、コンピュータが有するリソースの使用量又はサービス提供部が外部に応答するのに要する時間長さの少なくとも一方を含んでよい。リソースの使用量は、コンピュータが有するＣＰＵの使用率を含んでよい。
【０００６】
コネクション制御部は、負荷検出部が検出した負荷値が予め定められた接続数減少負荷値より大きくなった場合に、コネクション確立部によって確立されているコネクションを切断することによって、使用することができるコネクションの数を減少させてよい。
【０００７】
より大きい負荷値に対応づけて、より少ない使用することができるコネクションの数を格納するコネクション数格納部をさらに備え、コネクション制御部は、使用することができるコネクションの数を、負荷検出部が検出した負荷値に対応づけてコネクション数格納部が格納しているコネクションの数に制御してよい。
【０００８】
コネクション制御部は、使用することができるコネクション数を減少させた後に、負荷検出部が検出した負荷値が予め定められた接続数増加負荷値以下になった場合に、使用することができるコネクション数を増加させてよい。
【０００９】
サービス提供部は、データを格納して外部にデータを提供するデータベースサーバに設けられ、サービス利用部は、データベースサーバが提供するデータを利用してよい。サービス利用部は、データベースサーバが提供するデータを利用して外部にサービスを提供する、データベースサーバと異なるアプリケーションサーバに設けられてよい。
【００１０】
アプリケーションサーバは複数設けられ、負荷取得部及びコネクション制御部は複数のアプリケーションサーバのそれぞれに設けられ、複数のアプリケーションサーバのそれぞれに設けられたコネクション制御部は、負荷取得部が取得した負荷値が接続数減少負荷値より大きくなった場合に、複数のアプリケーションサーバのそれぞれに設けられたサービス利用部のそれぞれが使用することができるコネクションの数をそれぞれ減少させてよい。
【００１１】
本発明の第２の形態によると、サービスを提供するサービス提供部が提供するサービスを利用するサービス利用部を備えるコンピュータシステムを制御する制御方法であって、サービス利用部がサービス提供部と通信するための複数のコネクションを予め確立するコネクション確立段階と、サービス提供部として動作するコンピュータの負荷値を検出する負荷検出段階と、負荷検出段階において検出された負荷値が増加した場合に、コネクション確立段階において確立されたコネクションのうち、サービス利用部が使用することができるコネクションの数を減少させるコネクション制御段階とを備える。
【００１２】
本発明の第３の形態によると、コンピュータシステム用のプログラムであって、コンピュータシステムを、サービスを提供するサービス提供部、サービス提供部が提供するサービスを利用するサービス利用部、サービス利用部がサービス提供部と通信するための複数のコネクションを予め確立するコネクション確立部、サービス提供部として動作するコンピュータの負荷値を検出する負荷検出部、負荷検出部が検出した負荷値が増加した場合に、コネクション確立部によって確立されているコネクションのうち、サービス利用部が使用することができるコネクションの数を減少させるコネクション制御部として機能させる。
【００１３】
本発明の第４の形態によると、サービスを提供するサービス提供装置であって、サービス提供装置が提供するサービスを利用するサービス利用装置に予め設定された、サービス利用装置が利用可能な複数のコネクションを、サービス利用装置との間で予め確立するコネクション確立部と、サービス提供装置の負荷値を検出する負荷検出部と、負荷検出部が検出した負荷値が増加した場合に、コネクション確立部によって確立されているコネクションのうち、サービス利用装置が使用することができるコネクションの数を減少させるコネクション制御部とを備える。
【００１４】
本発明の第５の形態によると、サービスを提供するサービス提供装置を制御する制御方法であって、サービス提供装置が提供するサービスを利用するサービス利用装置に予め設定された、サービス利用装置が利用可能な複数のコネクションを、サービス利用装置との間で予め確立するコネクション確立段階と、サービス提供装置の負荷値を検出する負荷検出段階と、負荷検出段階において検出された負荷値が増加した場合に、コネクション確立段階において確立されたコネクションのうち、サービス利用装置が使用することができるコネクションの数を減少させるコネクション制御段階とを備える。
【００１５】
本発明の第６の形態によると、サービスを提供するサービス提供装置用のプログラムであって、サービス提供装置を、サービス提供装置が提供するサービスを利用するサービス利用装置に予め設定された、サービス利用装置が利用可能な複数のコネクションを、サービス利用装置との間で予め確立するコネクション確立部、サービス提供装置の負荷値を検出する負荷検出部、負荷検出部が検出した負荷値が増加した場合に、コネクション確立部によって確立されているコネクションのうち、サービス利用装置が使用することができるコネクションの数を減少させるコネクション制御部として機能させる。
【００１６】
本発明の第７の形態によると、サービス提供装置が提供するサービスを利用するサービス利用装置であって、サービス利用装置がサービス提供装置と通信するための複数のコネクションを予め確立するコネクション確立部と、サービス提供装置の負荷値を取得する負荷取得部と、負荷取得部が取得した負荷値が増加した場合に、コネクション確立部によって確立されているコネクションのうち、サービス利用装置が使用することができるコネクションの数を減少させるコネクション制御部とを備える。
【００１７】
本発明の第８の形態によると、サービス提供装置が提供するサービスを利用するサービス利用装置を制御する制御方法であって、サービス利用装置がサービス提供装置と通信するための複数のコネクションを予め確立するコネクション確立段階と、サービス提供装置の負荷値を取得する負荷取得段階と、負荷取得段階において取得された負荷値が増加した場合に、コネクション確立段階において確立されたコネクションのうち、サービス利用装置が使用することができるコネクションの数を減少させるコネクション制御段階とを備える。
【００１８】
本発明の第９の形態によると、サービス提供装置が提供するサービスを利用するサービス利用装置用のプログラムであって、サービス利用装置を、サービス利用装置がサービス提供装置と通信するための複数のコネクションを予め確立するコネクション確立部、サービス提供装置の負荷値を取得する負荷取得部、負荷取得部が取得した負荷値が増加した場合に、コネクション確立部によって確立されているコネクションのうち、サービス利用装置が使用することができるコネクションの数を減少させるコネクション制御部として機能させる。
【００１９】
なお、上記の発明の概要は、本発明の必要な特徴の全てを列挙したものではなく、これらの特徴群のサブコンビネーションもまた、発明となりうる。
【発明の効果】
【００２０】
以上の説明から明らかなように、この発明によれば、サービス提供装置の負荷値に応じてサービス利用装置とサービス提供装置との間のコネクション数を適切に制御することができる。
【発明を実施するための最良の形態】
【００２１】
以下、発明の実施の形態を通じて本発明を説明するが、以下の実施形態は特許請求の範囲にかかる発明を限定するものではなく、また実施形態の中で説明されている特徴の組み合わせの全てが発明の解決手段に必須であるとは限らない。
【００２２】
図１は、一実施形態に係るコンピュータシステム１００の利用環境の一例を示す。コンピュータシステム１００は、複数のアプリケーションサーバ１２０ａ、ｂ、ｃ、・・・（以下、アプリケーションサーバ１２０と総称する。）、データベースサーバ１１０、複数のＷＥＢサーバ１３０ａ、ｂ、ｃ・・・（以下、ＷＥＢサーバ１３０と総称する。）、ロードバランサ１４０、及び複数のクライアント端末１６０ａ、ｂ、ｃ、・・・（以下、クライアント端末１６０と総称する。）、及び通信回線１５０を備える。
【００２３】
なお、通信回線１５０は、インターネット等のコンピュータネットワーク、通信事業者のコアネットワーク、及び種々のローカルネットワークを含む。クライアント端末１６０は、携帯電話機、ＰＤＡ等の携帯情報端末、及びパーソナルコンピュータを含む。
【００２４】
クライアント端末１６０は、通信回線１５０を通じてＷＥＢサーバ１３０のうちのいずれかにＨＴＴＰリクエスト等のリクエストを送信する。具体的には、クライアント端末１６０はロードバランサ１４０にリクエストを送信する。ロードバランサ１４０は、クライアント端末１６０からリクエストを受信すると、所定の負荷分散アルゴリズムに従って、リクエストを送信すべきＷＥＢサーバ１３０を複数のＷＥＢサーバ１３０の中から選択して、選択したＷＥＢサーバ１３０にリクエストを送信する。ＷＥＢサーバ１３０は受信したリクエストに応じた処理を実行し、処理結果をロードバランサ１４０を通じてクライアント端末１６０に送信する。
【００２５】
ＷＥＢサーバ１３０は、受信したリクエストの内容に基づいて、アプリケーションサーバ１２０の少なくとも１つに処理を依頼する。アプリケーションサーバ１２０は、依頼された内容の処理を進めて、処理結果をＷＥＢサーバ１３０に送信する。このとき、アプリケーションサーバ１２０は、依頼された処理を実行する場合に、必要に応じてデータベースサーバ１１０にアクセスする。具体的には、アプリケーションサーバ１２０は、データベースサーバ１１０からデータを読み出して、読み出したデータを加工してＷＥＢサーバ１３０に送信したり、データベースサーバ１１０にデータを追加したり、データベースサーバ１１０が格納しているデータを更新したり、データベースサーバ１１０が格納しているデータを削除したりする。このように、データベースサーバ１１０は、データを格納して、格納しているデータを外部にデータを提供する。そして、アプリケーションサーバ１２０は、データベースサーバ１１０が提供するデータを利用して外部にサービスを提供する。
【００２６】
なお、アプリケーションサーバ１２０のそれぞれは、起動時にデータベースサーバ１１０との間に予め定められた１以上のコネクションを確立しておく。そして、アプリケーションサーバ１２０は、データベースサーバ１１０にアクセスする場合には、予め確立されているコネクションを利用してデータベースサーバ１１０にアクセスする。アプリケーションサーバ１２０は、データベースサーバ１１０へのアクセスを終了した後も、コネクションを保持しており、後にデータベースサーバ１１０に接続する時に、保持しているコネクションを使用する。なお、アプリケーションサーバ１２０は、複数のコネクションを予め確立して保持するとともに、保持している複数のコネクションを使用してデータベースサーバ１１０に同時にアクセスすることができる。このように、アプリケーションサーバ１２０がコネクションを予め確立して、確立したコネクションをセッション終了後も保持しておくことによって、データベースサーバ１１０にとって処理コストが高いコネクション生成処理が頻繁に生じてしまうことを未然に防ぐことができる場合がある。
【００２７】
なお、アプリケーションサーバ１２０は、データベースサーバ１１０が有する中央演算処理装置（ＣＰＵ）の使用率（以下、ＣＰＵ使用率という。）をデータベースサーバ１１０から取得する。そして、アプリケーションサーバ１２０は、ＣＰＵ使用率が予め定められた値より大きくなると、アプリケーションサーバ１２０が使用することができるコネクションの数（以後、使用可能コネクション数という場合がある。）を減少させる。このとき、アプリケーションサーバ１２０は、データベースサーバ１１０との間のコネクションを保持したまま、ＣＰＵ使用率に応じた所定数のコネクションを使用することを禁止してもよいし、所定数のコネクションを実際に切断してもよい。
【００２８】
そして、アプリケーションサーバ１２０は、ＣＰＵ使用率が予め定められた値より小さくなると、アプリケーションサーバ１２０の使用可能コネクション数を増加させる。このとき、アプリケーションサーバ１２０は、データベースサーバ１１０との間のコネクションを保持したまま使用を禁止していた所定数のコネクションのうちの少なくとも一部を使用することを許可してもよいし、コネクションを切断した場合にはデータベースサーバ１１０との間で所定数のコネクションを新たに確立してもよい。
【００２９】
このように、アプリケーションサーバ１２０は、データベースサーバ１１０の負荷値に応じて、データベースサーバ１１０にアプリケーションサーバ１２０が同時にアクセスすることができるコネクションの数を制御するので、データベースサーバ１１０が過負荷に陥ってしまう確率を低減することができ、データベースサーバ１１０がサービスを継続的に提供することができる場合がある。
【００３０】
なお、本実施形態では、説明が煩雑になることを防ぐことを目的として、コンピュータシステム１００が一のデータベースサーバ１１０を備える構成について説明したが、コンピュータシステム１００は複数のデータベースサーバ１１０を備えてよい。また、本実施形態のコンピュータシステム１００は、上記のようにデータベースシステムとして機能することができる。
【００３１】
図２は、データベースサーバ１１０及びアプリケーションサーバ１２０のブロック構成の一例を示す。アプリケーションサーバ１２０ａは、コネクション確立部２００ａ、負荷取得部２１０ａ、コネクション制御部２２０ａ、コネクション数格納部２３０ａ、コネクション情報格納部２４０ａ、サービス利用部２５０ａ、及び通信制御部２９０ａを有する。データベースサーバ１１０は、コネクション確立部２００Ａ、負荷検出部２１５Ａ、コネクション制御部２２０Ａ、コネクション数格納部２３０Ａ、コネクション情報格納部２４０Ａ、及び通信制御部２９０Ａを有する。なお、データベースサーバ１１０はこの発明におけるサービス提供装置の一例であり、アプリケーションサーバ１２０はこの発明におけるサービス利用装置の一例であってよい。
【００３２】
なお、アプリケーションサーバ１２０ａ以外のアプリケーションサーバ１２０ｂ、ｃ、・・・も、アプリケーションサーバ１２０ａが有する構成要素と同じ構成要素を有する。以後の説明では、アプリケーションサーバ１２０が有する構成要素がいずれのアプリケーションサーバ１２０の構成要素であるかを区別する場合には、各構成要素を有するアプリケーションサーバ１２０と同じ添え字（ａ、ｂ、ｃ）を各構成要素の末尾に付して区別する。例えば、コネクション確立部２００ａ、コネクション確立部２００ｂ、及びコネクション確立部２００ｃは、それぞれアプリケーションサーバ１２０ａ、アプリケーションサーバ１２０ｂ、及びアプリケーションサーバ１２０ｃの構成要素であることを示す。
【００３３】
また、以後の説明において、添え字が付されていない構成要素の機能及び動作は、同じ符号が付されたいずれの構成要素の機能及び動作を示す。例えば、コネクション確立部２００で説明された機能及び動作は、コネクション確立部２００ａ、コネクション確立部２００ｂ、コネクション確立部２００ｃ、・・・の機能及び動作を示す。また、データベースサーバ１１０及びアプリケーションサーバ１２０の構成要素のうち、同じ符号を付している同名の構成要素は同様の機能及び動作を示すので、添え字が付されていない構成要素の機能及び動作は、データベースサーバ１１０及びアプリケーションサーバ１２０が有する構成要素の機能及び動作を示す。したがって、例えばコネクション制御部２２０の機能及び動作は、コネクション制御部２２０Ａ、コネクション制御部２２０ａ、コネクション制御部２２０ｂ、コネクション制御部２２０ｃの機能及び動作を示す。
【００３４】
以下に、各構成要素の機能及び動作を説明する。サービス提供部２５５Ａは、サービスを提供する。ここでいうサービスとは、本実施形態でサービスの一例として説明する、データベース機能によるデータ提供サービスだけでなく、Ｗｅｂサービス、電子メールサービス、ファイルサービス、及び印刷サービス等、種々のサービスを含む。本実施形態では、サービス提供部２５５Ａは、ハードディスク、半導体メモリ等の記録媒体に記憶されたデータを外部に提供するデータベースとして機能する。なお、当該記録媒体は不揮発性であってもよいし、揮発性であってもよい。
【００３５】
サービス利用部２５０は、サービス提供部２５５Ａが提供するサービスを利用する。具体的には、サービス利用部２５０は、データベースサーバ１１０が提供するデータを利用して種々の処理を行う。コネクション確立部２００は、サービス利用部２５０がサービス提供部２５５Ａと通信するための複数のコネクションを予め確立する。具体的には、コネクション確立部２００Ａは、アプリケーションサーバ１２０に予め設定された、アプリケーションサーバ１２０が利用可能な複数のコネクションを、アプリケーションサーバ１２０との間で予め確立する。例えば、コネクション確立部２００Ａは、コネクション確立部２００ａからのコネクション確立要求に応じて、コネクションを確立する。このようにして、コネクション確立部２００ａは、アプリケーションサーバ１２０がデータベースサーバ１１０と通信するための複数のコネクションを予め確立する。コネクション情報格納部２４０は、コネクション確立部２００によって確立されたコネクションを使用するために使用されるコネクション情報を格納する。
【００３６】
負荷検出部２１５Ａは、サービス提供部２５５Ａとして動作するコンピュータの負荷値を検出する。具体的には、負荷検出部２１５Ａは、データベースサーバ１１０の負荷値を検出する。負荷検出部２１５Ａが検出する負荷値は、コンピュータが有するリソースの使用量又はサービス提供部２５５Ａが外部に応答するのに要する時間長さの少なくとも一方を含む。なお、リソースの使用量は、コンピュータが有するＣＰＵの使用率を含む。また、負荷取得部２１０は、負荷検出部２１５Ａが検出した負荷値をデータベースサーバ１１０から取得する。このように、負荷取得部２１０は、データベースサーバ１１０の負荷値を取得する。
【００３７】
コネクション制御部２２０は、負荷検出部２１５Ａが検出した負荷値が増加した場合に、コネクション確立部２００によって確立されているコネクションのうち、サービス利用部２５０が使用することができるコネクションの数を減少させる。具体的には、コネクション制御部２２０は、負荷取得部２１０が取得した負荷値が接続数減少負荷値より大きくなった場合に、使用することができるコネクションの数を減少させる。より具体的には、コネクション制御部２２０は、負荷検出部２１５Ａが検出した負荷値が予め定められた接続数減少負荷値より大きくなった場合に、使用することができるコネクションの数を減少させる。なお、コネクション制御部２２０は、負荷検出部２１５Ａが検出した負荷値が予め定められた接続数減少負荷値より大きくなった場合に、コネクション確立部２００によって確立されているコネクションを切断することによって、使用することができるコネクションの数を減少させてよい。このように、コネクション制御部２２０は、負荷検出部２１５Ａが検出した負荷値が増加した場合に、コネクション確立部２００によって確立されているコネクションのうち、データベースサーバ１１０が使用することができるコネクションの数を減少させる。
【００３８】
より具体的には、コネクション数格納部２３０は、より大きい負荷値に対応づけて、より少ない使用することができるコネクションの数を格納する。そして、コネクション制御部２２０は、使用することができるコネクションの数を、負荷検出部２１５Ａが検出した負荷値に対応づけてコネクション数格納部２３０が格納しているコネクションの数に制御する。なお、コネクション制御部２２０は、使用することができるコネクション数を減少させた後に、負荷検出部２１５Ａが検出した負荷値が予め定められた接続数増加負荷値以下になった場合に、使用することができるコネクション数を増加させる。なお、接続数増加負荷値は、接続数減少負荷値以下の値であってよい。
【００３９】
なお、サービス利用部２５０は複数設けられてよい。具体的には、複数のアプリケーションサーバ１２０のそれぞれが、サービス利用部２５０を有してよい。そして、コネクション確立部２００は、複数のサービス利用部２５０のそれぞれとサービス提供部２５５Ａとの間で、複数のコネクションをそれぞれ確立する。そして、コネクション制御部２２０は、負荷検出部２１５Ａが検出した負荷値が接続数減少負荷値より大きくなった場合に、複数のサービス利用部２５０のそれぞれが使用することができるコネクションの数をそれぞれ減少させる。
【００４０】
なお、コネクション確立部２００は、複数のサービス利用部２５０のそれぞれに対して設けられる。具体的には、複数のアプリケーションサーバ１２０のそれぞれがコネクション確立部２００を有する。そして、複数のサービス利用部２５０のそれぞれに対して設けられたコネクション確立部２００が、複数のサービス利用部２５０のそれぞれとサービス提供部２５５Ａとの間で、複数のコネクションをそれぞれ確立する。また、コネクション制御部２２０は、複数のサービス利用部２５０のそれぞれに対して設けられる。具体的には、複数のアプリケーションサーバ１２０のそれぞれがコネクション制御部２２０を有する。そして、複数のサービス利用部２５０のそれぞれに対して設けられたコネクション制御部２２０が、負荷検出部２１５Ａが検出した負荷値が接続数減少負荷値より大きくなった場合に、複数のサービス利用部２５０のそれぞれが使用することができるコネクションの数をそれぞれ減少させる。
【００４１】
コネクション使用数検出部２８０Ａは、複数のサービス利用部２５０のそれぞれが使用することができるコネクションのうち、複数のサービス利用部２５０のそれぞれが現在使用しているコネクションの数を検出する。そして、コネクション制御部２２０Ａは、負荷検出部２１５Ａが検出した負荷値が接続数減少負荷値より大きくなった場合に、コネクション使用数検出部２８０Ａが検出したコネクションの数及び複数のサービス利用部２５０のそれぞれが使用することができるコネクションの数に基づいて、サービス利用部２５０が使用することができるコネクションの数に対するサービス利用部２５０が使用しているコネクションの数の比が、複数のサービス利用部２５０の間で等しくなる方向に、複数のサービス利用部２５０の少なくとも１つが使用することができるコネクションの数を減少させる。
【００４２】
また、コネクション制御部２２０Ａは、使用することができるコネクション数を減少させた後に、負荷検出部２１５Ａが検出した負荷値が予め定められた接続数増加負荷値より小さくなった場合に、コネクション使用数検出部２８０Ａが検出したコネクションの数及び複数のサービス利用部２５０のそれぞれが使用することができるコネクションの数に基づいて、サービス利用部２５０が使用することができるコネクションの数に対するサービス利用部２５０が使用しているコネクションの数の比が、複数のサービス利用部２５０の間で等しくなる方向に、複数のサービス利用部２５０の少なくとも１つが使用することができるコネクションの数を増加させてよい。
【００４３】
なお、複数のアプリケーションサーバ１２０のそれぞれに設けられたコネクション制御部２２０は、負荷取得部２１０が取得した負荷値が接続数減少負荷値より大きくなった場合に、複数のアプリケーションサーバ１２０のそれぞれに設けられたサービス利用部２５０のそれぞれが使用することができるコネクションの数をそれぞれ減少させる。なお、コネクション制御部２２０Ａは、負荷検出部２１５Ａが検出した負荷値が予め定められた接続数減少負荷値より大きくなった場合に、使用することができるコネクションの数を減少させる命令を、アプリケーションサーバ１２０に送信してもよい。また、コネクション制御部２２０は、負荷検出部２１５Ａが検出した負荷値が接続数減少負荷値より大きい予め定められた切断負荷値より大きくなった場合に、コネクション確立部２００によって確立されているコネクションを切断することによって、使用することができるコネクションの数を減少させてよい。
【００４４】
図３は、ＷＥＢサーバ１３０、アプリケーションサーバ１２０、及びデータベースサーバ１１０の動作シーケンスの一例を示す。アプリケーションサーバ１２０が起動すると（Ｓ３０２）、負荷取得部２１０ａは、負荷検出部２１５Ａにデータベースサーバ１１０の負荷値を要求する（Ｓ３０４）。負荷検出部２１５Ａは、データベースサーバ１１０の負荷値を検出して、負荷取得部２１０ａに送信する（Ｓ３０６）。
【００４５】
コネクション確立部２００ａは、負荷取得部２１０ａが取得した負荷値に応じて、コネクション数格納部２３０ａが格納している情報に基づいて、使用可能コネクション数を設定する（Ｓ３０８）。そして、コネクション確立部２００ａ及びコネクション確立部２００Ａはコネクションを確立する（Ｓ３１２ａ、Ｓ３１２ｂ）。このとき、コネクション確立部２００ａ及びコネクション確立部２００Ａは、アプリケーションサーバ１２０ａに許容された予め定められた１以上の数（例えば、２０個）のコネクションを生成する。なお、ここでコネクションを確立する数は、アプリケーションサーバ１２０毎に、設定値として予め定められてよい。
【００４６】
そして、サービス利用部２５０ａは、ＷＥＢサーバ１３０から処理要求を受信する（Ｓ３２２）。サービス利用部２５０ａは、受信した処理要求等に基づいて、プログラムによって定められた所定のロジックに従って処理を進める。このとき、サービス利用部２５０ａは、データベースサーバ１１０に実行させるクエリを生成する（Ｓ３２４）。そして、サービス利用部２５０ａは、既に確立しているコネクションの中から使用されていないコネクションを選択して（Ｓ３２６）、選択したコネクションを使用してクエリをデータベースサーバ１１０に送信する（Ｓ３２８）。
【００４７】
サービス提供部２５５Ａは、受信したクエリを実行して（Ｓ３３０）、クエリを実行した実行結果をアプリケーションサーバ１２０に送信する（Ｓ３２２）。このとき、通信制御部２９０Ａは、アプリケーションサーバ１２０との間で確立されているコネクションを使用して実行結果を送信する。そして、サービス利用部２５０ａは、受信した実行結果を利用して処理結果を生成して（Ｓ３３４）、生成した処理結果をＷＥＢサーバ１３０に送信する（Ｓ３３６）。また、負荷検出部２１５Ａが切断負荷値を超える負荷値を検出すると（Ｓ３４２）、コネクション制御部２２０Ａは負荷値に応じた数のコネクションを切断する（Ｓ３４４）。
【００４８】
なお、サービス利用部２５０ａは、サービス提供部２５５Ａとの間で一連のセッションが終了した場合でも、コネクションを切断せずに保持しておく。そして、サービス利用部２５０ａは、後にサービス提供部２５５Ａと通信する場合に、Ｓ３２６のように、保持しているコネクションの中から使用することができるコネクションを選択して使用する。
【００４９】
なお、本シーケンスでは、負荷値に応じて使用可能コネクション数を制御する制御方法の一例として、Ｓ３０４からＳ３１２までの処理のように、アプリケーションサーバ１２０ａがデータベースサーバ１１０に負荷値を問い合わせて、問い合わせに応じて得られた負荷値に応じて使用可能コネクション数を制御する方法と、データベースサーバ１１０が自身の負荷値を検出して、検出した負荷値に応じて既に確立されているコネクションを切断する制御方法について説明した。
【００５０】
その他にも、負荷検出部２１５Ａは定期的にデータベースサーバ１１０の負荷値を検出して、検出した負荷値を通信制御部２９０Ａを通じて定期的にアプリケーションサーバ１２０ａに送信してもよい。そして、負荷取得部２１０ａは、通信制御部２９０ａを通じて負荷値が通知されたことを検出すると、通知された負荷値に応じた使用可能コネクション数を設定してよい。なお、通信制御部２９０Ａは、例えばブロードキャストの形で複数のアプリケーションサーバ１２０に略同時に負荷値を送信してよいし、アプリケーションサーバ１２０に順次負荷値を送信してもよい。
【００５１】
その他にも、負荷取得部２１０ａは、応答を要求する信号をデータベースサーバ１１０に送信して、当該信号を送信してからデータベースサーバ１１０から応答を受信するまでの時間長さに基づいてデータベースサーバ１１０の負荷値を特定することによって、データベースサーバ１１０の負荷値を取得してもよい。例えば負荷取得部２１０ａは、当該時間長さが長いほどより大きい負荷値を特定してよい。なお、負荷取得部２１０ａは、データベースサーバ１１０の負荷値を任意のタイミングで取得してよい。例えば、負荷取得部２１０ａは、Ｓ３２２からＳ３３６のような、データベースサーバ１１０にアクセスしている期間に含まれるタイミングを含む任意のタイミングで、データベースサーバ１１０の負荷値を取得してよい。そして、コネクション制御部２２０ａは、任意のタイミングで使用可能コネクション数を制御してよい。
【００５２】
図４は、コネクション数格納部２３０が格納しているデータの一例をテーブル形式で示す。コネクション数格納部２３０は、ＣＰＵ使用率、メモリ使用率、データアクセス率、ネットワーク帯域使用率、及びコネクション使用可能率を対応づけて格納している。なお、ＣＰＵ使用率、メモリ使用率、データアクセス率、ネットワーク帯域使用率は、この発明におけるコンピュータの負荷値の一例である。
【００５３】
ＣＰＵ使用率は、ＣＰＵの負荷値を示し、ＣＰＵの実行時間の、総時間に対する比率であってよい。なお、ＣＰＵの実行時間は、ＣＰＵが実行する全命令を実行した時間であってよいし、データベース機能を提供する命令のみをＣＰＵが実行した実行時間であってもよい。このように、ＣＰＵの実行時間は、データベース機能以外の機能を提供する命令をＣＰＵが実行した実行時間を含まなくてもよい。
【００５４】
メモリ使用率は、例えばＣＰＵから直接アクセスすることができる主記憶装置（メインメモリ）の使用量であってよい。メモリ使用率は、主記憶装置の総容量に対する使用されている容量の比率であってよい。なお、主記憶装置は揮発性であってよいし、不揮発性であってもよい。
【００５５】
データアクセス率は、補助記憶装置（又は二次記憶装置）へのアクセス量であってよい。具体的には、データアクセス率は、データアクセス率であってよい。より具体的には、データアクセス率は、補助記憶装置から読み出された、或いは補助記憶装置に書き込まれた、単位時間当たりのデータ量を示す転送速度を指標とするものであってよい。例えば、データアクセス率は、最大転送速度に対する転送速度の比率であってよい。補助記憶装置は、例えばハードディスク等の磁気ディスク、半導体メモリ等であってよい。
【００５６】
なお、データアクセス率は、特定のディスクボリュームに対するアクセス量であってよい。ここでいう特定のディスクボリュームとは、データベースとして格納されるデータ自身が格納されるファイルが記録されているディスクボリュームであってよいし、データベースとして動作するために使用されるファイル、例えばトランザクション情報を記録するファイル等が記録されているディスクボリュームであってよい。なお、ディスクボリュームは、パーティション及びスライスを含み、物理的ボリューム及び論理的ボリュームを含む。
【００５７】
ネットワーク使用率は、ネットワークを通じて外部から受信した受信データ量又は単位時間当たりに送信した送信データ量、或いは受信データ量及び送信データ量の合計値を示す送受信データ量を指標値とするものであってよい。例えば、ネットワーク使用率とは、ネットワークデバイスが送受信することができる最大のデータ量に対する、受信データ量、送信データ量、又は送受信データ量の比率であってよい。
【００５８】
コネクション使用可能率は、アプリケーションサーバ１２０が生成することができるコネクション数の最大値に対する、アプリケーションサーバ１２０の現在の使用可能コネクション数の比率であってよい。アプリケーションサーバ１２０が生成することができるコネクション数の最大値は、アプリケーションサーバ１２０毎に予め設定されていてよい。
【００５９】
なお、アプリケーションサーバ１２０の現在の使用可能コネクション数とは、必ずしも現在生成しているコネクションの数でなくてよい。例えば、アプリケーションサーバ１２０は、予め定められた数のコネクションを保持したまま、当該予め定められた数より小さい数のコネクションだけ同時に使用するよう制御してよい。例えば、アプリケーションサーバ１２０は、２０個のコネクションを保持したまま、８個のコネクションだけ同時に使用することができるよう、コネクションの利用を制限してよい。この場合、コネクション使用可能率は４０％となる。なお、アプリケーションサーバ１２０は、使用可能コネクション数を、コネクションを切断することによって制御することもできる。このようにコネクションを切断することによって使用可能コネクション数を制御する場合、生成することができるコネクション数の最大値に対する、現在生成しているコネクションの数の比率が、コネクション使用可能率となる。
【００６０】
なお、この発明におけるリソース使用量は、本図に関連して説明したＣＰＵ使用率、メモリ使用率、データアクセス率、及びネットワーク帯域使用率以外にも、ハードディスク等の記録媒体にスワップしているメモリ量又は記録媒体から読み出したメモリ量を示すスワップ量等、様々なリソース使用量を含む。このように、コネクション数格納部２３０はリソース使用量に対応づけてコネクション使用可能率を格納している。なお、生成することができるコネクション数の最大値にコネクション使用可能率を乗じた値が、使用可能コネクション数であるので、コネクション制御部２２０は、負荷検出部２１５Ａが検出したリソース使用量に対応づけてコネクション数格納部２３０が格納しているコネクション使用可能率に、アプリケーションサーバ１２０が生成することができるコネクション数の最大値を乗じた値に、アプリケーションサーバ１２０の使用可能コネクション数を制御することによって、リソース使用量に応じて使用可能コネクション数を動的に制御する。
【００６１】
図５は、ＣＰＵ使用率の時間発展及び使用可能コネクション数の時間発展５１０の一例を示す。データベースサーバ１１０のＣＰＵ使用率５００は時刻ｔ１までの間は３０％以下であり、したがってコネクション使用可能率は１００％である。したがって、アプリケーションサーバ１２０が２０個のコネクションを確立することが許容されている場合には、コネクション制御部２２０はコネクション使用可能数を２０個にする。
【００６２】
時刻ｔ１において、負荷検出部２１５Ａが検出したＣＰＵ使用率が第１閾値３０％を超えた場合には、データベースサーバ１１０は通信制御部２９０Ａを通じてＣＰＵ使用率をアプリケーションサーバ１２０に送信する。負荷取得部２１０は、通信制御部２９０を通じてデータベースサーバ１１０のＣＰＵ使用率を取得して、コネクション制御部２２０に供給する。時刻ｔ２まではＣＰＵ使用率が３０％より大きく５０％以下であることから、コネクション制御部２２０はコネクション数格納部２３０を参照して、コネクション使用可能率を４０％にすべきことを判断する。そこでコネクション制御部２２０は、コネクション使用可能数を１２個減少させて、８個にする。
【００６３】
そして、時刻ｔ２において負荷検出部２１５Ａが検出したＣＰＵ使用率が第１閾値より大きい第２閾値５０％を超えた場合には、データベースサーバ１１０は通信制御部２９０Ａを通じてＣＰＵ使用率をアプリケーションサーバ１２０に送信する。負荷取得部２１０がデータベースサーバ１１０からのＣＰＵ使用率を取得すると、コネクション制御部２２０は、上記制御と同様にコネクション数格納部２３０が格納しているデータを参照して、コネクション使用可能数をさらに６個減少させて２個にする。
【００６４】
その後、ＣＰＵ使用率が第２閾値より大きく第３閾値８０％以下で推移して、時刻ｔ３においてＣＰＵ使用率が第２閾値以下になったことを検出すると、データベースサーバ１１０は通信制御部２９０Ａを通じてＣＰＵ使用率をアプリケーションサーバ１２０に送信する。負荷取得部２１０がＣＰＵ使用率を取得すると、コネクション制御部２２０は、上記制御と同様にコネクション数格納部２３０が格納しているデータを参照して、負荷取得部２１０が取得したＣＰＵ使用率に応じたコネクション使用可能数を算出する。具体的には、コネクション制御部２２０は、コネクション使用可能数を６個増加させて８個にする。時刻ｔ４において、負荷検出部２１５Ａが検出したＣＰＵ使用率が第１閾値以下になった場合には、データベースサーバ１１０はＣＰＵ使用率をアプリケーションサーバ１２０に送信する。そして、コネクション制御部２２０は、上記制御と同様にコネクション数格納部２３０が格納しているデータを参照して、負荷取得部２１０が取得したＣＰＵ使用率に応じたコネクション使用可能数として２０個を算出して、使用可能コネクション数を２０個に設定する。
【００６５】
なお、本図の例では、説明が複雑になることを防ぐことを目的として、負荷値の一例であるＣＰＵ使用率に応じた使用可能コネクション数の時間発展の一例を示したが、コネクション制御部２２０は、メモリ使用率、データアクセス率、及びネットワーク帯域使用率等、ＣＰＵ使用率以外の負荷値に応じて使用可能コネクション数を制御してもよいことは言うまでもない。例えば、コネクション制御部２２０は、各リソース使用量に対応してコネクション数格納部２３０が格納しているコネクション使用可能率を、リソース使用量毎に予め定められた重みで重み付け平均した値を、コネクション使用可能率としてもよい。
【００６６】
なお、上記の例で説明したように、データベースサーバ１１０は、コネクション数格納部２３０が格納している閾値を超えた負荷値を負荷検出部２１５Ａが検出したことを条件として、データベースサーバ１１０の負荷値をアプリケーションサーバ１２０に送信してよい。なお、上記で説明したように、第１閾値、第２閾値、及び第３閾値は、この発明における接続数減少負荷値の一例である。また、第１閾値、第２閾値、及び第３閾値は、この発明における接続数増加負荷値としても機能する。また、第１閾値及び第２閾値がこの発明における接続数減少負荷値であり、第３閾値がこの発明における切断負荷値であってよい。
【００６７】
図６は、コネクション制御部２２０の制御による使用可能コネクション数の増減量の一例を示す。本図の制御方法は、他のアプリケーションサーバ１２０との間で、使用可能コネクション数（又はコネクション使用可能率）の増減量を調整する制御方法の一例である。この場合、データベースサーバ１１０が有するコネクション制御部２２０Ａが、複数のアプリケーションサーバ１２０の使用可能コネクション数（又はコネクション使用可能率）を制御する。
【００６８】
図６に示すように、アプリケーションサーバ１２０ａ、ｂ、及びｃにおいて、使用可能コネクション数がそれぞれ８個、８個、及び４個であり、現在使用しているコネクション数がそれぞれ４個、５個、及び２個であるとする。ここで、現在使用しているコネクション数とは、現在において同時に使用されているコネクション数であってよいし、現在から予め定められた時間幅だけ前の時点から現在までの間において同時に使用されたコネクションの最大数であってよい。なお、コネクション使用数検出部２８０Ａは、アプリケーションサーバ１２０との通信に使用されたコネクションを特定することによって、現在使用しているコネクションの数を算出することができる。
【００６９】
なお、図６には、使用可能コネクション数及び現在使用しているコネクション数が図６に図示した値である場合において、コネクション制御部２２０Ａがコネクション数を全体として３個増加させる場合の、アプリケーションサーバ１２０のそれぞれの増加量の一例が示されている。コネクション数を増加させる場合には、コネクション制御部２２０Ａは、アプリケーションサーバ１２０毎に、使用可能コネクションの数に対する現在使用しているコネクションの数の比（以下、コネクション使用比率とする。）を算出する。そして、コネクション制御部２２０Ａは、複数のアプリケーションサーバ１２０の間でコネクション使用比率が等しくなる方向に、使用可能コネクション数を増加させる。図６の例では、コネクション制御部２２０Ａは、アプリケーションサーバ１２０ａ及びｂの使用可能コネクション数をそれぞれ１個及び２個増加させ、アプリケーションサーバ１２０ｃの使用可能コネクション数を変更しない。
【００７０】
一方、使用可能コネクション数を全体として３個減少させる場合には、使用可能コネクション数を増加させる場合と同様に、複数のアプリケーションサーバ１２０の間でコネクション使用比率が等しくなる方向に、使用可能コネクション数を減少させる。図６の例では、アプリケーションサーバ１２０ａ及びｃの使用可能コネクション数をそれぞれ２個及び１個減少させ、アプリケーションサーバ１２０ｂの使用可能コネクション数を変更しない。このように、コネクション制御部２２０Ａは、アプリケーションサーバ１２０の使用可能コネクション数の増減量を制御して、コネクション使用比率の差を複数のアプリケーションサーバ１２０の間で小さくする。
【００７１】
このように、コネクション制御部２２０Ａは、複数のアプリケーションサーバ１２０の間でコネクション使用比率が等しくなるよう、複数のアプリケーションサーバ１２０のそれぞれの使用可能コネクション数を調整する。このような制御方法によると、アプリケーションサーバ１２０のコネクション使用比率が１００％になる確率を低減することができ、ＷＥＢサーバ１３０の処理に遅延が生じたりタイムアウトが生じたりする確率を低減することができる場合がある。
【００７２】
なお、上記の例のようなコネクション使用比率に基づいて使用可能コネクション数を調整する方法の他にも、コネクション制御部２２０Ａは、使用可能コクション数と現在使用しているコネクションの数との間の差がより小さいアプリケーションサーバ１２０の使用可能コクション数を、より多く増加させてもよい。
【００７３】
また、コネクション制御部２２０Ａが使用可能コネクション数を減少させる場合には、コネクション使用比率がより大きいアプリケーションサーバ１２０、又は使用可能コクション数と使用しているコネクションの数との間の差がより小さいアプリケーションサーバ１２０の使用可能コネクション数を、より優先して減少させてもよい。このような制御方法によると、アプリケーションサーバ１２０は、例えばコネクション使用比率が大きいほどコネクション数を増加されにくくなる。このため、複数のアプリケーションサーバ１２０の間でコネクション使用比率のバランスをとることができたり、データベースサーバ１１０の負荷値を効果的に減少させることができる場合がある。
【００７４】
図７は、コネクション制御部２２０が記憶しているデータの一例を示す。コネクション制御部２２０は、使用可能コネクション数を減少又は増加させた時刻と、減少又は増加させた使用可能コネクション数とを対応づけてコネクション制御履歴情報として記憶する。そして、コネクション制御部２２０は、記憶しているコネクション制御履歴情報に基づいて、データベースサーバ１１０の負荷値を効果的に制御することができるよう、コネクション数格納部２３０が格納しているコネクション使用率を動的に更新する。
【００７５】
具体的には、図７に示すコネクション制御履歴情報は、第１時刻（１０時３０分１５秒）に使用可能コネクション数を１２個減少させ、その後の第２時刻（１０時３０分５０秒）に使用可能コネクション数を１２個増加させたことを示している。したがって、コネクション制御部２２０は、使用可能コネクション数を１２個減少させることによってデータベースサーバ１１０の負荷値が低減されて、使用可能コネクション数を回復することができる負荷値（例えば、ＣＰＵ使用率が３０％以下）までデータベースサーバ１１０の負荷値が低下するのに３５秒かかったことを特定することができる。このように、コネクション制御部２２０は、コネクション制御履歴情報に基づいて、データベースサーバ１１０の負荷値の制御速度の実績値を得ることができる。
【００７６】
そこで、コネクション制御部２２０は、コネクション制御履歴が示す負荷値の制御速度に基づいて、データベースサーバ１１０の負荷値をより速く低減する必要があるか否かを判断する。コネクション制御部２２０は、負荷値をより速く低減する必要がある旨を判断した場合には、コネクション数格納部２３０により小さいコネクション使用可能率を格納させる。例えば、コネクション制御部２２０は、３０％より大きく５０％より小さいＣＰＵ使用率に対して、コネクション使用可能率を４０％から３０％に低下させる。
【００７７】
このように、コネクション制御部２２０は、例えば使用可能コネクション数を減少させてから使用可能コネクション数を増加させるまでの時間が長いほど、より小さいコネクション使用率をコネクション数格納部２３０に格納させる。また、コネクション制御部２２０は、使用可能コネクション数を増加させてから使用可能コネクション数を減少させるまでの時間が短いほど、より小さいコネクション使用率をコネクション数格納部２３０に格納させる。
【００７８】
このように、コネクション制御部２２０は、負荷値の制御履歴に応じて、コネクション使用可能率を動的に調整する。これにより、使用可能コネクション数が必要以上に減らされてしまったり、使用可能コネクション数の減少量が負荷値の増加量に対して小さすぎたりしてしまうことを未然に防ぐことができる場合がある。また、アプリケーションサーバ１２０の数が増えると、アプリケーションサーバ１２０一台あたりの使用可能コネクション数の増減量が小さくてよくなる場合がある。上記のように制御履歴に応じてコネクション使用可能率を動的に調整することによって、コンピュータシステム１００にアプリケーションサーバ１２０を追加しても、自動的に使用可能コネクション数が適切な値に調整される場合がある。
【００７９】
以上説明したように、アプリケーションサーバ１２０のそれぞれに設けられたコネクション制御部２２０が、アプリケーションサーバ１２０のそれぞれの使用可能コネクション数をそれぞれ制御するので、特定のアプリケーションサーバ１２０が保守等によりサービスを停止している場合であっても、データベースサーバ１１０はアプリケーションサーバ１２０の生死について関知することなく動作することができる場合がある。そして、アプリケーションサーバ１２０は、データベースサーバ１１０の負荷値に応じて使用可能コネクション数を自立的に調整することができる場合がある。また、アプリケーションサーバ１２０を新たに追加した場合であっても、アプリケーションサーバ１２０が追加されたことをデータベースサーバ１１０に通知することなく、データベースサーバ１１０の負荷値に応じて使用可能コネクション数が適切に調整される場合がある。
【００８０】
なお、以上の説明においては、アプリケーションサーバ１２０がデータベースサーバ１１０に接続するコネクションを用いてこの発明の一実施形態を説明したが、この発明におけるコネクションは、上記コネクションの他に、多様な場面で確立される多様な種類のコネクションを含む。例えば、この発明におけるコネクションは、上記実施形態においてＷＥＢサーバ１３０がアプリケーションサーバ１２０に接続するために確立するコネクションであってよい。例えば、この発明のコネクションは、ＷＥＢサーバ１３０上のプロセスとアプリケーションサーバ１２０上のプロセスとの間のコネクションであってよい。なお、ここでいうプロセスとは、いくつかのオペレーティングシステム（ＯＳ）でタスク等と呼ばれる処理単位であってよい。また、この発明におけるコネクションは、異なるプロセスの間のコネクションであってもよいし、同一のプロセス又は異なるプロセスにおけるスレッド間のコネクションであってもよい。
【００８１】
また、この発明におけるコネクションは、アプリケーション層のコネクションであってよい。また、この発明におけるコネクションは、ＴＣＰコネクションそのものであってよいし、ＴＣＰコネクションを含むより上位層のコネクションであってもよい。また、この発明におけるコネクションは、ＴＣＰプロトコル以外にも、種々のプロトコルで行われるコネクションを含む。
【００８２】
また、この発明におけるコネクションは、異なるコンピュータ上のプロセス間のコネクションであってよいし、同一のコンピュータ上のプロセス間のコネクションであってもよい。また、この発明におけるコネクションは、同一の仮想機械（バーチャルマシン）上のプロセス間のコネクションであってよいし、異なる仮想機械上のプロセス間のコネクションであってよい。例えば、この発明におけるコネクションは、第１仮想機械上で動作するプロセスと、当該第１仮想機械と異なる第２仮想機械上で動作するプロセスとの間のコネクションであってよい。仮想機械は、Ｊａｖａ（登録商標）ＶＭ、仮想マシンモニタ等と呼ばれる種々の仮想オペレーティングシステム環境を含む。また、この発明におけるコネクションは、同じ装置上で動作する仮想機械上におけるプロセス間のコネクションであってよいし、異なる装置上でそれぞれ動作する仮想機械上のプロセス間のコネクションを含む。
【００８３】
図８は、データベースサーバ１１０及びアプリケーションサーバ１２０をコンピュータ等の電子情報処理装置でそれぞれ構成した場合のハードウェア構成の一例を示す。データベースサーバ１１０及びアプリケーションサーバ１２０は、ＣＰＵ周辺部と、入出力部と、レガシー入出力部とを備える。ＣＰＵ周辺部は、ホスト・コントローラ１５８２により相互に接続されるＣＰＵ１５０５、ＲＡＭ１５２０、グラフィック・コントローラ１５７５、及び表示装置１５８０を有する。入出力部は、入出力コントローラ１５８４によりホスト・コントローラ１５８２に接続される通信インターフェイス１５３０、ハードディスクドライブ１５４０、及びＣＤ−ＲＯＭドライブ１５６０を有する。レガシー入出力部は、入出力コントローラ１５８４に接続されるＲＯＭ１５１０、フレキシブルディスク・ドライブ１５５０、及び入出力チップ１５７０を有する。
【００８４】
ホスト・コントローラ１５８２は、ＲＡＭ１５２０と、高い転送レートでＲＡＭ１５２０をアクセスするＣＰＵ１５０５、及びグラフィック・コントローラ１５７５とを接続する。ＣＰＵ１５０５は、ＲＯＭ１５１０、及びＲＡＭ１５２０に格納されたプログラムに基づいて動作して、各部の制御をする。グラフィック・コントローラ１５７５は、ＣＰＵ１５０５等がＲＡＭ１５２０内に設けたフレーム・バッファ上に生成する画像データを取得して、表示装置１５８０上に表示させる。これに代えて、グラフィック・コントローラ１５７５は、ＣＰＵ１５０５等が生成する画像データを格納するフレーム・バッファを、内部に含んでもよい。
【００８５】
入出力コントローラ１５８４は、ホスト・コントローラ１５８２と、比較的高速な入出力装置であるハードディスクドライブ１５４０、通信インターフェイス１５３０、ＣＤ−ＲＯＭドライブ１５６０を接続する。ハードディスクドライブ１５４０は、ＣＰＵ１５０５が使用するプログラム、及びデータを格納する。通信インターフェイス１５３０は、ネットワーク通信装置１５９８に接続してプログラムまたはデータを送受信する。ＣＤ−ＲＯＭドライブ１５６０は、ＣＤ−ＲＯＭ１５９５からプログラムまたはデータを読み取り、ＲＡＭ１５２０を介してハードディスクドライブ１５４０、及び通信インターフェイス１５３０に提供する。
【００８６】
入出力コントローラ１５８４には、ＲＯＭ１５１０と、フレキシブルディスク・ドライブ１５５０、及び入出力チップ１５７０の比較的低速な入出力装置とが接続される。ＲＯＭ１５１０は、データベースサーバ１１０及びアプリケーションサーバ１２０が起動時に実行するブート・プログラム、あるいはデータベースサーバ１１０及びアプリケーションサーバ１２０のハードウェアに依存するプログラム等を格納する。フレキシブルディスク・ドライブ１５５０は、フレキシブルディスク１５９０からプログラムまたはデータを読み取り、ＲＡＭ１５２０を介してハードディスクドライブ１５４０、及び通信インターフェイス１５３０に提供する。入出力チップ１５７０は、フレキシブルディスク・ドライブ１５５０、あるいはパラレル・ポート、シリアル・ポート、キーボード・ポート、マウス・ポート等を介して各種の入出力装置を接続する。
【００８７】
ＣＰＵ１５０５が実行するプログラムは、フレキシブルディスク１５９０、ＣＤ−ＲＯＭ１５９５、またはＩＣカード等の記録媒体に格納されて利用者によって提供される。記録媒体に格納されたプログラムは圧縮されていても非圧縮であってもよい。プログラムは、記録媒体からハードディスクドライブ１５４０にインストールされ、ＲＡＭ１５２０に読み出されてＣＰＵ１５０５により実行される。ＣＰＵ１５０５により実行されるプログラムは、データベースサーバ１１０を、図１から図７に関連して説明したコネクション確立部２００Ａ、負荷検出部２１５Ａ、コネクション制御部２２０Ａ、コネクション数格納部２３０Ａ、コネクション情報格納部２４０Ａ、及び通信制御部２９０Ａとして機能させ、アプリケーションサーバ１２０を、図１から図７に関連して説明したコネクション確立部２００、負荷取得部２１０、コネクション制御部２２０、コネクション数格納部２３０、コネクション情報格納部２４０、サービス利用部２５０、及び通信制御部２９０として機能させる。
【００８８】
以上に示したプログラムは、外部の記憶媒体に格納されてもよい。記憶媒体としては、フレキシブルディスク１５９０、ＣＤ−ＲＯＭ１５９５の他に、ＤＶＤまたはＰＤ等の光学記録媒体、ＭＤ等の光磁気記録媒体、テープ媒体、ＩＣカード等の半導体メモリ等を用いることができる。また、専用通信ネットワークあるいはインターネットに接続されたサーバシステムに設けたハードディスクまたはＲＡＭ等の記憶装置を記録媒体として使用して、ネットワークを介したプログラムとして放射線撮像システムを提供してもよい。
【００８９】
以上、本発明を実施の形態を用いて説明したが、本発明の技術的範囲は上記実施の形態に記載の範囲には限定されない。上記実施の形態に、多様な変更または改良を加えることが可能であることが当業者に明らかである。その様な変更または改良を加えた形態も本発明の技術的範囲に含まれ得ることが、特許請求の範囲の記載から明らかである。
【図面の簡単な説明】
【００９０】
【図１】一実施形態に係るコンピュータシステム１００の利用環境の一例を示す図である。
【図２】データベースサーバ１１０及びアプリケーションサーバ１２０のブロック構成の一例を示す図である。
【図３】ＷＥＢサーバ１３０、アプリケーションサーバ１２０、及びデータベースサーバ１１０の動作シーケンスの一例を示す図である。
【図４】コネクション数格納部２３０が格納しているデータの一例をテーブル形式で示す図である。
【図５】ＣＰＵ使用率の時間発展及び使用可能コネクション数の時間発展の一例を示す図である。
【図６】コネクション制御部２２０の制御による使用可能コネクション数の増減量の一例を示す図である。
【図７】コネクション制御部２２０が記憶しているデータの一例を示す図である。
【図８】データベースサーバ１１０及びアプリケーションサーバ１２０のそれぞれのハードウェア構成の一例を示す図である。
【符号の説明】
【００９１】
１００  コンピュータシステム
１１０  データベースサーバ
１２０  アプリケーションサーバ
１３０  ＷＥＢサーバ
１４０  ロードバランサ
１５０  通信回線
１６０  クライアント端末
２００  コネクション確立部
２１０  負荷取得部
２１５  負荷検出部
２２０  コネクション制御部
２３０  コネクション数格納部
２４０  コネクション情報格納部
２５０  サービス利用部
２５５  サービス提供部
２８０  コネクション使用数検出部
２９０  通信制御部
５００  ＣＰＵ使用率
５１０  時間発展
１５０５  ＣＰＵ
１５１０  ＲＯＭ
１５２０  ＲＡＭ
１５３０  通信インターフェイス
１５４０  ハードディスクドライブ
１５５０  フレキシブルディスク・ドライブ
１５６０  ＣＤ−ＲＯＭドライブ
１５７０  入出力チップ
１５７５  グラフィック・コントローラ
１５８０  表示装置
１５８２  ホスト・コントローラ
１５８４  入出力コントローラ
１５９０  フレキシブルディスク
１５９５  ＣＤ−ＲＯＭ
１５９８  ネットワーク通信装置
【図１】
0005082111.tif 000002
【図２】
0005082111.tif 000003
【図３】
0005082111.tif 000004
【図４】
0005082111.tif 000005
【図５】
0005082111.tif 000006
【図６】
0005082111.tif 000007
【図７】
0005082111.tif 000008
【図８】
0005082111.tif 000009