JP2008134767A - コネクション割当管理方法 - Google Patents

コネクション割当管理方法 Download PDF

Info

Publication number
JP2008134767A
JP2008134767A JP2006319632A JP2006319632A JP2008134767A JP 2008134767 A JP2008134767 A JP 2008134767A JP 2006319632 A JP2006319632 A JP 2006319632A JP 2006319632 A JP2006319632 A JP 2006319632A JP 2008134767 A JP2008134767 A JP 2008134767A
Authority
JP
Japan
Prior art keywords
connection
application
pool
connections
acquisition request
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Pending
Application number
JP2006319632A
Other languages
English (en)
Inventor
Shinsuke Onodera
伸介 小野寺
Noboru Yamamoto
昇 山本
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Hitachi Software Engineering Co Ltd
Original Assignee
Hitachi Software Engineering Co Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Hitachi Software Engineering Co Ltd filed Critical Hitachi Software Engineering Co Ltd
Priority to JP2006319632A priority Critical patent/JP2008134767A/ja
Publication of JP2008134767A publication Critical patent/JP2008134767A/ja
Pending legal-status Critical Current

Links

Images

Abstract

【課題】コネクションの動作チェックによる負荷を低減し、かつ、コネクション取得のレスポンスの低下を抑制しつつ正常に動作するコネクションを割り当てることが可能なコネクション割当管理方法を提供する。
【解決手段】コネクションプール10、及びコネクションプール10にコネクション要求等をするアプリケーション20を有するアプリケーションサーバ1と、アプリケーションサーバ1に接続されたデータベース2とを備え、コネクションプール10は、確立済みのコネクション11〜11を保持するプール部11と、コネクション取得要求、コネクション返却要求等を処理する制御部12とを有し、アプリケーション20に渡すコネクション11〜11を割り当てると共に管理し、制御部12は、コネクションの動作チェックを行うコネクション確認手段121と、コネクション11〜11の管理情報を記憶する記憶手段122と、を有する構成をなす。
【選択図】図1

Description

本発明は、コネクションプールされているコネクションのコネクション割当管理方法に関する。
アプリケーションサーバ等のアプリケーション端末がデータベースにアクセスして処理を行うとき、アプリケーション端末とデータベースとを接続するコネクションを確立する必要がある。ここで、コネクションの確立は時間がかかる処理であるため、確立済みのコネクションをアプリケーション端末内に保持しておくコネクションプールの技術がある(例えば、特許文献1参照。)。
アプリケーションは、データベースにアクセスするとき、アプリケーション端末からコネクションを取得する。このとき、アプリケーション端末は、コネクションプールされている確立済みの未使用のコネクションをアプリケーションに渡す。アプリケーションは、渡されたコネクションを介してデータベースにアクセスすることによって、アクセス時間を短縮することができる。
ここで、アプリケーション端末とデータベースとを接続しているネットワーク、データベース等において一時的な障害が発生したとき、コネクションプールされているコネクションは、正常に動作せず、データベースにアクセスするときにエラーが発生するコネクションになってしまう。
エラーが発生するコネクションを渡された場合、アプリケーションは、データベースへのアクセスを最初からやり直す、ユーザに対しエラーメッセージを通知する等の所定の対処をしなければならない。かかる対処として、アプリケーションに、エラーの発生する確率を低減させたコネクションを渡す技術が特許文献1に記載されている。
この技術は、アプリケーションからのコネクション取得要求が発生したときに、コネクションプールされているコネクションの動作チェックを行い、正常に動作するコネクションをアプリケーションに渡すことによって、エラーの発生する確率を低減させるものである。
特開2003−216477号公報
しかしながら、従来のコネクション割当管理方法では、コネクションの動作チェックに処理コストがかかるため、コネクション取得要求毎に動作チェックを行うのでは、コネクション取得のレスポンスを低下させてしまうという問題を有していた。コネクション取得要求があったとき、ネットワーク障害、データベース障害等が発生していた場合は、コネクションプールされたコネクションの動作チェック及びコネクション破棄が繰り返し実行されることになるため、アプリケーションにコネクションが渡されるまでに長時間を要する。
一方、コネクションの動作チェックをコネクション取得要求のときではなく一定間隔で行う方法も考えられるが、間隔が長過ぎる場合は、ネットワーク障害、データベース端末障害等の検出が遅くなり、エラーが発生するコネクションをアプリケーションに渡してしまう確率が高くなる。間隔が短過ぎる場合は、アプリケーション端末、データベース端末等に課される負荷を不必要に高めることとなる。
以上の現状に鑑み、本発明の目的は、コネクションの動作のチェックによる負荷を低減し、かつ、コネクション取得のレスポンスの低下を抑制しつつ正常に動作するコネクションを割り当てることが可能なコネクション割当管理方法を提供する。
上記の課題を解決すべく、本発明は以下の構成を提供する。
請求項1に係る発明は、コネクションの最終アクセス時刻を管理し、アプリケーションからのコネクション取得要求に応じてコネクションを割り当てて渡す方法であって、前記アプリケーションから前記コネクションが返却されたとき、次回のコネクション取得要求があったときに渡す次回候補コネクションの動作を別スレッドでチェックする第1のステップと、前記第1のステップで前記次回候補コネクションの動作をチェックしたときに、チェックした前記次回候補コネクションの前記最終アクセス時刻を更新する第2のステップと、コネクション取得要求があったときに、前記アプリケーションに渡す前記次回候補コネクションを、現時刻が前記次回候補コネクションの最終アクセス時刻から一定時間経過している場合に、動作をチェックする第3のステップと、を備えたことを特徴とする。
請求項2に係る発明は、コネクションの最終アクセス時刻を管理し、アプリケーションからのコネクション取得要求に応じてコネクションを割り当てて渡す方法であって、前記アプリケーションからのアクセスをインターセプトし、前記コネクションの最終アクセス時刻を更新する第1のステップと、コネクション取得要求があったときに、前記アプリケーションに渡す前記次回候補コネクションを、現時刻が前記次回候補コネクションの最終アクセス時刻から一定時間経過している場合に、動作をチェックする第2のステップと、を備えたことを特徴とする。
請求項1に係る発明によれば、コネクションの最終アクセス時刻を管理し、アプリケーションからのコネクション取得要求に応じてコネクションを割り当てて渡す方法であって、アプリケーションからコネクションが返却されたとき、次回のコネクション取得要求があったときに渡す次回候補コネクションの動作を別スレッドでチェックする第1のステップと、第1のステップで次回候補コネクションの動作をチェックしたときに、チェックした次回候補コネクションの最終アクセス時刻を更新する第2のステップと、コネクション取得要求があったときに、アプリケーションに渡す次回候補コネクションを、現時刻が次回候補コネクションの最終アクセス時刻から一定時間経過している場合に、動作をチェックする第3のステップと、を備えるため、使用環境に応じて経過時刻を適切に設定することによって、コネクションの動作のチェックによる負荷を低減し、かつ、コネクション取得のレスポンスの低下を抑制しつつ正常に動作するコネクションを割り当てることが可能なコネクション割当管理方法を実現することができる。
請求項2に係る発明によれば、コネクションの最終アクセス時刻を管理し、アプリケーションからのコネクション取得要求に応じてコネクションを割り当てて渡す方法であって、アプリケーションからのアクセスをインターセプトし、コネクションの最終アクセス時刻を更新する第1のステップと、コネクション取得要求があったときに、アプリケーションに渡す次回候補コネクションを、現時刻が次回候補コネクションの最終アクセス時刻から一定時間経過している場合に、動作をチェックする第2のステップと、を備えるため、使用環境に応じて経過時刻を適切に設定することによって、コネクションの動作のチェックによる負荷を低減し、かつ、コネクション取得のレスポンスの低下を抑制しつつ正常に動作するコネクションを割り当てることが可能なコネクション割当管理方法を実現することができる。
以下、実施例を示した図面を参照しつつ本発明の実施の形態について説明する。
図1は、本発明によるコネクション割当管理方法が実行される情報処理システムの一実施例を模式的に示すブロック構成図である。この情報処理システムは、図1に示すように、コネクションプール10、及びコネクションプール10にコネクション要求等をするアプリケーション20を有する、アプリケーションサーバ等のアプリケーション端末1と、アプリケーション端末1に接続されたデータベース2とを備える。
コネクションプール10は、データベース2との間で確立済みのコネクション11〜11を保持するプール部11と、アプリケーション20からのコネクション取得要求、コネクション返却要求等を処理する制御部12とを有し、アプリケーション20に渡すコネクション11〜11を割り当てると共に管理する。制御部12は、さらに、コネクションが正常に動作するかをチェックするコネクション確認手段121と、コネクション11〜11を管理するための情報を記憶する記憶手段122と、を有する。
図2は、コネクションプール内に保持されたコネクションの管理テーブルの一実施例を示す図である。コネクションの管理テーブルは、記憶手段122に記憶され、図2に示すように、コネクションプール内のコネクションを一意に識別するコネクション識別子21、コネクション状態22、最終アクセス時刻23を有し、コネクション毎にデータが登録される。
管理テーブルへの登録は、コネクションプールにコネクションが追加されるときに行われ、管理テーブルからの各コネクションのデータの削除は、対応するコネクションが破棄されたときに行われる。コネクション状態22は、使用されていないコネクションを検索するときに用いられ、アプリケーションにコネクションを渡すときに「使用中」に更新され、コネクションが返却されたときに「未使用」に更新される。また、コネクションが正常に動作しているか否かをチェックするコネクション動作チェックの実行中は、「動作チェック中」に更新される。最終アクセス時刻23は、対応するコネクションを介してデータベースにアクセスした最終時刻であり、コネクション確認手段、アプリケーション等が対応するコネクションを介してデータベースにアクセスを実行したときに更新される。
図3は、アプリケーションからコネクションが返却されるときの処理について説明するためのシーケンス図である。
まず、コネクションプールから渡されたコネクションの使用を終了したとき、アプリケーションは、図3に示すように、コネクションプールの制御部にコネクションの返却要求を行い、コネクションプールにコネクションを返却する(S301)。
次に、制御部は、コネクションの管理テーブル内のコネクション状態を「未使用」に更新し(S302)、別スレッドで動作しているコネクション確認手段にコネクションの動作チェックを指示する(S303)。
次に、コネクションの動作チェックを指示されたコネクション確認手段は、この指示に対して応答を通知し(S304)、データベースとの間でコネクションの動作チェック(以下、この処理をコネクション動作チェック処理という。)を行う(S311)。コネクション動作チェック処理では、データベースとの間で通信を発生させて所定のコネクションが正常に動作するか否かがチェックされる(S311、S312)。
ステップS304で通知を受けた制御部12は、コネクションの動作チェックの結果を待つことなく、コネクションの返却要求に対する応答をアプリケーションに通知し、コネクションの返却処理を終了する(S305)。
図4は、コネクション動作チェック処理を説明するためのフローチャートである。
コネクション動作チェック処理では、まず、対象のコネクションとして、プール部から次回のコネクション取得要求でアプリケーションに渡すコネクションの候補(以下、次回候補コネクションという。)を選択してコネクション状態を「動作チェック中」に設定し(S401)、現時刻が最終アクセス時刻から一定時間経過しているか否かを判定する(S402)。
ステップS402で最終アクセス時刻から一定時間経過していないと判定したとき、次回候補コネクションのコネクション状態を「未使用」に設定する(ステップ403)。
ステップS402で最終アクセス時刻から一定時間経過していると判定したとき、次回候補コネクションを使って、例えばSQL(Structured Query Language)での通信をデータベースとの間で発生させてコネクションの動作チェックを行い(S404)、コネクションが正常に動作するか否かを判定する(S405)。
ステップS405でコネクションが正常に動作すると判定したとき、次回候補コネクションの最終アクセス時刻を更新して(S406)、ステップS403に跳び、コネクション状態を「未使用」に設定する。コネクションが正常に動作しないと判定したとき、次回候補コネクションを破棄して(S407)、コネクションの管理テーブルから対応する情報を削除する(S408)。
図5は、アプリケーションからコネクションプールにコネクション取得要求とデータベースへのアクセスがあったときに、制御部が行う処理について説明するためのシーケンス図である。
アプリケーションからコネクション取得要求(S501)があったとき、制御部は、アプリケーションにコネクションを割り当てるコネクション割り当て処理を行い(S502)、コネクションの管理テーブルのコネクション状態を「使用中」に設定し(S503)、割り当てられたコネクションをアプリケーションに引き渡す(S504)。コネクション割り当て処理については、以下に図6を用いて詳細に説明される。
ステップS504でコネクションが渡されたアプリケーションは、データベースを使用する処理(S510)においてデータベースにアクセスする必要が生じたとき、渡されたコネクションを介してデータベースにアクセスする手順を進め(S511)、制御部は、このデータベースへのアクセスをインターセプトして(S512)、アクセスを実行する(S513)。
ステップS513のアクセスに応答して、データベースは、アプリケーションから要求された処理を実行して(S514)、データベース内のデータ等を制御部経由でアプリケーションに送信する(S515、S516)。同様の処理は、データベースへのアクセスが終了するまで、例えば、n回実行される(S515、S516)。
ステップS516でアクセスが終了したとき、アプリケーションは、制御部にコネクション返却要求を行い(S521)、制御部は、コネクション返却要求に応答して、管理テーブルの最終アクセス時刻を更新すると共に上記のステップS302、S303、S305の各ステップでの処理を行う(S522)。
図6は、コネクション取得要求があったときに制御部が行う、コネクション割り当て処理について説明するためのフローチャートである。
アプリケーションからコネクション取得要求があったとき、制御部は、プール部からアプリケーションに渡すコネクションを選択し(S601)、現時刻が最終アクセス時刻から一定時間経過しているか否かを判定する(S602)。ここで、ステップS601で選択したコネクションのコネクション状態が「動作チェック中」のときは、コネクション状態が「未使用」になるまで待ってから、ステップS602での処理が行われる。
ステップS602で最終アクセス時刻から一定時間経過していないと判定したとき、ステップS601で選択したコネクションをアプリケーションに渡すコネクションと決定する(S603)。
ステップS602で最終アクセス時刻から一定時間経過していると判定したとき、ステップS601で選択したコネクションに対して上記のコネクション動作チェック処理を行い(S604)、コネクションが正常に動作しているか否かを判定する(S605)。
ステップS605でコネクションが正常に動作していると判定したとき、ステップS603に跳び、コネクション動作チェック処理を行ったコネクションをアプリケーションに渡すコネクションと決定する。コネクションが正常に動作していないと判定したときは、コネクションプール内にコネクションが残っているか否かを判定する(S606)。
ステップS606でコネクションプール内にコネクションが残っていると判定したとき、ステップS601に戻り、上記の処理が繰り返される。コネクションプール内にコネクションが残っていないと判定したときは、新たにデータベースとのコネクションを確立し(S607)、ステップS603に跳び、ここで確立したコネクションをアプリケーションに渡すコネクションと決定する。
本発明によるコネクション割当管理方法が実行される情報処理システムの一実施例を模式的に示すブロック構成図である。 コネクションプール内に保持されたコネクションの管理テーブルの一実施例を示す図である。 アプリケーションからコネクションが返却されるときの処理について説明するためのシーケンス図である。 コネクション動作チェック処理を説明するためのフローチャートである。 アプリケーションからコネクションプールにコネクション取得要求とデータベースへのアクセスがあったときに、制御部が行う処理について説明するためのシーケンス図である。 コネクション取得要求があったときに制御部が行う、コネクション割り当て処理について説明するためのフローチャートである。
符号の説明
1 アプリケーション端末(サーバ)
2 データベース
10 コネクションプール
11 プール部
11〜11 コネクション
12 制御部
20 アプリケーション
121 コネクション確認手段
122 記憶手段

Claims (2)

  1. コネクションの最終アクセス時刻を管理し、アプリケーションからのコネクション取得要求に応じてコネクションを割り当てて渡す方法であって、
    前記アプリケーションから前記コネクションが返却されたとき、次回のコネクション取得要求があったときに渡す次回候補コネクションの動作を別スレッドでチェックする第1のステップと、
    前記第1のステップで前記次回候補コネクションの動作をチェックしたときに、チェックした前記次回候補コネクションの前記最終アクセス時刻を更新する第2のステップと、
    コネクション取得要求があったときに、前記アプリケーションに渡す前記次回候補コネクションを、現時刻が前記次回候補コネクションの最終アクセス時刻から一定時間経過している場合に、動作をチェックする第3のステップと、
    を備えたことを特徴とするコネクション割当管理方法。
  2. コネクションの最終アクセス時刻を管理し、アプリケーションからのコネクション取得要求に応じてコネクションを割り当てて渡す方法であって、
    前記アプリケーションからのアクセスをインターセプトし、前記コネクションの最終アクセス時刻を更新する第1のステップと、
    コネクション取得要求があったときに、前記アプリケーションに渡す前記次回候補コネクションを、現時刻が前記次回候補コネクションの最終アクセス時刻から一定時間経過している場合に、動作をチェックする第2のステップと、
    を備えたことを特徴とするコネクション割当管理方法。
JP2006319632A 2006-11-28 2006-11-28 コネクション割当管理方法 Pending JP2008134767A (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP2006319632A JP2008134767A (ja) 2006-11-28 2006-11-28 コネクション割当管理方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2006319632A JP2008134767A (ja) 2006-11-28 2006-11-28 コネクション割当管理方法

Publications (1)

Publication Number Publication Date
JP2008134767A true JP2008134767A (ja) 2008-06-12

Family

ID=39559593

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2006319632A Pending JP2008134767A (ja) 2006-11-28 2006-11-28 コネクション割当管理方法

Country Status (1)

Country Link
JP (1) JP2008134767A (ja)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2014103553A (ja) * 2012-11-20 2014-06-05 Toshiba Corp 通信装置、通信方法およびプログラム
CN110807062A (zh) * 2018-08-02 2020-02-18 中兴通讯股份有限公司 一种数据同步的方法、装置和数据库主机

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2014103553A (ja) * 2012-11-20 2014-06-05 Toshiba Corp 通信装置、通信方法およびプログラム
US9992309B2 (en) 2012-11-20 2018-06-05 Kabushiki Kaisha Toshiba Communication device and communication method
CN110807062A (zh) * 2018-08-02 2020-02-18 中兴通讯股份有限公司 一种数据同步的方法、装置和数据库主机

Similar Documents

Publication Publication Date Title
KR101073171B1 (ko) 패일러 로드 밸런서의 제로 싱글 포인트의 장치 및 방법들
CN108984266B (zh) 一种虚拟机的管理方法、装置及***
JP5191062B2 (ja) ストレージ制御システム、ストレージ制御システムに関する操作方法、データ・キャリア及びコンピュータ・プログラム
JP6963168B2 (ja) 情報処理装置、メモリ制御方法およびメモリ制御プログラム
US20120036254A1 (en) Connection management system, and a method for linking connection management server in thin client system
JP2005332220A (ja) 記憶領域の管理方法及び管理システム
JP2009237826A (ja) ストレージシステム及びそのボリューム管理方法
CN115599302A (zh) 一种数据写入方法、装置、设备及存储介质
CN106685688A (zh) 一种集群计算机设备同步升级方法
JP4529812B2 (ja) 分散資源配分システム、分散資源配分方法およびプログラム
CN106254411B (zh) 用于提供服务的***、服务器***及方法
JP2008134767A (ja) コネクション割当管理方法
JP2008242766A (ja) プロセス制御システム
KR101513393B1 (ko) 프로그램 작성 장치 및 프로그래머블 로직 컨트롤러
JPH0764926A (ja) 分散サーバ装置
JP2002366381A (ja) オブジェクトの動的入替え処理方法
JP6375803B2 (ja) コマンド実行システム、クライアント装置、サーバ装置及びコマンド実行方法
JP2005092544A (ja) ワークフロー世代管理処理方法,ワークフロー処理システムおよびワークフロー制御プログラム
JP4343056B2 (ja) ストレージ装置割当て方法ならびにそのための管理サーバおよびプログラム
CN105933155B (zh) 控制服务器升级的装置及方法
US20060136522A1 (en) Computer system, storage management program call-up method, and storage system
JP6678093B2 (ja) データ共有システム、データ共有方法
JP2006309521A (ja) リモートコピートポロジチェック方法
JP2001350732A (ja) 分散オブジェクト管理方法及びその実施装置並びにその処理プログラムを記録した記録媒体
JP2007041873A (ja) 分配情報生成システム、及び、分配情報生成方法