(57)【特許請求の範囲】
【請求項１】
サーバ装置に対しサービス要求を発行するクライアント装置と、クライアント装置からのサービス要求を受けて、サービスを提供するサーバ装置とからなるサービスシステムにおける、前記クライアント装置と前記サーバ装置間のデータ通信を中継するデータ通信中継装置であって、
前記クライアント装置から前記サーバ装置への要求に対し、宛先の前記サーバ装置にコネクションを中継するコネクション中継手段と、及び、
確立したコネクションを使用してクライアント装置とサーバ装置間のデータ通信を中継するデータ中継手段と
サーバ装置に対して確立しているコネクション数を管理するコネクション管理手段と、及び、
クライアント装置からサーバ装置に対する要求に対して、前記コネクション管理手段の指示に従い、当該サーバ装置との間のコネクション数が所定のコネクション数以下になるように要求中継を制御する要求キューイング手段を備え、
ここで、前記要求キューイング手段は優先度別に複数の優先度キューを備え、また、前記データ通信中継装置は、各要求に割り当てられた優先度に従って、当該各要求に対応する優先度キューにキューイングし、前記優先度キューから要求を取出す際には、優先度の高い前記優先度キューから要求を取出す優先キュー管理手段を有し、
更に、前記優先キュー管理手段は、各要求に対し、優先度の高い要求に追い越された待ち数情報を保持し、ある要求の待ち数情報が、ある最大待ち数を超えた場合、ある優先度以下の要求しかなければ、他に優先度が高い要求があっても、該要求を先にキューから取出して中継する、沈み込み防止手段を持つことを特徴とするデータ通信中継装置。
【請求項２】
請求項１のデータ通信中継装置において、前記沈み込み防止手段は、追い越し待ち数情報の代わりに、各要求に対し、要求到着時刻情報を保持し、ある要求の要求時刻情報からの待ち時間が、ある最大待ち時間を超えた場合、ある優先度以下の要求しかなければ、他に優先度が高い要求があっても、該要求を先にキューから取出して中継することを特徴とするデータ通信中継装置。
【請求項３】
請求項２のデータ通信中継装置において、前記沈み込み防止手段は、待ち数情報と要求時刻情報を両方保持し、最大待ち数あるいは最大待ち時間のいずれか一方が超えた場合、他に優先度が高い要求があっても、該要求を先にキューから取出して中継することを特徴とするデータ通信中継装置。
【請求項４】
サーバ装置に対しサービス要求を発行するクライアント装置と、クライアント装置からのサービス要求を受けて、サービスを提供するサーバ装置とからなるサービスシステムにおける、前記クライアント装置と前記サーバ装置間のデータ通信を中継するデータ通信中継装置であって、
前記クライアント装置から前記サーバ装置への要求に対し、宛先の前記サーバ装置にコネクションを中継するコネクション中継手段と、及び、
確立したコネクションを使用してクライアント装置とサーバ装置間のデータ通信を中継するデータ中継手段と
サーバ装置に対して確立しているコネクション数を管理するコネクション管理手段と、及び、
クライアント装置からサーバ装置に対する要求に対して、前記コネクション管理手段の指示に従い、当該サーバ装置との間のコネクション数が所定のコネクション数以下になるように前記要求の中継を制御する要求キューイング手段と、
前記クライアント装置からの要求に対し、予め定められた所定の条件になった場合に、優先度情報を含む優先度トークン情報を生成する第１手段と、
前記生成した優先度トークン情報を付加して、前記要求を送信した前記クライアント装置に応答を返送する第２手段と、及び、
前記優先度トークン情報を受信した前記クライアント装置が送信した前記優先度トークン情報を有する要求を次に受信し、当該受信した要求の当該優先度トークン情報の当該優先度情報に基づいて、当該要求の当該データ通信中継装置での処理の優先度を決定する第３手段を有することを特徴とするデータ中継装置。
【請求項５】
請求項４のデータ通信中継装置において、
前記優先度トークン情報は、更に宛先のサーバ装置またはサーバ装置群のアドレス情報を含み、
前記第３手段は、宛先の前記サーバ装置のアドレス情報が、前記優先度トークン情報に含まれる宛先のサーバ装置またはサーバ装置群のアドレス情報に当てはまる場合に、前記優先度トークン情報の優先度情報に従って、前記要求の前記優先度を決定することを特徴とするデータ通信中継装置。
【請求項６】
請求項５のデータ通信中継装置において、
前記優先度トークン情報は、更に、前記優先度トークン情報の有効期間情報を含み、
前記第３手段は、前記クライアント装置から要求と共に提供された優先度トークン情報の有効期間情報をチェックし、前記優先度トークン情報が有効であれば前記優先度トークン情報に従った前記優先度を決定し、有効でなければ、その他の情報を基に前記優先度を決定することを特徴とするデータ通信中継装置。
【請求項７】
請求項４のデータ通信中継装置において、
前記第１手段は、前記所定の条件で、前記クライアント装置から要求を受けた際に当該要求に優先度トークン情報が付与されていない場合は前記優先度トークン情報を生成し、クライアント装置から優先度トークン情報の提供がある場合は該優先度トークン情報を更新あるいは破棄する処理を行い、
前記第２手段は、前記第１手段で生成または更新された優先度トークン情報を前記クライアント装置へ返すことを特徴とするデータ通信中継装置。
【請求項８】
請求項７のデータ通信中継装置において、
前記要求キューイング手段は、前記サーバ装置対応に最大キューイング数情報を保持し、
前記所定の条件とは、該最大キューイング数を超える前記サーバ装置宛の要求をクライアント装置から受信した場合、前記第１手段に、より高い優先度を持つ優先度トークン情報を作成させるものであり、
前記第２手段は、前記作成された優先度トークン情報を輻輳エラー情報と共に前記クライアント装置に返すことを特徴とするデータ通信中継装置。
【請求項９】
請求項７のデータ通信中継装置において、
前記要求キューイング手段は、前記サーバ装置対応に最大キューイング時間情報を保持し、
前記所定の条件とは、前記クライアント装置から受信した要求が該最大キューイング時間を超えた場合、前記第１手段に、より高い優先度情報を持つ優先度トークン情報を作成させるものであり、
前記第２手段は、前記作成された優先度トークン情報をタイムアウトエラー情報と共に前記クライアント装置に返すことを特徴とするデータ通信中継装置。
【請求項１０】
請求項７のデータ通信中継装置において、
前記優先度トークン情報は、更に、サーバ装置情報、現時刻から一定時間内有効を示す有効期間情報、優先度トークン情報の初期開始時刻情報、優先度トークン更新回数情報、サーバ装置へのコネクション確立回数、トータルコネクション待ち時間情報のいずれか１つ以上を含み、
前記第１手段は、前記初期開始時刻からのある更新可能期間内、あるいは、ある最大更新回数、または、ある最大コネクション確立回数を超えない場合に、前記優先度トークン情報の更新を行い、該条件を満たさない場合は、新たな優先度トークン情報を生成するか優先度トークン情報を廃棄し、
所定のコネクション確立回数、または、所定のコネクション待ち時間以上、または、上記最大キューイング数を超える場合、より高い優先度へのマッピングを可能とする優先度情報を作成し、優先度トークン情報を更新または生成する場合、有効期間情報、更新回数情報、コネクション確立回数情報、コネクション待ち時間情報を更新あるいは初期設定し、
当該情報と前記優先度情報とから、新たな優先度トークン情報を作成することを特徴とするデータ通信中継装置。
【請求項１１】
請求項４のデータ通信中継装置を用いたデータ通信中継システムにおいて、
前記サーバ装置は、前記クライアント装置からの要求に応答を返す際に、前記データ通信中継装置の前記第１手段に、優先度トークン情報の生成・更新の可否および／または優先度変更を指示する優先度トークン制御情報を当該応答に付加して返送する優先度トークン制御手段を備え、
前記第１手段は、前記優先度トークン制御情報を参照し、優先度トークン情報の生成・更新を行うことを特徴とするデータ通信中継システム。
【請求項１２】
請求項１１記載のデータ通信中継システムにおいて、前記第２手段は、前記優先度トークン情報を暗号化してクライアント装置に返送することを特徴とするデータ通信中継システム。
【請求項１３】
請求項８または９記載のデータ通信中継装置であって、前記第１手段がより高い優先度を持つ優先度トークン情報を生成する際、所定の時間以降に有効となる有効期間を当該優先度トークン情報に設定することを特徴とするデータ通信中継装置。
【請求項１４】
サーバ装置に対しサービス要求を発行するクライアント装置と、クライアント装置からのサービス要求を受けて、サービスを提供するサーバ装置とからなるサービスシステムにおける、前記クライアント装置と前記サーバ装置間のデータ通信を中継するデータ通信中継装置であって、
前記クライアント装置から前記サーバ装置への要求に対し、宛先の前記サーバ装置にコネクションを中継するコネクション中継手段と、及び、
確立したコネクションを使用してクライアント装置とサーバ装置間のデータ通信を中継するデータ中継手段と
サーバ装置に対して確立しているコネクション数を管理するコネクション管理手段と、
クライアント装置からサーバ装置に対する要求に対して、前記コネクション管理手段の指示に従い、当該サーバ装置との間のコネクション数が所定のコネクション数以下になるように要求中継を制御する要求キューイング手段と、
サーバ装置毎に単位時間あたりの要求処理数を計測する処理スループット計測手段と、
前記処理スループット計測手段により得られた要求処理数情報を用い、該サーバ装置に対する現在の最大コネクション数設定値に達しても、該サーバ装置あるいはサーバ装置群の単位時間あたりの要求処理数が低下しない場合は、該サーバ装置の最大コネクション数を増加させ、最大コネクション数設定値付近では、要求処理数が減少傾向にある場合は、該最大コネクション数値を減少させる最大コネクション数自動チューニング手段を有することを特徴とするデータ通信装置。
【請求項１５】
請求項１４に記載のデータ通信中継装置において、
前記処理スループット計測手段は、サーバ装置毎に、現在コネクション数に対する単位時間あたりの要求処理数分布を計測し、
前記最大コネクション数の自動チューニング手段は、該処理スループット計測手段により得られた要求処理数の分布情報を用い、該サーバ装置あるいはサーバ装置群に対する現在の最大コネクション数設定値の現在コネクション数がある場合の単位時間の要求処理数が、他の現在コネクション数の要求処理数より高い場合は、該サーバ装置あるいはサーバ装置群の最大コネクション数をある範囲内で増加させ、現在の最大コネクション数設定値未満の現在コネクション数に対する単位時間の要求処理数の方が高い場合は、最大コネクション数値を減少させることを特徴とするデータ通信中継装置。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は、データ通信中継装置を用いたクライアント装置とサーバ装置間のデータ通信方法に関する。
【０００２】
【従来の技術】
インターネットが急速に普及し，チケット予約や銀行・証券取引等、従来営業店窓口で行われていたサービスもインターネットを介したWebサーバへのアクセスという形で提供されるようになってきた。
【０００３】
このWebサーバへのアクセスで利用される通信プロトコルであるHTTP(Hypertext Transfer Protocol)の詳細および使い方については、1997年1月発行のRFC2068「Hypertext Transfer Protocol--HTTP/1.1」に詳しく説明されている。
【０００４】
【発明が解決しようとする課題】
しかし、このようなチケット予約や銀行・証券取引等のサービスは、時間によるサービス要求の集中が激しい。また、データベースアクセスが必要なため、処理の分散化が難しく、どうしてもこれらのサービスを行う特定Webサーバにはアクセスが集中するという問題がある。
【０００５】
アクセスが集中し負荷が急激に高まると、一般にWebサーバの処理性能は低負荷時に比べ極端に低下する。その結果、サービス要求の滞留をさらに拡大させ、最悪の状況では、サービスダウンにまで繋がるという状況が起こっていた。
【０００６】
また、このようにアクセスが集中した状況では、すべてのサービス要求が満足に処理できない状況のため、重要な利用者のサービス要求も、一般の利用者と同様に区別なく待たされる。しかも、後からサービス要求しても、偶然サービスされることもあれば、長い間待ってサービスされないこともある。特に、後者の場合、利用者は何度も再実行を繰り返し、よりアクセスが集中し負荷を高める結果となっていた。
【０００７】
【課題を解決するための手段】
本発明は、特定サーバへの負荷の集中による性能低下を抑える技術を提供する。さらに、利用者の属性に応じたサービス要求の優先処理を実現する。また、優先処理されないサービス要求に対しても、不確定で長い待ち時間を削減し、利用者の再実行回数を削減する技術を提供する。
【０００８】
本発明は、サーバへのサービス要求の到着を制御して、サーバに掛かる負荷を制御し、サービスをスムーズに提供できるようにする技術を提供する。
【０００９】
本発明の一態様によれば、クライアント装置とサーバ装置の間に、データ通信を中継するデータ通信中継装置を設置する。データ通信中継装置は、クライアント装置、サーバ装置間のコネクションを中継するコネクション中継手段と、データ通信を中継するデータ中継手段に加え、要求を一時保留するための要求キューイング手段を持つ。
【００１０】
要求キューイング手段は、クライアント装置からのサービス要求を必要に応じてキューイングする。すなわち、特定のサーバ装置またはサーバ装置群に対するクライアント装置からのサービス要求に対して、同サーバ装置への要求が集中していると判断するときには、すぐには同サービス要求を中継せず、一旦キューイングし、同サーバ装置へのサービス要求中継を制御する。
【００１１】
より具体的な本発明の一態様によれば、データ通信中継装置は、クライアント装置、サーバ装置間のコネクションを中継するコネクション中継手段と、データ通信を中継するデータ中継手段に加え、コネクション管理手段と要求キューイング手段を持つ。コネクション管理手段は、コネクションの状態を監視し、特定のサーバ装置またはサーバ装置群に対して、現在確立しているコネクション数を管理する。コネクションとはクライアント装置、サーバ装置間に確立される論理通信路であって、当該論理通信路を確立した上で、様々なサービスが提供されるようになる。
【００１２】
要求キューイング手段は、クライアント装置からのサービス要求に伴うコネクション確立要求を必要に応じてキューイングする。特定のサーバ装置またはサーバ装置群に対するクライアント装置からのコネクション確立要求に対しては、同サーバ装置またはサーバ装置群に既に確立しているコネクション数が、ある最大コネクション数以上になる場合は、すぐには同コネクション確立要求を中継せず、同コネクション確立要求を一旦キューイングし、同宛先へのコネクション数が最大コネクション数以下になるようにコネクション確立要求中継を制御する。
【００１３】
通常、クライアント装置からのサービス要求に応じて、サーバ装置がサービスを始める場合、まず、上記コネクションを確立する必要がある。上記本発明の一態様によれば、上記データ通信中継装置は、コネクションの確立を制限することにより、サービス要求の中継を制御する。コネクション数を制御することで、サーバの負荷を制御できるようになる。
【００１４】
また、要求キューイング手段は、優先度別に複数のキュー（優先度キューという）を備え、各要求に割り当てられた優先度に従って、各要求を、対応する優先度キューに同要求をキューイングする。キューから要求を取出す際には、優先度の高い優先度キューから要求を取出し、優先度に従った要求の中継制御を行う。
【００１５】
要求キューイング手段は、さらに、沈み込み防止手段を持っていてもよい。沈み込み防止手段は、例えば、各要求に対し、優先度の高い要求に追い越された待ち数情報を保持する。ある要求の待ち数情報が、ある最大待ち数を超えた場合、沈み込み防止手段は、ある優先度以下の要求しかなければ、他に優先度が高い要求があっても、同要求を先にキューから取出す。
【００１６】
上記沈み込み防止手段は、待ち数情報の代わりに、各要求に対し、要求到着時刻情報を保持し、要求到着時刻からの待ち時間と、ある最大待ち時間との比較で、優先度の高い要求による沈み込みを防止してもよい。さらに、最大待ち数と最大待ち時間との組み合わせで実現してもよい。
【００１７】
要求キューイング手段は、確立可能なコネクション数情報を保持し、同情報をもとに、要求の中継制御を行ってもよい。より具体的には、要求キューイング手段は、優先度キュー毎の現在確立しているコネクション数と確立可能な最大コネクション数情報を保持し、同情報をもとに、要求の中継制御を行ってもよい。すなわち、キューから要求を取出す時は、各優先度キューに割り当てられた最大コネクション数以下でかつ優先度の高い優先度キューから順に要求を取出せばよい。
【００１８】
要求キューイング手段だけではなくさらに、データ通信中継装置のデータ中継手段も、各要求に割り当てられた優先度に従い、中継するデータに優先度情報を設定するか、あるいは、コネクション中継手段が、複数の宛先当ての通信路から適当な通信路を選択し、優先度別のデータ中継を行ってもよい。
【００１９】
以上の手段により、要求の集中する特定のサーバ装置での要求の同時実行数を常に一定以下にして性能劣化を防ぐと共に、利用者の属性等に応じた優先処理が可能となる。
【００２０】
なお、各要求の優先度の設定割り当て（マッピングともいう）は、例えば、以下の手段により実現する。
【００２１】
たとえば、優先度設定手段は、クライアント装置のアドレス、または、クライアント装置のアドレスと宛先サーバ装置のアドレスのペアに対して優先度にマッピングするテーブルを用意し、同テーブルを用いて各要求の優先度を求める手段を用いる。
【００２２】
また、優先度設定手段は、クライアント装置の要求と共に提供されたクライアント装置の利用者の認証情報から各要求の優先度へマッピングするテーブルを用意し、同テーブルを用いて各要求の優先度を求める手段を用いてもよい。
【００２３】
さらに、優先度設定手段は、クライアント装置の要求と共に提供された優先度トークン情報から各要求の優先度へマッピングする手段を用いてもよい。
【００２４】
優先度トークン情報は、例えば、宛先のサーバ装置またはサーバ装置群のアドレス情報、優先度情報を含んでも良い。さらに、必要に応じて、同優先度トークン情報の有効期間情報を含んでも良い。上記優先度トークン情報を用いた優先度へのマッピング手段は、要求の宛先サーバ装置のアドレスが、優先度トークン情報に含まれる宛先のサーバ装置またはサーバ装置群のアドレス情報に当てはまるかどうか、および／または、有効期間情報から有効期間内かどうかをなど、設定された条件をチェックし、条件を満足する場合、優先度トークン情報の優先度情報に従って、要求の優先度を決定する。
【００２５】
データ中継装置、または、サーバ装置は優先度トークン情報返送手段を備え、クライアント装置は、サーバ装置への要求の返信として、上記優先度トークン情報を取得する。クライアント装置は、データ中継装置またはサーバ装置から返された優先度トークン情報を使って要求を出す手段を持ち、これによって、優先度トークン情報を使った要求の優先度制御が行える。
【００２６】
本発明の他の態様によれば、優先度トークン情報を使った優先度制御を用いることで、優先処理されない利用者に対しても、不確定で長い待ち時間を削減し、利用者の再実行回数を削減することが可能となる。そのための手段として、上記データ通信中継装置は、優先度トークン生成・更新手段と、優先度トークン返送手段を持つ。
【００２７】
優先度トークン生成・更新手段は、クライアント装置から優先度トークン情報の提供がない場合は、ある条件で、優先度トークン情報を生成し、クライアント装置から優先度トークン情報の提供がある場合は、ある条件で、該優先度トークンを更新あるいは破棄する処理を行う。
【００２８】
優先度トークン返送手段は、優先度トークン生成・更新手段で、生成または更新された優先度トークン情報をクライアント装置への応答に付加して返す。
【００２９】
上記優先度トークン生成・更新手段は、たとえば、特定の宛先サーバ装置、あるいは、サーバ装置群毎に対応して保持された最大キューイング数情報を参照し、同最大キューイング数を超える要求をクライアント装置から受信した場合、通常時より高い優先度にマッピング可能な優先度トークン情報を作成し、優先度トークン返送手段は、作成された優先度トークン情報を輻輳エラー情報と共にクライアント装置に返すように構成する。
【００３０】
また、優先度トークン生成・更新手段は、特定の宛先サーバ装置、あるいは、サーバ装置群毎に対応して保持された最大キューイング時間情報を参照し、同最大キューイング時間を超えると、通常時より高い優先度にマッピング可能な優先度トークン情報を作成し、作成された優先度トークン情報を上記優先度トークン返送手段がタイムアウトエラー情報と共にクライアント装置に返すように構成してもよい。
【００３１】
上記優先度トークン生成・更新手段は、通常時より高い優先度にマッピング可能な優先度トークン情報を作成する際、所定の期間後以降に有効となるように、上記優先度トークン情報に有効期間を設定してもよい。
【００３２】
さらに、以下の手段により、より高度な優先度制御を行う方法もある。
【００３３】
上記優先度トークン情報は、宛先サーバ装置またはサーバ装置群情報、有効期間情報、優先度情報に加え、初期生成時の有効期間の初期開始時刻情報、優先度トークン更新回数情報、サーバ装置へのコネクション確立回数、トータルコネクション待ち時間情報のいずれか１つ以上を含んでも良い。
【００３４】
上記優先度トークン生成・更新手段は、これらの情報を用い、初期開始時刻からのある更新可能期間内、あるいは、ある最大更新回数、または、ある最大コネクション確立回数を超えない場合に、優先度トークン情報の更新を行い、同条件を満たさない場合は、新たな優先度トークン情報を生成するか、優先度トークン情報を更新せずに廃棄するように構成してもよい。さらに、所定のコネクション確立回数、または、所定のコネクション待ち時間以上、または上記最大キューイング数を超える場合、より高い優先度へのマッピングを可能とする優先度情報を作成するように構成してもよい。
【００３５】
上記優先度トークン生成・更新手段は、優先度トークン情報を更新または生成可能な場合は、有効期間情報、更新回数情報、コネクション確立回数情報、コネクション待ち時間情報を更新あるいは初期設定し、それらの情報と、作成した優先度情報とから優先度トークン情報を作成し、作成された優先度トークン情報を上記優先度トークン返送手段が要求の応答と共にクライアント装置に返すように構成してもよい。
【００３６】
また、サーバ装置が優先度トークン制御手段を持ち、優先度トークン生成・更新手段の生成または更新処理に指示を与えるように構成してもよい。すなわち、サーバ装置の優先度トークン制御手段は、クライアント装置に応答を返す際に、優先度トークン情報の生成・更新の可否および／または優先度変更を指示する優先度トークン制御情報を応答に付加して返送する。優先度トークン制御情報を受け、データ通信中継装置の優先度トークン生成・更新手段は、同制御情報の指示を参照して、優先度トークン情報の生成または更新を行う。
【００３７】
なお、クライアント装置が信頼できないシステムにおいては、優先度トークン返送手段は、優先度トークン情報をクライアント装置が改竄できないように暗号化してクライアント装置に返送するように構成してもよい。
【００３８】
上記で示した、最大コネクション数、最大待ち数、最大待ち時間、優先度キュー毎の最大コネクション数、有効期間情報、最大キューイング数、最大キューイング時間、更新可能期間、最大更新回数、最大コネクション確立回数、規定コネクション確立回数、規定コネクション待ち時間等の各種パラメータは、コネクション管理手段が持つパラメータ設定機能により、特定の宛先サーバ装置またはサーバ装置群に対応してオペレータが設定してもよい。
【００３９】
なお、データ通信中継装置が、さらに、処理スループット計測手段と、最大コネクション数自動チューニング手段を持ち、特定のサーバ装置あるいはサーバ装置群毎の最大コネクション数を自動設定するように構成してもよい。
【００４０】
この場合、処理スループット計測手段は、特定のサーバ装置あるいはサーバ装置群毎の単位時間あたりの要求処理数を計測し、最大コネクション数の自動チューニング手段が、同計測値を基に、最大コネクション数を自動チューニングする。最大コネクション数の自動チューニング手段は、特定のサーバ装置あるいはサーバ装置群に対するコネクション数が現在の最大コネクション数に達しても、同サーバ装置あるいはサーバ装置群の単位時間あたりの要求処理数が低下しない場合は、該サーバ装置あるいはサーバ装置群の最大コネクション数をある範囲内で増加させ、最大コネクション数設定値付近では、要求処理数が減少傾向にある場合は、同最大コネクション数値を減少させる。
【００４１】
以上の構成により、待ち時間や利用回数に応じて、優先度を一時的に上げたり、一旦、処理を開始したら、一定期間、優先度を高く処理したりすることが可能となる。その結果、ある程度以上待てば、比較的迅速なサービスを受けることが可能となり、不確定な長いサービス待ちや、不確定な長い待ちに起因する利用者の再実行操作を抑止できる。
【００４２】
【発明の実施の形態】
以下、本発明の実施例を図を用いて説明する。
【００４３】
図1は、本実施例のデータ通信装置を使ったシステムのシステム構成図である。
【００４４】
本実施例では、各クライアント装置(1)と各サーバ装置(2)は、１台以上のデータ通信中継装置(3)を介して通信路(4)で接続した構成をとる。データ通信中継装置(3)は、クライアント装置(1)とサーバ装置(2)間のデータ通信を中継する。すなわち、クライアント装置(1)からサーバ装置(2)へのサービス要求(50)は、必ず、１つ以上のデータ通信中継装置(3)を介して送られ、サーバ装置(2)からクライアント装置(1)への応答(60)も、データ通信中継装置(3)を介して行われる。なお、ここでいう通信路(4)とは、必ずしも物理的な通信回線に一致する必要はなく、物理的な通信回線上で実現された論理的な通信経路であってよい。
【００４５】
図２は、本実施例に関わるクライアント装置(1)、サーバ装置(2)、データ通信中継装置(3)、各装置の物理的な一構成例を示す。これらの装置は、図２に示すとおり、物理的には一般的な情報処理装置でよい。具体的には、各装置情報処理装置は、例えば、プロセッサ(91)、メモリ(92)、外部記憶機構(93)、通信機構(94)、オペレータ入出力機構(95)がバスなどの内部通信線(96)で接続した形で構成する。プロセッサ(91)は、メモリ(92)に格納された情報処理プログラム(100)を実行する。メモリ(92)は、情報処理プログラム(100)以外にも、情報処理プログラム(100)から参照される各種データも保持する。
【００４６】
外部記憶機構(93)は、情報処理プログラム(100)や各種データを不揮発な形で保持する。プロセッセ(91)上で実行される情報処理プログラム(100)は、外部記憶機構(93)に指示し、必要なプログラムやデータをメモリ(92)にロードしたり、逆に、メモリ(92)上のプログラムやデータを外部記憶機構(93)に格納させる。プログラムは、予め外部記憶機構(93)に格納されていても良い。または必要に応じて、可搬型記憶媒体や通信媒体を介して、外部の装置から導入されても良い。
【００４７】
通信機構(94)は、通信回線(97)に接続し、情報処理プログラム(100)の指示により、他の情報処理装置や通信機器にデータを送信したり、逆に、他の情報処理装置や通信機器から、データを受信して、メモリ(92)に格納する。装置間の論理的な通信路(4)は、本通信機構(94)を介し、物理的な通信回線(97)を通して実現される。
【００４８】
オペレータ入出力機構(95)は、文字通り、オペレータとのデータ入出力を行う。内部通信線(96)は、プロセッサ(91)、メモリ(92)、外部記憶機構(93)、通信機構(94)、オペレータ入出力機構(95)が互いに通信を行うためのものであって、たとえばバスで構成する。
【００４９】
クライアント装置(1)、サーバ装置(2)、データ通信中継装置(3)は、必ずしも物理的に異なった構成にする必要はなく、それぞれの機能の違いは、各装置上で実行する情報処理プログラム(100)で実現する形でよい。
【００５０】
以下では、実施例を説明する際、処理部という言葉で、本実施例中の構成要素を説明するが、各処理部は、論理的な構成を示すものであり、物理的機構で実現しても、情報処理プログラム(100)で実現された一機能であってもいずれでもよい。また、クライアント装置(1)、サーバ装置(2)、データ通信中継装置(3)も、それぞれ独立した物理的な装置である必要はなく、１つの装置が、クライアント装置(1)、サーバ装置(2)、データ通信中継装置(3)の複数の装置の機能を同時に実現していてもよい。
【００５１】
図３は、本実施例のデータ通信中継装置(3)の一構成図である。
【００５２】
本実施例のデータ通信中継装置(3)は、コネクション中継を行うコネクション中継処理部(11)、データ通信を中継するデータ中継処理部(12)に加え、コネクション管理処理部(13)、要求キューイング処理部(14)、優先度マッピング処理部(15)、及び、コネクション管理テーブル(16)を備える。
【００５３】
図４は、本実施例のコネクション管理テーブル(16)の一構成例を示す。コネクション管理テーブル(16)は、宛先フィールド(21)をキーとしたテーブルで、同宛先フィールド(21)で示された特定の宛先のサーバ装置またはサーバ装置群へのコネクションの管理や、要求のキューイングのために使用する。本実施例の同コネクション管理テーブル(16)の各エントリー(20)は、宛先フィールド(21)の他、中継先フィールド(22)、最大コネクション数フィールド(23)、コネクション数フィールド(24)、最大キューイング数フィールド(25)、最大待ち時間フィールド(26)、最大待ち数フィールド(27)、要求キュー(28)を含む。また、オプションとして、後述する優先度トークン情報の更新条件を示す優先度トークン更新条件情報(29)も含む。
【００５４】
宛先フィールド(21)は、コネクション管理対象の宛先を指定するためのフィールドで、宛先のサーバ装置またはサーバ装置群のシンボリックなホスト名またはドメイン名、あるいは、ＩＰアドレスまたはＩＰセグメントアドレス等の情報を保持する。中継先フィールド(22)は、宛先フィールド(21)で示された管理対象の宛先への要求の中継先を示す。最大コネクション数フィールド(23)とコネクション数フィールド(24)は、同管理対象の宛先に対して同時に確立可能な最大コネクション数と、現在確立されているコネクション数を保持する。最大コネクション数フィールド(23)で示された値を超えた同管理対象の宛先に対する要求は、要求キュー(28)にキューイングして処理する。最大キューイング数フィールド(25)、最大待ち時間フィールド(26)、最大待ち数フィールド(27)は、要求キュー(28)への要求のキューイング処理に関するパラメータで、最大キューイング数フィールド(25)は、同管理対象の宛先に対するキューイング可能な最大要求数を、最大待ち時間フィールド(26)は、後から到着した優先要求による追い越し待ち時間の最大値を、最大待ち数フィールド(27)は、後から到着した優先要求による追い越し待ち数の最大値を保持する。
【００５５】
コネクション中継処理部(11)は、クライアント装置(1)とサーバ装置(2)のコネクションを中継する。コネクション中継処理部(11)は、まず、クライアント装置(1)からのサービス要求(50)を受けて、クライアント装置(1)とのコネクションを確立する。そして、要求(50)に含まれる宛先情報(51)に従い、宛先のサーバ装置(2)に対してコネクションを確立し、コネクションを中継する。その際、コネクション管理テーブル(16)を参照し、宛先情報(51)で示された宛先に対応するエントリー(20)が存在する場合は、同エントリー(20)の中継先フィールド(22)の情報に従って中継先を変え、宛先のサーバ装置(2)、別のサーバ装置(2)、または、別のデータ中継装置(3)にコネクションを中継する。
【００５６】
データ中継処理部(12)は、クライアント装置(1)、サーバ装置(2)間のデータ通信を中継する。データ中継処理部(12)は、コネクション中継処理部(11)により確立されたコネクションを使用し、クライアント装置(1)から受信した要求(50)をサーバ装置(2)に中継する。そして、サーバ装置(2)からの受信した応答(60)をクライアント装置(1)に中継する。なお、その際、必要に応じて、優先度マッピング処理部(15)により得られた要求(50)の処理優先度(59)に対応した優先度情報を中継するデータのIPパケットに設定し、データを中継する。
【００５７】
コネクション管理処理部(13)は、コネクション中継処理部(11)により確立したコネクションの状態を監視し、特定のサーバ装置またはサーバ装置群に対しては、上記コネクション管理テーブル(16)のコネクション数フィールドに、現在確立しているコネクション数を管理する。
【００５８】
また、コネクション管理処理部(13)は、オペレータからの指示を受け、コネクション管理テーブル(16)のエントリー(20)の登録、初期設定も行う。具体的には、宛先フィールド(21)、中継先フィールド(22)、最大コネクション数フィールド(23)、最大キューイング数フィールド(25)、最大待ち時間フィールド(26)、最大待ち数フィールド(27)、優先度トークン更新条件情報(29)の各情報を指定してコネクション管理テーブルエントリー(20)の登録要求をオペレータから受け、コネクション管理処理部(13)は、新たなコネクション管理テーブルエントリー(20)を生成し、指定された各フィールドの情報を設定すると共に、コネクション数フィールド(24)を０で初期化し、要求キュー(28)は空の状態に初期化する。
【００５９】
要求キューイング処理部(14)は、コネクション管理テーブルエントリー(20)で指定された特定のサーバ装置またはサーバ装置群への要求に対して、同要求をキューイングし、同サーバ装置またはサーバ装置群への同時コネクション数を同エントリー(20)の最大コネクション数フィールド(23)の値以下に押さえる。具体的には、上記コネクション管理テーブル(16)に要求(50)の宛先に対応するエントリー(20)がある場合、要求キューイング処理部(14)は、同エントリー(20)のコネクション数フィールド(24)の値が、同エントリー(20)の最大コネクション数フィールド(23)の値に達しているかどうかチェックし、もし、最大コネクション数フィールド(23)の値に達していれば、すぐには同要求(50)は中継せず、一旦要求キュー(28)にキューイングする。そして、同サーバ装置またはサーバ装置群へのある要求処理が終了してコネクションが切断した後で、要求キュー(28)から順次を取出し、要求(50)を中継する。
【００６０】
優先度マッピング処理部(15)は、要求元のクライアント装置(1)のアドレス、宛先のサーバ装置(2)のアドレスや、要求(50)と一緒に提供される情報をもとに、各要求(50)の処理優先度(59)を決定する。
【００６１】
図５は、本実施例のデータ通信中継装置(3)での中継処理の流れを示す処理フロー図である。
【００６２】
まず、クライアント装置(1)が、データ通信中継装置(3)経由で宛先サーバ装置(2)へのコネクション確立を要求する。(処理1001)。
【００６３】
なお、データ通信中継装置(3)経由での要求を、クライアント装置(1)自身が意識してデータ通信中継装置(3)宛で出す形でも、また、クライアント装置(1)は意識せず、データ通信を中継するルータ等が、宛先サーバ装置(2)宛の要求をデータ通信中継装置(3)に転送する形のどちらでもよい。
【００６４】
クライアント装置(1)からのコネクション確立要求を受信すると、データ通信中継装置(3)のコネクション中継処理部(11)は、同クライアント装置(1)とのコネクションを確立する。(処理1002)
コネクションが確立すると、クライアント装置(1)は、サーバ装置(2)宛の要求(50)を、同コネクションを使ってデータ通信中継装置(3)に送信する。(処理1003)
データ通信中継装置(3)のコネクション中継処理部(11)は、要求(50)を受信し、同要求(50)に含まれる宛先情報(51)を取出す。(処理1004)
次に、コネクション中継処理部(11)は、優先度マッピング処理部(15)に受信した要求(50)を渡し、優先度マッピング処理部(15)が、要求元のクライアント装置(1)のアドレス、宛先のサーバ装置(2)のアドレスや、要求(50)と一緒に提供される情報をもとに、各要求(50)の処理優先度(59)を決定する。(処理1005)
次に、コネクション中継処理部(11)は、要求キューイング処理部(14)に要求(50)、宛先情報(51)及び要求の処理優先度(59)を渡し、同要求キューイング処理部(14)に、同要求の中継が可能となるまで、同要求(50)のキューイングを依頼する。(処理1006)
依頼された要求キューイング処理部(14)は、コネクション管理テーブル(16)を参照し、必要に応じて同要求(50)を対応するコネクション管理テーブルエントリー(20)の要求キュー(28)にキューイングし、中継可能となった段階で、中継可能となった要求(50)および宛先情報(51)と、同宛先に対応するコネクション管理テーブルエントリー(20)とをコネクション中継処理部(11)に返す。(処理1007)
コネクション中継処理部(11)は、コネクション管理処理部(13)に依頼し、宛先に対応するコネクション管理テーブルエントリー(20)が存在する場合、同エントリー(20)のコネクション数フィールド(24)の値を１増加させる。(処理1008)
その後、コネクション中継処理部(11)は、宛先に対応するコネクション管理テーブルエントリー(20)があれば、同管理テーブルエントリー(20)の中継先フィールド(22)で示された宛先アドレスに、なければ、宛先情報(51)で示された宛先アドレスに対して、コネクションを確立する。(処理1009)なお、相手の宛先サーバ装置(2)あるいは中継先の装置も、データ通信中継装置(3)からのコネクション確立要求を受け、データ通信中継装置(3)とのコネクションを確立する。
【００６５】
次に、データ中継処理部(12)に制御が移り、処理1009で確立したコネクションを使って、データ中継処理部(12)が、要求(50)を宛先サーバ装置(2)に中継する。なお、その際、必要に応じて、処理優先度(59)に対応した優先度情報を中継するデータのIPパケットに設定し、データを中継する。(処理1010)
要求(50)を受けたサーバ装置(2)は、同要求(50)を処理し、処理1009で確立したコネクションを使って応答(60)を返す。(処理1011)
データ通信中継装置(3)は、データ中継処理部(12)が応答(60)を受信し、受信した応答(60)を処理1002で確立したコネクションを使って、クライアント装置(1)に中継する。なお、その際、必要に応じて、処理優先度(59)に対応した優先度情報を中継するデータのIPパケットに設定し、データを中継する。(処理1012)
クライアント装置(1)は、応答(60)を受信し、受信した応答(60)の表示等を行う。(処理1013)
応答(60)の送信を終えると、サーバ装置(2)が、処理1009で確立したコネクションを切断する。(処理1014)
サーバ装置(2)のコネクション切断を受け、データ通信中継装置(3)のデータ中継処理部(12)は、コネクション中継処理部(11)に制御を戻し、コネクション中継処理部(11)が処理1009で確立したコネクションの切断処理を行い、クライアント装置(1)への応答中継も終了すると、処理1002で確立したコネクションも切断する。(処理1015)
さらに、データ通信中継装置(3)は、処理1009で確立したコネクションに対応するコネクション管理テーブルエントリー(20)が存在する場合、コネクション中継処理部(11)がコネクション管理処理部(13)に制御を渡し、コネクション管理処理部(13)が、同管理テーブルエントリー(20)のコネクション数フィールド(24)の値を１減少させ、かつ、要求キューイング処理部(14)にコネクション減少のイベントを伝える。(処理1016)
コネクション減少のイベントを受けた要求キューイング処理部(14)は、減少したコネクションに対応したコネクション管理テーブルエントリー(20)の要求キュー(28)に別の要求(50)がキューイングされている場合は、同要求(50)を要求キュー(28)から取出し、処理1007でキューイングされ、待ち状態となっていた同要求(50)の処理を再開する。(処理1017)
一方、処理1015によるコネクション切断を受け、クライアント装置(1)もコネクションの切断処理を行い、要求処理の終了処理を行う。(処理1018)
図６は、図５の処理1007の要求キューイング処理部(14)による要求キューイング処理の一実施例の処理フロー図である。
【００６６】
要求キューイング処理部(14)は、コネクション中継処理部(11)から、要求(50)および宛先情報(51)受けると、まず、コネクション管理テーブル(16)を検索し、宛先に対応したコネクション管理テーブルエントリー(20)が存在するかどうかをチェックする。具体的には、宛先情報(51)と、コネクション管理テーブル(16)の各エントリー(20)の宛先フィールド(21)とを比較し、宛先情報(51)で示された宛先が、宛先フィールド(21)で示されたサーバ装置またはサーバ装置群の宛先に含まれるエントリー(20)があるかどうか調べる。(処理1021)。
【００６７】
その結果、対応するコネクション管理テーブルエントリー(20)が存在しなかった場合は、すぐに同要求(50)の中継が可能として、同要求(50)、宛先情報(51)と、対応するエントリーがないことをコネクション中継処理部(11)に返し、コネクション中継処理を実行する。(処理1022)
対応するコネクション管理テーブルエントリー(20)が存在した場合は、同エントリー(20)のコネクション数フィールド(24)の値と最大コネクション数フィールド(23)の値を比較する。(処理1023)
その結果、コネクション数フィールド(24)の値が最大コネクション数フィールド(23)の値未満の場合は、すぐに同要求(50)の中継が可能として、同要求(50)と宛先情報(51)を同エントリー(20)と共に、コネクション中継処理部(11)に返し、コネクション中継処理を実行する。(処理1024)
コネクション数フィールド(24)の値が最大コネクション数フィールド(23)の値以上の場合は、同エントリー(20)の要求キュー(28)に要求(50)及び宛先情報(51)をキューイングし、同エントリー(20)に対応した宛先群宛のコネクションの減少イベントによって、図５の処理1017により同要求(50)が要求キュー(28)から取出されるまで、同要求(50)の中継を待たせる。(処理1025)
あるサーバ装置とのコネクションが切断されると、図５の処理1017で、同コネクションに対応するコネクション管理テーブルエントリー(20)の要求キュー(28)から要求(50)を取出し、取出した要求(50)と宛先情報(51)を同エントリー(20)と共に、コネクション中継処理部(11)に返し、コネクション中継処理を実行する。(処理1026)
図７は、この優先度キューを実現した本実施例のコネクション管理テーブルの要求キューの一構成図を示す。図４のコネクション管理テーブル(16)の要求キュー(28)は、1本の先入れ先だしキューで構成してもよいが、図７では、複数の先入れ先だしキューを使用し、優先度に従った、キューイングを実現する。すなわち、優先度マッピング処理部(15)が各要求(50)に対して設定した１〜ｎの処理優先度(59)に従い、要求キューイング処理部(14)が、優先度別のキューイングを行い、優先度順にキューから取りだして、優先度の高い順に要求を処理する。また、図７の実施例では、優先度が低い要求が、後から到着した優先度の高い要求により次々と追い越され、いつまでもサービスされないような状況を防ぐ機能(沈み込み防止機能)も実現する。
【００６８】
図７の実施例の要求キュー(28)は、概念的には、ｎ個の優先度キュー(30-1〜30-n)と、１つの全体キュー(39)で構成する。優先度キュー(30-1〜30-n)は、各要求(50)の優先度１〜ｎに対応したキューであり、一方、全体キュー(39)は、現在優先度キューにキューイングされているすべての要求を到着順にキューイングしたキューである。要求(50)をキューイングする際には、各要求(50)を同要求(50)の優先度に対応した優先度キュー(30)の最後尾に繋ぐと共に、全体キュー(39)の最後尾にも同要求(50)を繋ぐ。
【００６９】
図７の実施例では、キューへの挿入、キューからの削除を容易とするため、優先度キュー(30-1〜30-n)、全体キュー(39)は、いずれも、ダブルリンクリストでキューを管理する。具体的には、優先度キュー(30-1〜30-n)、全体キュー(39)のそれぞれの先頭、及び、最後尾を押さえるため、各優先度キューの先頭ポインター(31-1〜31-n)と最後尾ポインター(32-1〜32-n)、全体キューの先頭ポインター(33)と最後尾ポインター(34)を設けると共に、キューイングした各要求エントリー(40)には、優先度キューの次エントリーポインター(41)、前エントリーポインター(42)、全体キューの次エントリーポインター(43)、前エントリーポインター(44)を設け、優先度キュー、全体キューそれぞれの前後の要求エントリー(40)をポイントする形とする。これらのポインターは、ポイントする要求エントリー(40)がない場合は、ポイントするエントリーがないことが分かる値NULLを設定する。また、現在キューイング数フィールド(35)設け、全体キュー(39)にキューイングされている要求エントリー(40)の総数を保持する。一方、各要求エントリー(40)には、さらに、キューイングした要求(50)をポイントする要求ポインター(45)、要求の宛先情報(51)をポイントする宛先情報ポインター(46)を保持する他、本実施例では、キューイングした時刻を示すキューイング時刻情報(47)を保持する。さらに、本実施例では、各要求エントリー(40)に、他の要求に追い越された数を保持した待ち数情報(48)も保持する。
【００７０】
図８、図９に、図７の要求キューを使った、処理1025でのキューイング処理のフローと、処理1026での要求キューからの取出し処理のフローをそれぞれ示す。
【００７１】
図８のキューイング処理では、まず、要求キュー(28)の現在キューイング数フィールド(35)をチェックし、コネクション管理テーブルエントリー(20)の最大キューイング数フィールド(25)の値未満かどうか調べる。(処理1031)
最大キューイング数フィールド(25)の値以上の場合は、現在輻輳状態でサービスができないというエラーを、処理1002で確立したコネクションを使ってクライアント装置(1)に返し、同コネクションを切断し、同要求(50)に対するデータ通信中継装置(3)の処理を終了する。(処理1032)
最大キューイング数フィールド(25)の値未満の場合は、新たな要求エントリー(40)を生成し、コネクション管理処理部(13)が渡された要求(50)、宛先情報(51)等を元に、同エントリーの各フィールドを初期設定する。具体的には、要求(50)、宛先情報(51)を要求ポインター(45)、宛先情報ポインター(46)に設定すると共に、現在時刻をキューイング時刻(47)に設定し、待ち数情報(48)を０で初期化する。(処理1033)
次に、生成した同要求エントリー(40)を同要求(50)の処理優先度(59)値mに対応した優先度キュー(30-m)の最後尾ポインター(32-m)で指された最後尾に繋ぎ、同優先度キュー(30-m)の先頭ポインター(31-m)、最後尾ポインター(32-m)及び、同要求エントリー(40)の優先キュー用の次エントリーポインター(41)、前エントリーポインター(42)を正しく設定する。(処理1034)
さらに、生成した同要求エントリー(40)を全体キュー(39)の最後尾ポインター(34)で指された最後尾に繋ぎ、全体キュー(39)の先頭ポインター(33)、最後尾ポインター(34)及び、同要求エントリー(40)の全体キュー用の次エントリーポインター(43)、前エントリーポインター(44)を正しく設定する。(処理1035)
最後に、現在キューイング数フィールド(35)の値を１増やし、キューイング処理を終了する。(処理1036)
一方、図９の要求キューからの要求の取出し処理では、まず、対応するコネクション管理テーブルエントリー(20)の現在キューイング数フィールド(35)をチェックし、０かどうか調べる。(処理1041)
現在キューイング数フィールド(35)の値が０の場合は、キューイングされている要求はないので、要求の取りだし処理を終了する。
【００７２】
現在キューイング数フィールド(35)の値が０以外の場合は、予めシステムで決められた優先度h以上の優先度キュー(30-h〜30-n)に要求エントリー(40)があるかどうか調べる。(処理1042)
もし、対応する要求エントリー(40)あれば、処理1046に飛ぶ。
【００７３】
なければ、全体キューの先頭ポインター(33)で指された要求エントリー(40)のキューイング時刻情報(47)と現在時刻の差分から待ち時間を計算する。(処理1043)
次に、待ち時間と最大待ち時間フィールド(26)の値を比較する。(処理1044)
待ち時間が最大待ち時間フィールド(26)の値を超えている場合は、処理1049に飛ぶ。
【００７４】
待ち時間が最大待ち時間フィールド(26)の値未満の場合は、同要求エントリー(40)の待ち数情報(48)と最大待ち数フィールド(27)の値とを比較する。(処理1045)
同要求エントリー(40)の待ち数情報(48)の値の方が大きい場合は、処理1049に飛ぶ。
【００７５】
そうでない場合は、処理1046に進む。
【００７６】
処理1046として、優先度キュー(30-1〜30-n)の先頭ポインター(31-1〜31-n)をチェックし、優先度が最も高い要求エントリー(40)を対象エントリーする。(処理1046)
得られた対象エントリーと、全体キューの先頭ポインター(33)で指された要求エントリー(40)が等しいかどうかチェックし、等しければ、処理1051に飛ぶ。(処理1047)
等しくなければ、全体キューの先頭ポインター(33)で指された要求エントリー(40)の待ち数情報(48)の値を１増やし、処理1051に飛ぶ。(処理1048)
全体キュー(39)の先頭エントリー(40)の待ち時間、待ち数が上限値を超えている場合は、同エントリーを対象エントリーとして、処理１051に飛ぶ。(処理1049)
処理1051として、上記処理で得られた対象要求エントリー(40)を対応する優先キュー(30-m)から抜き出し、同優先度キュー(30-m)の先頭ポインター(31-m)、最後尾ポインター(32-m)及び、同要求エントリー(40)の優先キュー用の次エントリーポインター(41)、前エントリーポインター(42)を正しく更新する。(処理1051)同様に、対象要求エントリー(40)を全体キュー(39)から抜き出し、全体キュー(39)の先頭ポインター(33)、最後尾ポインター(34)及び、同要求エントリー(40)の全体キュー用の次エントリーポインター(43)、前エントリーポインター(44)を正しく更新する。さらに、現在キューイング数フィールド(35)の値を１減らし、要求キューからの要求の取りだし処理を終了する。(処理1052)
図３〜図９の実施例によれば、宛先毎に、同時要求処理数を制限すると共に、優先度の高い要求を先に処理することができるという効果がある。また、優先度の低い要求であっても、ある時間以上待ったり、ある回数以上追い越されたら、優先度の高い要求があっても、処理されるという効果がある。さらに、ある一定以上の優先度を持つ要求は、待ち時間の長い、あるいは、待ち回数多い他の要求があっても、常に、優先度順に処理されるという効果がある。
【００７７】
上記図４、図６の実施例では、簡単のため要求の宛先に対応したコネクション管理テーブルエントリー(20)は、高々１つという前提の例を示したが、複数のエントリーが対応する場合の実施例を以下に示す。
【００７８】
図１０は、本実施例のコネクション管理テーブル(16)の別の一構成図を示す。本実施例では、図４の実施例に加え、各エントリー(20)に、適用優先度情報フィールド(201)と適用順序情報フィールド(202)が追加されている。
【００７９】
適用優先度情報フィールド(201)は、要求の処理優先度(59)により、適用可能なコネクション管理テーブルエントリー(20)を限定するためのフィールドで、適用優先度情報フィールド(201)の指定が、要求の処理優先度(59)の値を含むエントリー(20)のみを適用対象とする。
【００８０】
適用順序情報フィールド(202)は、エントリー間の選択順序を表すフィールドで、要求の宛先に対応するコネクション管理テーブルエントリー(20)があった場合、本フィールドの値が最も大きいエントリーを選択する。
【００８１】
図１１は、図１０のコネクション管理テーブル(16)を使用した場合の、図６の処理1021での要求の宛先に対応したコネクション管理テーブルエントリー(20)の検索処理フロー図を示す。
【００８２】
まず、見付かったコネクション管理テーブルエントリーをポイントする変数foundになしを示す値NULLを設定する。(処理1061)
次に、コネクション管理テーブル(16)から、1ずつ順にコネクションテーブルエントリー(20)を取り出す。(処理1062)
コネクション管理テーブル(16)のすべてのエントリーをチェックし終えたら、処理1069に飛ぶ。(処理1063)
次に、要求の宛先情報(51)で示された宛先が、取出したエントリー(20)の宛先フィールド(21)で示す宛先に含まれるかどうか調べる。(処理1064)
含まれなければ、処理1062に戻る。
【００８３】
含まれれば、同エントリー(20)の適用優先度情報フィールド(201)の値が要求の処理優先度(59)の値を含むかどうかチェックする。(処理1065)
もし、要求の処理優先度(59)の値を含まない場合は、適用対象外なので、処理1062に戻る。
【００８４】
次に、foundをチェックし、foundがNULLであれば、処理1068に飛ぶ。(処理1066)
処理1062で取出したエントリー(20)とfoundでポイントされたエントリー(20)の適用順序情報フィールド(202)の値を比べる。(処理1067)
もし、foundでポイントされたエントリーの適用順序情報フィールド(202)の値の方が大きければ、処理1062に戻る。
【００８５】
処理1062で取出したエントリー(20)を新たに選択したエントリーとして、foundからポイントするように変更し、処理1062に戻る。(処理1068)
上記処理の結果として、変数foundでポイントされたコネクション管理テーブルエントリー(20)を検索結果の対応するエントリーとして、検索処理を終了する。(処理1069)
本実施例によれば、処理優先度毎に別の通信路を選択したり、宛先群と個別の宛先用の定義の両方を使用することで、少ない数のコネクション管理エントリーで、複雑な定義が可能である。
【００８６】
以上の実施例では、コネクション管理テーブルエントリー(20)に最大コネクション数(23)と現在のコネクション数(24)を管理し、ある宛先へのコネクション数により、要求キュー(28)へのキューイングを制御する例を示したが、さらに、優先度キュー毎の最大コネクション数と現在のコネクション数をコネクション管理テーブルエントリー(20)に管理し、優先度毎のコネクション数によっても制御するように構成してもよい。
【００８７】
優先度毎のコネクション数によっても制御する方法では、コネクション増減時の処理1008、処理1016において、コネクション数フィールド(24)を増減するだけでなく、コネクション管理テーブルエントリー(20)にて新たに管理する処理優先度毎の現在コネクション数情報についても、要求の処理優先度(59)に対応して増減する。
【００８８】
また、キューイング判定の処理1023においては、コネクション管理テーブルエントリー(20)のフィールド(23)、(24)の比較だけでなく、新設する優先度毎の最大コネクション数、現在コネクション数情報に対しても同様の比較を行い、いずれか一方の条件が満たされれば要求をキューイングする。
【００８９】
さらに、要求キュー(28)からの要求の取りだしの際には、優先度毎の現在コネクション数が、優先度毎の最大コネクション数未満である優先度キューの要求エントリー(40)のみを取りだしの対象とする。図９の処理フローでは、処理1042の前に、全体キュー(39)の先頭エントリー(40)をチェックし、同エントリー(40)が上記条件を満足していない場合、処理1046に進み、優先度キューをサーチして要求取りだしを行う。また、処理1042、処理1046での優先度キュー上のエントリー(40)のチェックの際にも、同エントリー(40)が、上記条件を満足しない場合は、スキップして、他の優先度キューを探す処理を行う。
【００９０】
次に、優先度マッピング処理部(15)による要求の処理優先度(59)の設定方法について説明する。
【００９１】
図１２は、クライアント装置(1)のアドレスと宛先サーバ装置のアドレスから、処理優先度(59)を求めるという実施例で使用するアドレス・処理優先度変換テーブル(110)の構成例を示す。本実施例のアドレス・処理優先度変換テーブル(110)は、クライアントアドレスフィールド(111)、サーバアドレスフィールド(112)、処理優先度フィールド(113)から構成する。クライアントアドレスフィールド(111)、サーバアドレスフィールド(112)は、それぞれ、要求したクライアント装置(1)のアドレス、要求の宛先サーバ装置(2)のアドレスを示すフィールドで、具体的なアドレスのほか、＊により、任意のアドレスを表すワイルドカード指定も可能とする。また、処理優先度フィールド(113)は、クライアントアドレスフィールド(111)、サーバアドレスフィールド(112)のペアにマッチングする要求に対して、割り当てる処理優先度値を表す。
【００９２】
優先度マッピング処理部(15)は、本アドレス・処理優先度変換テーブル(110)を使用し、要求したクライアント装置のアドレスと、要求(50)の宛先情報(51)からマッチするエントリーを見つけ、その処理優先度フィールド(113)の値を使って、処理優先度(59)を求める。
【００９３】
本実施例によれば、要求元や宛先依存した処理優先度設定が可能である。
【００９４】
図１３、図１４は、別の実施例として、利用者の認証情報から、処理優先度を求める実施例を示す。図１３は、同実施例でのクライアント装置(1)からの要求(50)の構成例を示す。
【００９５】
本実施例では、宛先情報(51)に加え、利用者の認証情報(52)が追加されている。
【００９６】
一方、図１４は、利用者の認証情報(52)から、処理優先度(59)を求めるための利用者・処理優先度変換テーブル(120)の一構成例を示す。本実施例の利用者・処理優先度変換テーブル(120)は、利用者認証情報フィールド(121)、処理優先度フィールド(122)から構成する。優先度マッピング処理部(15)は、本利用者・処理優先度変換テーブル(120)を使用し、要求(50)に含まれる利用者の認証情報(52)から、利用者認証情報フィールド(121)が同認証情報(52)に一致するエントリーを見つけ出し、同エントリーの処理優先度フィールド(122)の値を使って、処理優先度(59)を求める。
【００９７】
本実施例によれば、利用者毎に処理優先度の設定が可能である。
【００９８】
要求の処理優先度設定の別の実施例としては、要求(50)に処理優先度情報を含んだ優先度トークン情報(53)を用いる方法がある。
【００９９】
図１５は、同優先度トークン情報(53)を使った実施例の、要求(50)の一構成例を示す。本実施例では、従来の要求(50)に対し、処理優先度情報(531)、同処理優先度を適用する宛先のサーバ装置またはサーバ装置群のアドレスを示す宛先アドレス情報(532)、同処理優先度の適用有効期間を表す有効期間情報(533)が含まれる優先度トークン情報(53)を追加した形で要求を構成する。本優先度トークン情報(53)は、まず、データ通信中継装置(3)が同優先度トークン情報(53)を含んだ応答(60)をクライアント装置(1)に返信し、同応答(60)を受けたクライアント装置(1)が同優先度トークン情報(53)を記憶し、同一の宛先に要求を出す際に、クライアント装置(1)が、同優先度トークン情報(53)を要求(50)に付加して出す。同優先度トークン情報(53)は、例えば暗号化し、クライアント装置(1)では、改ざんできないようにする。
【０１００】
図１６は、本優先度トークン情報(53)を使ったシステムの一構成図を示す。本実施例では、データ通信中継装置(3)は、優先度マッピング処理部(15)の一部として、優先度トークン解釈処理部(151)と、優先度トークン生成・更新処理部(152)と、優先度トークン返送処理部(153)を備える。一方、クライアント装置(1)には、優先度トークン情報の記憶・送出処理部(71)を備える。優先度トークン情報の記憶・送出処理部(71)は、WebのCookie機能と同様に、データ通信中継装置(3)から返ってきた優先度トークン情報(53)を宛先対応に記憶し、要求(50)をデータ通信中継装置(3)に送信する際に、要求の宛先に対応して記憶している優先度トークン情報(53)を付加して送信する。
【０１０１】
例えば、具体的な一例として、Webページアクセスでは、Cookieを用いて優先度トークン情報をクライアント装置(1)とデータ通信中継装置(3)の間でやりとりする方法がある。クライアント装置(1)は、宛先となるサーバ装置(2)に対応したCookieと呼ばれる情報を持っていれば、データ通信中継装置(3)に対してコネクションを確立した後、当該Cookieを付けて、以下のような形で要求データ（HTTPヘッダ）を送信する。
【０１０２】
GET  http://xxx/yyy/zzz HTTP/1.1
Cookie: 優先度トークン情報＋サーバのCookie情報
上記Cookieは、本要求以前の要求に対する応答として、データ通信中継装置(3)が、クライアント装置(1)に送信した情報であり、本実施例では、優先度トークン情報と、宛先のサーバ装置(2)から返ってきたCookie情報があれば、同サーバのCookie情報も含む。
【０１０３】
データ通信中継装置(3)は、クライアント装置(1)とコネクションを確立した後、上記データを受け取り、上記Cookie中の優先度トークン情報を解釈し、この情報を優先度に変換する。その後、同優先度に従い、要求をキューイングした後、サーバへの要求が可能となったところで、サーバにコネクションを中継し、受信したCookieヘッダの中から当該データ通信中継装置向けである優先度トークン情報(53)を取り除き、サーバのCookie情報を含んだ要求をサーバ装置(2)に転送する。サーバのCookie情報がなければ、Cookieヘッダを取り除いて、転送する。
【０１０４】
また、応答を返す際には、下記のように、応答のHTTPヘッダの中に、Set-Cookieを使ってサーバ装置(2)が返してきたサーバのCookie情報に対して、さらに宛先に対応した優先度トークン情報(53)をデータ通信中継(3)が付加してクライアント装置(1)に返す。
【０１０５】
HTTP/1.1  OK
Set-Cookie:  宛先＝優先度トークン情報＋サーバのCookie情報
Content-Length:  nnn
コンテンツボディ
サーバ装置(2)から応答に、Set-CookieヘッダによるサーバのCookie情報がない場合は、宛先に対応した優先度トークン情報(53)を含むSet-Cookieヘッダを、データ通信中継(3)が付加し、クライアント装置(1)に返す。
【０１０６】
また、オプションとして、サーバ装置(2)には、データ通信中継装置(3)での優先度トークン生成・更新処理部(151)の動作を制御するための優先度トークン制御処理部(72)を備える。優先度トークン制御処理部(72)は、要求(50)に対する処理結果の応答(60)に優先度トークン制御情報(69)を付加して返すことで、データ通信中継装置(3)での優先度トークン生成・更新処理部(151)の動作を制御する。
【０１０７】
図１７は、優先度トークン情報(53)を使った要求処理のフローを示す。
【０１０８】
まず、クライアント装置(1)が処理1001,1002を経て、処理1003にて要求(50)をデータ通信中継装置(3)に送信する際、優先度トークン情報の記憶・送出処理部(71)が、要求(50)を宛先に対応した優先度トークン情報(53)が記憶されているかどうかをチェックする。(処理1071)
対応した優先度トークン情報(53)があれば、同優先度トークン情報(53)を要求(50)に付加して送信する。(処理1072)
対応した優先度トークン情報(53)がなければ、要求(50)をそのまま、送信する。(処理1073)
データ通信中継装置(3)は、処理1004で要求(50)を受信し、処理1005で処理優先度(59)を決定する際、優先度マッピング処理部(15)の優先度トークン解釈処理部(151)が、クライアント装置(1)からの要求(50)に優先度トークン情報(53)に付加されているかどうかチェックする。(処理１074)
優先度トークン情報(53)が付加されていない場合は、優先度トークン解釈処理部(151)が、図１２、１３、１４の実施例等の方法により、その他の情報を用いて処理優先度(59)を決定し、処理1079に飛ぶ。(処理１075)
優先度トークン情報(53)が付加されている場合は、優先度トークン解釈処理部(151)が優先度トークン情報(53)の暗号化を解き、要求の宛先情報(51)が、解読した優先度トークン情報(53)の宛先アドレス情報(532)で示された宛先に含まれるかどうかチェックする。(処理1076)
要求の宛先が含まれない場合は、不正要求として、クライアント装置(1)にエラーとして応答するため処理1084に飛ぶ。(処理1077)
要求の宛先が含まれている場合は、優先度トークン情報(53)の処理優先度情報(531)の値を処理優先度(59)とする。(処理1078)
データ通信中継装置(3)は、処理1006〜1010を実行し、要求(50)を宛先サーバ装置(2)に中継する。(処理1079)
要求(50)を受けたサーバ装置(2)は、処理1011にて応答(60)をデータ通信中継装置(3)に返す際、必要に応じて、優先度トークン制御処理部(72)が、優先度トークン情報の生成・更新の可否、優先度アップ・ダウンを指示する優先度トークン制御情報(69)を応答に付加して返送する。(処理1080)
応答(60)を受信したデータ通信中継装置(3)は、処理1012において、応答(60)をクライアント装置(1)に中継する前に、再度、要求(1)に優先度トークン情報(53)が付加されていたかどうかチェックする。(処理1081)
優先度トークン情報(53)が付加されていない場合は、サーバ装置(2)からの優先度トークン制御情報(69)による指示も踏まえ、優先度トークン生成・更新処理部(151)が、ある条件で優先度トークン情報(53)を生成する。(処理1082)
優先度トークン情報(53)が付加されている場合は、サーバ装置(2)からの優先度トークン制御情報(69)による指示も踏まえ、優先度トークン生成・更新処理部(151)が、ある条件で同優先度トークン情報(53)を更新あるいは破棄する。(処理1083)
さらに、処理1012において応答(60)をクライアント装置(1)に中継する際、優先度トークン返送処理部(152)は、優先度トークン生成・更新処理部(131)で生成・更新された優先度トークン情報(53)が存在すれば、同優先度トークン情報(53)を暗号化して、応答(60)に付加してクライアント装置(1)に返す。(処理1084)
応答(60)を受信したクライアント装置(1)は、処理1013において受信した応答(60)の表示等を行うとともに、応答(60)に優先度トークン情報(53)が付加されている場合は、優先度トークン情報の記憶・送出処理部(71)が同優先度トークン情報(53)を宛先と対応付けて記憶する。(処理1085)
最後に、処理1014〜1018のコネクション切断や各種終了処理を実行し、クライアント装置(1)からの本要求の処理を終了する。(処理1086)
図１８は、図１７の処理処理1081〜1083における優先度トークン生成・更新処理部(151)による優先度トークン情報の生成・更新の一処理フローを示す。
【０１０９】
まず、次回の優先度トークン情報(53)next_tokenの、初期値として、処理優先度情報(531)には、図１２、１３、１４の実施例等の方法により要求内の優先度トークン情報以外の情報から求めた処理優先度値を、宛先アドレス情報(532)には、要求(50)の宛先情報(51)を、有効期間情報(533)には、現時刻からある一定期間内有効とする期間情報を設定する。また、優先度トークン情報の更新の要否を表す変数update_tokenに否を表す値"No"を設定する。(処理1091)
次に、要求(50)に対応したコネクション管理テーブルエントリー(20)が存在するかどうかチェックする。(処理1092)
対応するコネクション管理テーブルエントリー(20)が存在しない場合は、処理1109に飛ぶ。
【０１１０】
次に、サーバ装置(2)からの応答(60)に優先度トークン制御情報(69)があり、優先度トークン情報の廃棄指示があるかどうかチェックする。(処理1093)
廃棄指示がある場合は、同様に、処理1109に飛ぶ。
【０１１１】
次に、サーバ装置(2)からの応答(60)に優先度トークン制御情報(69)があり、処理優先度の設定、あるいは、アップ、ダウンの指示があるかどうかチェックする。(処理1094)
設定、アップ・ダウン指示がある場合は、変数update_tokenを"Yes"に設定し、同指示に従い、次回優先度トークン情報(53)next_tokenを設定・更新する。(処理1095)
また、要求キューイング処理部(14)による要求キューイングの処理1032において、本要求処理が、最大キューイング数以上による輻輳エラーとなっていたか、あるいは、応答の受信タイムアウトでエラーとなっていたかどうかチェックする。(処理1096)
輻輳エラーまたは応答受信タイムアウトエラーの場合は、変数update_tokenを"Yes"に設定し、次回の優先度トークン情報(53)next_tokenの処理優先度値(531)の値をより高い優先度値に設定する。また、next_tokenの有効期間情報(533)は、あるブランク期間以降から有効になるようにブランク期間分シフトした値に変更する。(処理1097)
さらに、要求キューイング処理部(14)による要求キューイングの処理1044において、最大待ち時間を超える待ちを検出していたかどうかチェックする。(処理1098)
待ち時間オーバを検出していた場合は、変数update_tokenを"Yes"に設定し、次回の優先度トークン情報(53)next_tokenの処理優先度情報(531)値をより高い優先度値に設定する。(処理1099)
最後に、変数update_tokenの値をチェック。(処理1100)
update_tokenの値が"No"の場合は、処理1109に飛ぶ。
【０１１２】
update_tokenの値が"Yes"の場合は、next_tokenを応答に付加する優先度トークン情報(53)として設定し、優先度トークンの生成・更新処理を終了する。(処理1101)
上記処理で、優先度トークン情報(53)を応答(60)に付加すべきではないと判断した場合は、次回優先度トークン情報(53)next_tokenを廃棄し、優先度トークンの生成・更新処理を終了する。(処理1109)
本実施例によると、長い時間待たせたり、輻輳でエラーを返して不便をかけた利用者に対し、次回優先処理することが可能となる。さらに、輻輳状態の場合、利用者に対し、優先度の高くなる時間を選んで要求することをメッセージで促すことができるので、輻輳状態の早期回復にも効果がある。また、サーバ装置側から優先処理を制御できるという効果がある。
【０１１３】
図１９は、優先度トークン情報(53)の別の構成例を示す。本実施例では、図１５で示した処理優先度情報(531)、宛先アドレス情報(532)、有効期間情報(533)に加え、初期生成時の有効期間の初期開始時刻情報(534)、優先度トークンの更新回数情報(535)、サーバ装置へのコネクション確立回数情報(536)、トータルコネクション待ち時間情報(537)のいずれか、または、組み合わせで構成する。
【０１１４】
図２０は、図１９の優先度トークン情報(53)に対応した、コネクション管理テーブル(16)の構成例を示す。本実施例では、コネクション管理テーブルエントリー(20)の優先度トークン情報の更新条件を示した優先度トークン更新条件情報(29)として、更新可能期間フィールド(291)、最大更新回数フィールド(292)、最大コネクション確立回数フィールド(293)、規定コネクション確立回数フィールド(294)、規定コネクション待ち時間フィールド(295)を含む。これらのフィールドは、それぞれ、優先度トークン情報(53)の最大更新期間、更新可能回数の最大数、優先度トークン情報(53)の更新が許される、サーバ装置(2)との最大コネクション確立回数、優先度トークン情報(53)の処理優先度情報の優先度アップのために最低限必要な、サーバ装置(2)とのコネクション確立回数、コネクション待ち時間情報を表す。
【０１１５】
図２１は、図１９の実施例の優先度トークン情報(53)を用いた場合の、図１７の処理1081〜1083における優先度トークン生成・更新処理部(151)による優先度トークン情報の生成・更新の一処理フローを示す。
【０１１６】
まず、次回の優先度トークン情報(53)next_tokenの初期値を設定する。具体的には、処理優先度情報(531)、宛先アドレス情報(532)、有効期間情報(533)は、処理1091と同様の初期化を行う。また、新たに追加された初期開始時刻情報(534)、更新回数情報(535)、コネクション確立回数情報(536)、トータルコネクション待ち時間情報(537)については、現在の要求に優先度トークン情報(53)が付加されていれば、その情報の対応する値をコピーする。優先度トークン情報(53)が付加されていなかった場合は、初期開始時刻情報(534)は、現在時刻を、その他は、０を設定する。(処理1111)
次に、next_tokenの更新回数情報(535)に１を加える。(処理1112)
また、本要求(50)に対し、サーバ装置(2)へのコネクションを確立したかどうかチェックする。(処理1113)
同コネクションを確立した場合は、next_tokenのコネクション確立回数情報(536)の値を１増やす。(処理1114)
さらに、要求キューイング処理部(14)により、要求キュー(28)に一旦キューイングして処理した場合は、処理1052における要求キューからの取りだし処理における、要求キューから取り出した時刻と、要求エントリー(40)のキューイング時刻情報(47)との差分を、next_tokenのトータルコネクション待ち時間情報(537)に加える。(処理1115)
次に、処理1092〜処理1099のnext_tokenの生成・更新処理を実行する。但し、同処理から処理1109が呼ばれた場合は、処理1109も実行する。なお、要求(50)に優先度トークン情報(53)が付加されていなかった場合で、処理1097で有効期間情報(533)をシフトする場合は、初期開始時刻情報(534)も同様にシフトする。(処理1116)
次に、サーバ装置(2)からの応答(60)に優先度トークン制御情報(69)があり、優先度トークン情報の非更新指示があるかどうかチェックする。(処理1117)
非更新指示がある場合は、処理1129に飛ぶ。
【０１１７】
次に、next_tokenの有効期間情報(533)に対し、next_tokenの初期開始時刻情報(534)で示す時刻から、要求(50)に対応したコネクション管理テーブルエントリー(20)の更新可能期間フィールド(291)で示された期間とのアンドを計算し、同有効期間情報(533)に設定する。(処理1118)
次に、next_tokenの有効期間情報(533)で示された期間が０でないかどうかチェックする。(処理1119)
もし、有効期間が０の場合は、処理1129に飛ぶ。
【０１１８】
次に、next_tokenの更新回数情報(535)が、要求(50)に対応したコネクション管理テーブルエントリー(20)の最大更新回数フィールド(292)の値以下かどうかチェックする。(処理1120)
最大更新回数を超えている場合は、処理1129に飛ぶ。
【０１１９】
次に、next_tokenのコネクション確立回数情報(536)が、要求(50)に対応したコネクション管理テーブルエントリー(20)の最大コネクション確立回数フィールド(293)の値以下かどうかチェックする。(処理1121)
最大コネクション確立回数を超えている場合は、処理1129に飛ぶ。
【０１２０】
次に、next_tokenのコネクション確立回数情報(536)が、要求(50)に対応したコネクション管理テーブルエントリー(20)の規定コネクション確立回数フィールド(294)の値以上かどうかチェックする。(処理1122)
規定回数以上の場合は、next_tokenの処理優先度情報(531)値をより高い優先度値に設定する。(処理1123)
さらに、next_tokenのトータルコネクション待ち時間情報(537)が、要求(50)に対応したコネクション管理テーブルエントリー(20)の規定コネクション待ち時間フィールド(295)の値以上かどうかチェックする。(処理1124)
規定待ち時間以上の場合は、next_tokenの処理優先度情報(531)値をより高い優先度値に設定する。(処理1125)
最後に、next_tokenを応答に付加する優先度トークン情報(53)として設定し、優先度トークンの生成・更新処理を終了する。(処理1126)
上記処理で、優先度トークン情報の更新が不可であった場合は、要求(50)に付加されていた優先度トークン情報(53)を、そのまま、応答で付加して返信する次回優先度トークン情報(53)として設定し、優先度トークンの生成・更新処理を終了する。なお、要求(50)に優先度トークン情報(53)が付加されていなかった場合は、応答にも優先度トークン情報は付加しない。(処理1129)
上記実施例によれば、一定期間内のサーバ装置へのトータルアクセス回数やトータル待ち時間の応じて処理優先度を上げることが可能である。例えば、ある利用者に対して、サーバ装置側で一旦要求を受付けたら、一定期間の間は、他の新たな要求より、先に処理する等が可能となる。
【０１２１】
上記実施例では、宛先サーバ装置に対する最大コネクション数フィールド(25)は、オペレータが指定した固定値という例を示したが、図２２は、本最大コネクション数フィールド(25)を自動的にチューニングするデータ通信中継装置(3)の一構成例を示す。
【０１２２】
本実施例では、データ通信中継装置(3)、コネクション管理処理部(13)のより具体的な処理部として、新たに、処理スループット計測処理部(131)と、最大コネクション数自動チューニング処理部(132)を持つ。また、処理スループット計測処理部(131)は、さらに、各コネクションテーブルエントリー(20-1〜20-N)に対応した要求処理数情報を保持した、要求処理数分布情報(240-1〜240-N)を持つ。
【０１２３】
処理スループット計測処理部(131)は、各コネクション管理テーブルエントリー(20)に対応したサーバ装置あるいはサーバ装置群毎に対して、要求キューイング数に対する単位時間あたりの要求処理数分布を計測する。具体的には、各コネクション管理テーブルエントリー(20)の最大コネクション数フィールド(25)の値をｍ等分し、同ｍ等分した現在コネクション数の範囲に対して、それぞれ、単位時間あたりの要求処理数分布を計測する。
【０１２４】
図２３は、各コネクション管理テーブルエントリー(20)に対応して処理スループット計測処理部(131)が持つ、本実施例の単位時間あたりの要求処理数分布情報(240)の一構成図である。各要求処理分布情報(240)は、ｍ個の分布情報エントリー(241-1〜241-m)と、前回最大要求処理数情報(242)からなる。各分布情報エントリー(241-1〜241-m)は、最大コネクション数フィールド(25)の値をｍ等分した現在コネクション数の範囲に対する、それぞれの、単位時間あたりの要求処理数分布情報を保持する。それぞれの分布情報エントリー(241-i)(i=1〜m)は、計測開始時刻(245-i)、計測期間(246-i)、トータル処理数(247-i)、平均処理数(248-i)からなる。なお、要求処理数分布情報(240)は、最初、すべて、０で初期化するものとする。
【０１２５】
図２４、図２５は、処理スループット計測処理部(131)による要求処理数分布情報(240)の設定・更新処理の一処理フローを示す。図２４は、処理1008でのコネクション管理処理部(13)によるコネクション数フィールド(24)の足し算更新の際の処理スループット計測処理部(131)の処理フロー、図２５は、処理1016でのコネクション管理処理部(13)によるコネクション数フィールド(24)の引き算更新の際の処理スループット計測処理部(131)の処理フローを示す。
【０１２６】
図２４の処理1008でのコネクション管理処理部(13)によるコネクション数フィールド(24)の足し算更新の際の処理としては、まず、更新前のコネクション数の対応する分布情報エントリー(241-i)と、更新後のコネクション数に対応する分布情報エントリー(241-j)を求める。(処理1131)
次に、更新前の分布情報エントリー(241-i)と更新後の分布情報エントリー(241-j)が異なるかどうかチェックする。(処理1132)
両エントリーが異なる場合、更新前の分布情報エントリー(241-i)の計測期間(246-i)に、現在時刻と計測開始時刻(245-i)の差分を足し算し、トータル処理数(247-i)/計測期間(246-i)を平均処理数(248-i)に設定する、また、更新後の分布情報エントリー(241-j)の計測開始時刻(245-j)に、現在時刻を設定する。(処理1133)
一方、図２５の処理1016でのコネクション管理処理部(13)によるコネクション数フィールド(24)の引き算更新の際の処理としては、まず、更新前のコネクション数の対応する分布情報エントリー(241-i)と、更新後のコネクション数に対応する分布情報エントリー(241-j)を求める。(処理1141)
次に、更新前の分布情報エントリー(241-i)のトータル処理数(247-i)に１を加える。(処理1142)
その後、更新前の分布情報エントリー(241-i)と更新後の分布情報エントリー(241-j)が異なるかどうかチェックする。(処理1143)
両エントリーが異なる場合は、更新前の分布情報エントリー(241-i)の計測期間(246-i)に、現在時刻と計測開始時刻(245-i)の差分を足し算し、トータル処理数(247-i)/計測期間(246-i)を平均処理数(248-i)に設定する、また、更新後の分布情報エントリー(241-j)の計測開始時刻(245-j)に、現在時刻を設定する。(処理1144)
図２６は、最大コネクション数自動チューニング処理部(132)による、各コネクション管理テーブルエントリー(20)の最大コネクション数フィールド(25)に対する自動チューニング処理の一処理フローを示す。
【０１２７】
最大コネクション数自動チューニング処理部(132)による処理は、無限ループの処理であり、定期的に起き上がって、すべてのコネクション管理テーブルエントリー(20)の最大コネクション数フィールド(25)を自動チューニングする。
【０１２８】
まず、全ての要求処理数分布情報(240)のすべての情報を０で初期化する。(処理1151)
次に、定められた時刻に起動がかかるように設定し、自動チューニング処理を休眠状態にする。(処理1152)
次に、コネクション管理テーブル(16)から順にエントリー(20-i)を１つ取り出す。(処理1153)
他に未処理のコネクション管理テーブルエントリー(20-i)がなければ、処理1152に戻る。(処理1154)
次に、対象のコネクション管理テーブルエントリー(20-i)に対応した要求処理数分布情報(240-i)を求める。(処理1155)
次に、対象のコネクション管理テーブルエントリー(20-i)のコネクション数フィールド(24)の値に対応した要求処理数分布情報(240-i)の分布情報エントリー(241-j)を求める。(処理1156)
処理1155で求めた分布情報エントリー(241-j)について、計測期間(246-j)に、現在時刻と計測開始時刻(245-j)の差分を足し算し、トータル処理数(247-j)/計測期間(246-j)を平均処理数(248-j)に設定する、また、計測開始時刻(245-j)に、現在時刻を設定する。(処理1157)
次に、要求処理数分布情報(240-i)のすべての分布情報エントリー(241-1〜241-m)をサーチし、平均処理数(248-k)が最も大きい分布情報エントリー(241-k)を求める。なお、値が同じ場合は、kの値が大きい方のエントリーを求める。(処理1158)
次に、ｋがｍに等しいかどうかチェックする。(処理1159)
ｋがｍに等しい場合は、要求処理数分布情報(240-i)の前回最大要求処理数情報(242)に、分布情報エントリー(241-k)の平均処理数(248-k)を設定し、さらに、ある一定数、あるいは、ある一定割合数分だけ、コネクション管理テーブルエントリー(20-i)の最大コネクション数フィールド(25)を増やし、処理1169に飛ぶ。(処理1160)
ｋとｍが等しくない場合は、ｋ以降の分布情報エントリー(241-k+1〜241-m)について、計測期間(246-x)が０でない分布情報エントリー(241-x)を求める。(処理1161)
０でないエントリー(241-x)が存在しない場合は、変更不要として、処理1169に飛ぶ。(処理1162)
０でないエントリー(241-x)が存在する場合は、分布情報エントリー(241-k)の平均処理数(248-k)と、要求処理数分布情報(240-i)の前回最大要求処理数情報(242)の値を比較する。(処理1163)
前回最大要求処理数情報(242)の値が分布情報エントリー(241-k)の平均処理数(248-k)の値以上の場合は、変更不要として、処理1169に飛ぶ。
【０１２９】
分布情報エントリー(241-k)の平均処理数(248-k)の方が大きい場合は、要求処理数分布情報(240-i)の前回最大要求処理数情報(242)を０クリアし、さらに、ある一定数、あるいは、ある一定割合数分だけ、コネクション管理テーブルエントリー(20-i)の最大コネクション数フィールド(25)を減らし、処理1169に飛ぶ。(処理1164)
各コネクション管理テーブルエントリー(20-i)毎の後処理として、要求処理数分布情報(240-i)のすべての分布情報エントリー(241-j)(j=１〜m)の計測期間(246-j)、トータル処理数(247-j)、平均処理数(248-j)を０クリアし、処理1153に戻る。(処理1169)
上記実施例によれば、特定のサーバ装置あるいはサーバ装置群に対して、処理スループットが最大となる最大コネクション数を自動的にチューニングできる。
【０１３０】
上記実施例によれば、宛先サーバ装置への同時要求数を同装置の処理能力の範囲内に押さえることができ、宛先サーバ装置の急激な性能劣化を防ぐことができる。さらに、利用者や業務の属性に応じて設定した優先度に従った処理が可能となる。また、待ち時間や利用回数に応じて、優先度を一時的に上げることが可能になる。また、処理を開始したら、一定期間、優先度を高く処理することが可能となる。その結果、ある程度以上待てば、比較的迅速なサービスを受けることが可能となり、不確定な長いサービス待ちや、不確定な長い待ちに起因する利用者の再実行操作を抑止できる。
【０１３１】
【発明の効果】
本発明によれば、サーバへのアクセス集中を抑制することが可能になり、サービスの低下を抑えることが可能となる。
【図面の簡単な説明】
【図１】本実施例のデータ通信装置を使ったシステムのシステム構成図。
【図２】本実施例に関わるクライアント装置、サーバ装置、データ通信中継装置、各装置の物理構成図。
【図３】本実施例のデータ通信中継装置の構成図。
【図４】本実施例のコネクション管理テーブルの構成図。
【図５】本実施例のデータ通信中継装置での中継処理の流れを示す処理フロー図。
【図６】図５の処理1007の要求キューイング処理部による本実施例の要求キューイング処理の処理フロー図。
【図７】本実施例の優先度キューを実現したコネクション管理テーブルの要求キューの構成図。
【図８】本実施例の図７の要求キューを使った処理1025でのキューイング処理の処理フロー図。
【図９】本実施例の図７の要求キューを使った処理1026での要求キューからの取出し処理のフロー図。
【図１０】本実施例のコネクション管理テーブルの別の実施例の構成図。
【図１１】本実施例の図１０のコネクション管理テーブルを使用した場合の、図６の処理1021での要求の宛先に対応したコネクション管理テーブルエントリーの検索処理フロー図。
【図１２】本実施例のクライアント装置のアドレスと宛先サーバ装置のアドレスから、処理優先度を求める実施例で使用するアドレス・処理優先度変換テーブルの構成図。
【図１３】本実施例の利用者の認証情報から、処理優先度を求める実施例で使用するクライアント装置からの要求の構成図。
【図１４】本実施例の利用者の認証情報から処理優先度を求める実施例で使用する利用者・処理優先度変換テーブルの構成図。
【図１５】本実施例の優先度トークン情報を使った要求の構成図。
【図１６】本実施例の優先度トークン情報を使ったシステムの構成図。
【図１７】本実施例の優先度トークン情報を使った要求処理の処理フロー図。
【図１８】本実施例の図１７の処理処理1081〜1083における優先度トークン生成・更新処理部による優先度トークン情報の生成・更新の処理フロー図。
【図１９】本実施例の優先度トークン情報の別の構成図。
【図２０】本実施例の図１９の優先度トークン情報に対応した、コネクション管理テーブルの構成図。
【図２１】本実施例の図１９の優先度トークン情報を用いた実施例の場合の、図１７の処理処理1081〜1083における優先度トークン生成・更新処理部による優先度トークン情報の生成・更新の処理フロー図。
【図２２】本実施例のサーバ装置に対する最大コネクション数情報の自動チューニング機能を有するデータ通信中継装置の構成図。
【図２３】本実施例のコネクション管理テーブルエントリーに対応して処理スループット計測処理部が持つ、単位時間あたりの要求処理数分布情報の構成図。
【図２４】本実施例の処理1008でのコネクション管理処理部によるコネクション数フィールドの足し算更新の際の処理スループット計測処理部での処理フロー図。
【図２５】本実施例の処理1016でのコネクション管理処理部によるコネクション数フィールドの引き算更新の際の処理スループット計測処理部での処理フロー図。
【図２６】本実施例の最大コネクション数自動チューニング処理部による、各コネクション管理テーブルエントリーの最大コネクション数フィールドに対する自動チューニング処理の処理フロー図。
【符号の説明】
1…クライアント装置、2…サーバ装置、3…データ通信中継装置、4…通信路、11…コネクション中継処理部、12…データ中継処理部、13…コネクション管理処理部、14…要求キューイング処理部、15…優先度マッピング処理部、16…コネクション管理テーブル、20…コネクション管理テーブルエントリー、21…宛先フィールド、22…中継先フィールド、23…最大コネクション数フィールド、24…コネクション数フィールド、25…最大キューイング数フィールド、26…最大待ち時間フィールド、27…最大待ち数フィールド、28…要求キュー、29…優先度トークン更新条件情報、30-1〜30-n…優先度キュー、31-1〜31-n…優先度キューの先頭ポインター、32-1〜32-n…優先度キューの最後尾ポインター、33…全体キューの先頭ポインター、34…全体キューの最後尾ポインター、35…現在キューイング数フィールド、39…全体キュー、40…要求エントリー、41…優先度キューの前エントリーポインター、42…優先度キューの次エントリーポインター、43…全体キューの前エントリーポインター、44…全体キューの次エントリーポインター、45…要求ポインター、46…宛先情報ポインター、47…キューイング時刻情報、48…待ち数情報、50…サービス要求、51…宛先情報、52…認証情報、53…優先度トークン情報、59…要求の処理優先度、60…応答、69…優先度トークン制御情報、71…優先度トークン情報の記憶・送出処理部、72…優先度トークン制御処理部、91…プロセッサ、92…メモリ、93…外部記憶機構、94…通信機構、95…オペレータ入出力機構、96…バス、97…通信回線、100…情報処理プログラム、110…アドレス・処理優先度変換テーブル、111…クライアントアドレスフィールド、112…サーバアドレスフィールド、113…処理優先度フィールド、120…利用者・処理優先度変換テーブル、121…利用者認証情報フィールド、122…処理優先度フィールド、131…処理スループット計測処理部、132…最大コネクション数自動チューニング処理部、151…優先度トークン解釈処理部、152…優先度トークン生成・更新処理部、153…優先度トークン返送処理部、240…各要求処理分布情報、241-1〜241-m…分布情報エントリー、242…前回最大要求処理数情報、245-1〜245-m…計測開始時刻、246-1〜246-m…計測期間、247-1〜247-m…トータル処理数、248-1〜248-m…平均処理数、291…更新可能期間フィールド、292…最大更新回数フィールド、293…最大コネクション確立回数フィールド、294…規定コネクション確立回数フィールド、295…規定コネクション待ち時間フィールド、531…処理優先度情報、532…宛先アドレス情報、533…有効期間情報、534…有効期間の初期開始時刻情報、535…優先度トークンの更新回数情報、536…サーバ装置へのコネクション確立回数情報、537…トータルコネクション待ち時間情報
【図１】
0003828444.tif 000002
【図２】
0003828444.tif 000003
【図３】
0003828444.tif 000004
【図４】
0003828444.tif 000005
【図５】
0003828444.tif 000006
【図６】
0003828444.tif 000007
【図７】
0003828444.tif 000008
【図８】
0003828444.tif 000009
【図９】
0003828444.tif 000010
【図１０】
0003828444.tif 000011
【図１１】
0003828444.tif 000012
【図１２】
0003828444.tif 000013
【図１３】
0003828444.tif 000014
【図１４】
0003828444.tif 000015
【図１５】
0003828444.tif 000016
【図１６】
0003828444.tif 000017
【図１７】
0003828444.tif 000018
【図１８】
0003828444.tif 000019
【図１９】
0003828444.tif 000020
【図２０】
0003828444.tif 000021
【図２１】
0003828444.tif 000022
【図２２】
0003828444.tif 000023
【図２３】
0003828444.tif 000024
【図２４】
0003828444.tif 000025
【図２５】
0003828444.tif 000026
【図２６】
0003828444.tif 000027