(57)【要約】【課題】複数のサーバの一部のみが過負荷状態になるのを防ぎ、サーバシステムの信頼性を高めることを目的とする。【解決手段】複数の通信端末を分担して収容する複数のサーバを備えた通信サーバシステムにおいて、複数のサーバのそれぞれの処理能力情報および複数の通信端末のそれぞれの通信実績情報を取得し、収容を要求した通信端末の通信実績情報に基づいて当該通信端末に関わる処理量の予測値を算出し、処理能力情報を参照して当該予測値の処理が可能なサーバの中から収容要求をした通信端末を収容するサーバを選択する。【選択図】図１
2008250862.tif 000002
【特許請求の範囲】
【請求項１】
複数の通信端末を分担して収容する複数のサーバを備えた通信サーバシステムにおける収容制御方法であって、
前記複数のサーバのそれぞれの処理能力情報および前記複数の通信端末のそれぞれの通信実績情報を取得し、
収容を要求した通信端末の通信実績情報に基づいて当該通信端末に関わる処理量の予測値を算出し、前記処理能力情報を参照して当該予測値の処理が可能なサーバの中から収容要求をした通信端末を収容するサーバを選択する
ことを特徴とする通信サーバシステムにおける収容制御方法。
【請求項２】
複数の通信端末を分担して収容する複数のサーバを備えた通信サーバシステムであって、
通信端末からの収容要求に応答して当該通信端末を収容するサーバを選択する収容振分け部と
前記複数のサーバのそれぞれの処理能力情報および前記複数の通信端末のそれぞれの通信実績情報を記憶する情報管理部とを備えており、
前記収容振分け部は、収容を要求した通信端末の通信実績情報に基づいて当該通信端末に関わる処理量の予測値を算出し、前記処理能力情報を参照して当該予測値の処理が可能なサーバの中から収容要求をした通信端末を収容するサーバを選択する
ことを特徴とする通信サーバシステム。
【請求項３】
前記複数のサーバは、それぞれが収容する通信端末の状態変化に呼応して予め定められた処理を実行する
請求項２に記載の通信サーバシステム。
【請求項４】
前記収容振分け部は、前記予測値として単位時間あたりの処理数を算出し、前記処理能力情報が示す各サーバの最大処理数と各サーバが既に収容している通信端末に対して算出した予測値の合計との差が、収容しようとする通信端末に対して算出した予測値よりも大きいサーバの中から収容要求をした通信端末を収容するサーバを選択する
請求項３に記載の通信サーバシステム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、複数の通信端末間の通信を管理する通信サーバシステムおよび通信管理のための収容制御方法に関する。
【背景技術】
【０００２】
インターネットを介してコンピュータや携帯電話といった通信端末のユーザ同士が短いメッセージを素早くやり取りすることのできるインスタントメッセージサービスが広く利用されている。このサービスでは、ログインしたユーザＡは、予め登録しておいた他のユーザＢ，Ｃ，Ｄ，…が通信可能な状態であるか否かを画面に表示されるリストによって知ることができる。また、ユーザＡがログインしたことや例えばユーザＫと通信を始めたり終えたりしたことを他のユーザＢ，Ｃ，…が知ることもできる。つまり、ユーザの操作する通信端末の状態変化が逐次に所定の他のユーザに通知される。
【０００３】
多数のユーザがインスタントメッセージサービスでは、相応の処理能力を確保するために複数のサーバがネットワーク上に設置される。一般に、各ユーザに対して１つのサーバが固定的に割り当てられ、各ユーザの通信端末を収容するサーバが決められている。すなわち、サーバからみた負荷である多数の通信端末を複数のサーバが分担して収容するが、収容の振分けは固定である。この場合、各サーバはユーザ割り当て数に応じた十分な処理能力をもつ必要がある。
【０００４】
複数のサーバにおける収容の分担を動的に変更する手法は知られている。特許文献１には、ＳＩＰ（Session Initiation Protocol）によって呼制御が行われるＩＰ電話システムにおいて、ＳＩＰ端末からのセッションを低負荷のＳＩＰサーバに転送する負荷分散装置を設け、それによって呼損率を低減することが開示されている。この負荷分散装置は、ＳＩＰサーバの負荷率としてＣＰＵ使用率を検出する。
【特許文献１】特開２００７−４３６１号公報
【発明の開示】
【発明が解決しようとする課題】
【０００５】
従来の負荷分散装置（ロードバランサ）によるサーバに対する通信端末の動的な振分けは、振り分ける時点におけるサーバの負荷状態に応じて行い、かつ複数の通信端末を一律に一定の負荷として扱うものであった。これには、頻繁に状態が変化したり大きな負荷となる処理を要求したりする通信端末が１つのサーバに集中し、そのために当該サーバの負荷が処理能力を超えてしまうおそれがあるという問題があった。
【０００６】
本発明は、このような事情に鑑み、複数のサーバの一部のみが過負荷状態になるのを防ぎ、サーバシステムの信頼性を高めることを目的としている。
【課題を解決するための手段】
【０００７】
上記目的を達成する収容制御方法は、複数の通信端末を分担して収容する複数のサーバを備えた通信サーバシステムにおいて、前記複数のサーバのそれぞれの処理能力情報および前記複数の通信端末のそれぞれの通信実績情報を取得し、収容を要求した通信端末の通信実績情報に基づいて当該通信端末に関わる処理量の予測値を算出し、前記処理能力情報を参照して当該予測値の処理が可能なサーバの中から収容要求をした通信端末を収容するサーバを選択する。
【０００８】
通信端末は予測値に応じた大きさの負荷として扱われる。そして、各サーバにはこのような負荷の合計が処理能力を超えないように収容すべき通信端末が振り分けられる。すなわち、通信端末を一律に一定の負荷として扱うのと違って、通信端末の収容後の動作に依存する負荷変動を見込んだ振分けが行なわれる。
【０００９】
予測値の算出は、通信端末からの収容要求に呼応して行なってもよいし、収容要求の以前に予め行なって結果をメモリに記憶させておいてもよい。予測値の算出に用いる通信実績情報は、通信サーバシステムが提供する通信サービスに応じた情報である。例えば、インスタントメッセージサービスであれば、１時間や１日といった単位時間あたりの平均メッセージ送受信回数が、ＩＰ電話サービスであれば、同様の単位時間あたりの平均通話数が、ファイル転送サービスであれば、平均ファイルデータ量が通信実績情報の例となる。各通信端末（サービスのユーザ）ごとの所定の期間にわたる実績の収集と集計により、通信実績情報が得られる。ユーザのサービス利用パターン（時間帯、曜日、季節など）を分析して通信実績情報の有用性を高めることもできる。
【００１０】
上記目的を達成する通信サーバシステムは、複数の通信端末を分担して収容する複数のサーバと、通信端末からの収容要求に応答して当該通信端末を収容するサーバを選択する収容振分け部と、前記複数のサーバのそれぞれの処理能力情報および前記複数の通信端末のそれぞれの通信実績情報を記憶する情報管理部とを備えている。当該通信サーバシステムにおける前記収容振分け部は、収容を要求した通信端末の通信実績情報に基づいて当該通信端末に関わる処理量の予測値を算出し、前記処理能力情報を参照して当該予測値の処理が可能なサーバの中から収容要求をした通信端末を収容するサーバを選択する。
【００１１】
好ましい態様において、通信サーバシステムに備わる複数のサーバは、それぞれが収容する通信端末の状態変化に呼応して予め定められた処理を実行する。状態変化に呼応する処理は負荷の大きさに関係するので、予測値に応じて通信端末の収容を振り分けるのがより有効である。
【発明の効果】
【００１２】
本発明によれば、複数のサーバの一部のみが過負荷状態になるのを防ぎ、サーバシステムの信頼性を高めることができる。
【発明を実施するための最良の形態】
【００１３】
図１は本発明の実施形態に係る通信サーバシステムの構成を示す。
【００１４】
図示の通信サーバシステム１は、ネットワーク３を用いたインスタントメッセージサービスを提供する。ネットワーク３にはメッセージを交換する多数の通信端末３１，３２，３３，３４，３５，３６が接続されている。通信端末３１〜３６は、パーソナルコンピュータ、携帯電話、ＰＤＡ（Personal Digital Assistant）などのインスタントメッセージを実行する機能をもった機器である。ここでいう接続は、有線または無線の回線が確保されること、および通信端末３１〜３６からの発呼により回線が確保され得ることを含む。図では６台の通信端末３１〜３６が描かれているが、実際には数百〜数万またはそれ以上の通信端末の接続が想定される。
【００１５】
通信サーバシステム１は、複数の収容サーバ１１，１２，１３，１４，１５と、収容振分け部である振分け装置２１と、情報管理部であるデータサーバ２２とを備える。図では５台の収容サーバ１１〜１５が描かれているが、サーバ数は２以上であればよい。実際には通信端末数（サービス加入者数）とサーバ性能に依存するが、数台から数十台程度が想定される。
【００１６】
収容サーバ１１〜１５は通信端末３１〜３６を分担して収容する。収容とは、通信端末３１〜３６に関わる呼制御や通知などの処理を受け持つことを意味する。収容サーバ１１〜１５は共通の制御プログラムを実行するが、必ずしもこれら収容サーバ１１〜１５の間で処理速度が共通である必要はなく、例えばＣＰＵクロック周波数の異なるコンピュータを併用してもよい。
【００１７】
振分け装置２１は、通信端末３１〜３６のいずれかからの収容要求に応答して当該通信端末を収容する１台のサーバとして収容サーバ１１〜１５のいずれかを選択する。ただし、収容サーバ１１〜１５のどれもが新たに収容できない高負荷状態であれば、収容を拒否する。収容サーバ１１〜１５の選択に際して、振分け装置２１は収容を要求した通信端末に関わる処理量の予測値を算出し、収容サーバ１１〜１５の処理の余力と予測値とを比較する。詳細は後述する。
【００１８】
データサーバ２２は、収容サーバ１１〜１５と振分け装置２１とに適時に所定の情報を提供する。データサーバ２２が管理するデータベース２２Ｂは、ウォッチャーリストと呼ばれる状態通知リストＴ１、通信端末３１〜３６の通信実績情報を含むユーザ管理テーブルＴＤＵ、および収容サーバ１１〜１５の処理能力情報であるサーバ管理テーブルＴＤＳを有する。
【００１９】
通信サーバシステム１における通信端末３１〜３６の収容は次の手順で行われる。
【００２０】
[１]例えば通信端末３３が通信サーバシステム１に収容要求に相当するログイン手続を実行すると、振分け装置２１が要求を受け付ける。[２]振分け装置２１は、データサーバ２２から通信端末３３に関わるユーザ管理情報ＤＵと、各収容サーバ１１〜１５の処理能力を示すサーバ管理情報ＤＳとを取得する。[３]さらに、振分け装置２１は、通信端末３３に関わる処理量の予測値を算出し、予測値の処理が可能な１台の収容サーバ（図示では収容サーバ１２）を選択する。[４]選択された収容サーバ１２に対して、データサーバ２２が通信端末３３に関わる状態通知リストＴ１をダウンロードする。[５]収容サーバ１２は、通信端末３３を収容し、状態通知リストＴ１に登録された通知先の通信端末に通信端末３３がログインしたことを通知する。その後、通信端末３３が他の通信端末との通信を要求すると、収容サーバ１２は通信端末間の直接のメッセージ交換を可能にする呼制御を行うとともに、状態通知リストＴ１に登録された通知先の通信端末に通信端末３３の状態変化を通知する。このような通知は通信端末３３の状態変化が起こるごとに行われる。
【００２１】
図２はユーザ管理テーブルＴＤＵの構成を示す。
【００２２】
ユーザ管理テーブルＴＤＵでは、各ユーザ(通信端末）に、状態通知リストＴ１に登録された“状態通知先の数”と、通信実績情報としての“変化頻度”とが対応付けられている。通知先の数が多いほど、通信端末の状態変化ごとに収容サーバが行う通知処理の負担が大きい。変化頻度は過去の通信記録から算定された１時間あたりの状態変化の回数である。変化頻度が大きいほど収容サーバは通知処理を頻繁に行わなければならない。つまり、状態通知先の数と変化頻度の両方が大きいユーザは収容サーバからみて最も大きな負荷である。収容サーバからみた負荷の大きさは状態通知先の数と変化頻度とに依存する。本実施形態では、状態通知先の数と変化頻度との積が予測値として算出される。
【００２３】
図３はサーバ管理テーブルＴＤＳの構成を示す。
【００２４】
サーバ管理テーブルＴＤＳでは、各サーバに、許容時間内に処理の可能な処理量（処理容量）を示す“最大処理値”と、主に処理速度の基準に設定された“性能重み値”とが対応付けられている。基本的には最大処理値が大きいほど、より多くの通信端末を収容することができる。本例では、性能重み値は、最も性能の高い収容サーバを１とする相対値である。
【００２５】
図４は振分け装置２１の動作を示すフローチャートである。振分け装置２１は、ログイン要求に応答して、要求した通信端末のユーザ管理情報ＤＵをデータサーバ２２から取得する（＃１０、＃１１）。ユーザ管理情報ＤＵは図２のように状態通知先の数と変化頻度とで構成される。ユーザ管理情報ＤＵに基づいて、状態通知先の数と変化頻度の積である単位時間あたりの処理数を予測値として計算する（＃１２）。次に、振分け装置２１は稼動中の収容サーバ１１〜１５のサーバ管理情報ＤＳをデータサーバ２２から取得する（＃１３）。サーバ管理情報ＤＳは最大処理値と性能重み値とで構成される。振分け装置２１は自己が記憶する各収容サーバ１１〜１５の現状処理値とサーバ管理情報ＤＳとに基づいて追加可能処理値を計算する（＃１４）。現状処理値は現時点の振り分け済み処理量（既に収容された通信端末の予測値の合計）である。追加可能処理値は、最大処理値から現状処理値を減算した差に性能重み値を乗じた積である。追加可能処理値が予測値よりも大きければ、その収容サーバに負荷を追加することができる。振分け装置２１は、追加可能な収容サーバの中からログイン要求をした通信端末を収容する１台の収容サーバを選択する（＃１５、＃１６）。追加可能処理値が予測値よりも大きい収容サーバが無ければ、ログイン不可を通信端末に通知する（＃１５、＃１７）。
【００２６】
複数の収容サーバが追加可能である場合の選択の仕方は任意である。例えば、収容サーバ１１〜１５に均等に負荷を配分する形態、配列順に１個が追加不可になるまで詰め込んで、追加不可になったら次に詰める形態（この場合、順序を定期的に変えるローテーションの適用が望ましい）、緊急時以外は一部の収容サーバを選択対象外とし、残りの収容サーバに均等にまたは順に詰め込むように配分する形態がある。
【００２７】
図５は予測値の計算例を示す。
【００２８】
図５（Ａ）において、ユーザＡの状態通知先の数は１０で、変化頻度は６０である。したがって、予測値は６００（＝１０×６０）である。図５（Ｂ）においてユーザＢの状態通知先の数は２００で、変化頻度は５である。したがって、予測値は１０００である。
【００２９】
図６は各収容サーバの追加可能処理値の計算例を示す。代表として３台のサーバＡ，Ｂ，Ｃについての例が示されている。
【００３０】
サーバＡの最大処理値は５０００で、現状処理値は４１００で、性能重み値は１である。したがって、追加可能処理値は９００（＝（５０００−４１００）×１）である。サーバＢの最大処理値は５０００で、現状処理値は１０００で、性能重み値は１である。したがって、追加可能処理値は４０００である。サーバＣの最大処理値は３０００で、現状処理値は２０００で、性能重み値は０．５６である。したがって、追加可能処理値は５６０である。
【００３１】
図７は収容サーバに対するユーザの振分けの例を示す。図中の数値は図５および図６の例に対応する。
【００３２】
図７（Ａ）において、予測値が６００の通信端末を収容することが可能なサーバは収容サーバ１１（サーバＡ）または収容サーバ１２（サーバＢ）である。収容サーバ１１が収容するとサーバの負荷状態は図７（Ｂ）のようになり、収容サーバ１２が収容すると図７（Ｂ）のようになる。
【００３３】
図７（Ｄ）において、予測値が１０００の通信端末を収容することが可能なサーバは収容サーバ１２１（サーバＢ）のみである。収容サーバ１２が収容するとサーバの負荷状態は図７（Ｅ）のようになる。
【００３４】
以上の実施形態では、インスタントメッセージサービスを提供するシステムを例に挙げたが、ＳＩＰサーバシステムや他のシステムにも本発明を適用することができる。ＳＩＰサーバシステムでは、所定期間の通信実績情報に基づいて、例えば単位時間あたりの平均通話回数を予測値として適時に算出すればよい。また、ＩＭサービスとＳＩＰサービスの両方を提供するシステムに適用する場合は、各サービスに対して重み付けを行い、ログイン時にユーザが指定するサービスに応じて予測値の算出式を変更することができる。この場合、ある収容サーバにおいて、ＳＩＰサービスならば収容可能だがＩＭサービスでは収容不可であったり、またはその逆であったりする状況が起こり得る。
【００３５】
通信端末３１〜３６は自動的に状態変化を通知する機器でもよい。例えば、複数の部屋を有した建物の各部屋に設置される入退室センサを通信端末とし、複数の人に部屋の利用状況を逐次に通知するシステムに本発明を適用することができる。
【００３６】
以上の実施形態において、収容サーバ１１〜１５の数を含めて通信サーバシステム１のの構成は例示に限定されず、本発明に沿う範囲内で適宜変更が可能である。例えば、振分け装置２１とデータサーバ２２とを１台のコンピュータに集約してもよいし、２台のコンピュータで構成してもよい。収容サーバ１１〜１５を個別の筐体に収めてもよいし、ラックマウントなどに一括に収めてもよい。収容サーバ１１〜１５を複数個所に分散配置してもよい。さらに、予測値と追加可能処理値との比較の結果と、ＣＰＵ使用率などの現時点の負荷の測定結果とを総合して収容サーバを選択してもよい。
【図面の簡単な説明】
【００３７】
【図１】本発明の実施形態に係る通信サーバシステムの構成を示す図である。
【図２】ユーザ管理テーブルの構成を示す図である。
【図３】サーバ管理テーブルの構成を示す図である。
【図４】振分け装置の動作を示すフローチャートである。
【図５】予測値の計算例を示す図である。
【図６】各収容サーバの追加可能処理値の計算例を示す図である。
【図７】収容サーバに対するユーザの振分けの例を示す図である。
【符号の説明】
【００３８】
１    通信サーバシステム
１１，１２，１３，１４，１５    収容サーバ
３１，３２，３３，３４，３５，３６    通信端末
２２Ｂ    データベース（メモリ）
２１    振分け装置（収容振分け部）
２２    データサーバ（情報管理部）
【図１】
2008250862.tif 000003
【図２】
2008250862.tif 000004
【図３】
2008250862.tif 000005
【図４】
2008250862.tif 000006
【図５】
2008250862.tif 000007
【図６】
2008250862.tif 000008
【図７】
2008250862.tif 000009