(57)【要約】【課題】  メモリコスト値を利用してメモリ使用量の分散を行い、高精度でFull GCの発生を抑え、全体のパフォーマンスを維持できるSIPアプリケーションサーバのロードバランサおよびその動作方法を提供。【解決手段】  SIPアプリケーションサーバのロードバランサ100は、ネットワークよりメッセージを受信し、メッセージの情報を解析し、あらかじめ準備されたメモリ変化量とメモリコスト値とを対応させたコストテーブルからメッセージ情報のメモリコスト値を出力し、アプリケーションごとのメモリコスト合計値を管理するメモリテーブルの情報から転送先のアプリケーションを決定し、メッセージを送信する。 【選択図】図１
2010079670.tif 000002
【特許請求の範囲】
【請求項１】
ネットワークに接続されたセッション初期化プロトコル(SIP) アプリケーションサーバのロードバランサにおいて、該ロードバランサは、
ネットワークよりメッセージを受信するメッセージ受信手段と、
該受信したメッセージの情報を解析するメッセージ解析手段と、
メモリ変化量とメモリコスト値との対応関係をコストテーブルとしてあらかじめ準備し、前記解析したメッセージの情報に対応するメモリコスト値を出力するコストテーブル管理手段と、
アプリケーションサーバごとのメモリコストの合計値を管理するメモリテーブル管理手段と、
前記メモリコスト値と前記メモリコスト合計値情報とからメッセージの転送先のアプリケーションサーバを決定する転送処理手段と、
前記決定されたアプリケーションサーバにメッセージを送信するメッセージ送信手段とを含むことを特徴とするSIPアプリケーションサーバのロードバランサ。
【請求項２】
請求項１のロードバランサにおいて、前記コストテーブルは、あらかじめ実験などを行いその結果から求めたことを特徴とするSIPアプリケーションサーバのロードバランサ。
【請求項３】
請求項１のロードバランサにおいて、前記コストテーブルは、アプリケーションサーバからメッセージを受信し、該メッセージからメモリ情報を得て、該メモリ情報からメモリコスト値を計算して求めたことを特徴とするSIPアプリケーションサーバのロードバランサ。
【請求項４】
請求項３のロードバランサにおいて、前記アプリケーションサーバは、ネットワークからメッセージを受信し、該メッセージに基づきアプリケーションプログラムを実行し、該プログラム実行後のメモリ情報を取得し、該プログラム実行結果と該メモリ情報とを含むメッセージをネットワークに送信することを特徴とするSIPアプリケーションサーバのロードバランサ。
【請求項５】
ネットワークに接続されたセッション初期化プロトコル(SIP) アプリケーションサーバのロードバランサの動作方法において、該方法は、
ネットワークよりメッセージを受信するメッセージ受信工程と、
該受信したメッセージの情報を解析するメッセージ解析工程と、
メモリ変化量とメモリコスト値との対応関係をコストテーブルとしてあらかじめ準備し、前記解析したメッセージの情報に対応するメモリコスト値を出力するコストテーブル管理工程と、
アプリケーションサーバごとのメモリコストの合計値を管理するメモリテーブル管理工程と、
前記メモリコスト値と前記メモリコスト合計値情報とからメッセージの転送先のアプリケーションサーバを決定する転送処理工程と、
前記決定されたアプリケーションサーバにメッセージを送信するメッセージ送信工程とを含むことを特徴とするSIPアプリケーションサーバのロードバランサの動作方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、電話網やインターネット網などのネットワーク通信システムに関するもので、特に転送やプレゼンスなどの付加サービスを提供するセッション初期化プロトコル(SIP：Session Initiation Protocol)アプリケーションサーバにおけるロードバランサ（負荷分散装置）およびその動作方法に関するものである。
【背景技術】
【０００２】
従来、SIPを制御プロトコルに持つIP(Internet Protocol）電話などのサービスを提供するネットワークにおいて、転送やプレゼンスなどの付加サービスを提供するサーバとしてSIPアプリケーションサーバを用いることがある。またサーバの構成として図２のように、処理能力の向上と障害時における信頼性の確保の観点から複数のアプリケーションサーバを配置し、その前段にロードバランサを配置する形態が一般的に用いられる。
【０００３】
また、アプリケーションサーバのプラットフオーム開発言語としてJava（米国Sun Microsystems Inc.の商標）がしばしば用いられている。Javaではプログラムが動的に確保したメモリ領域が不要になると自動的に再使用できるように開放する GC(Garbage Collection)機能がある。
【０００４】
GCにはいくつかの種類かあるが、プログラムが動的に確保できるメモリ領域が減少してくるとやがてFu11 GCと呼ばれるGCが発生する。Fu11 GCが発生すると、アプリケーションサーバ全体の処理能力が大きく低下する。
【０００５】
ところで、特許文献１に、Fu11 GCによる処理能力の低下を避ける方法の一つとしてメモリの使用率からFull GCの発生を予測し、ロードバランサでFu11 GC発生中のアプリケーションサーバにリクエストの振り分けを行わない例が開示されている。
【特許文献１】特開2007-328413号公報
【発明の開示】
【発明が解決しようとする課題】
【０００６】
従来のロードバランサにおいて、GC発生中のアプリケーションサーバを避けてリクエストの振り分けを行う場合、一度に複数のアプリケーションサーバでGCが発生した場合、全体の処理能力が著しく低下する。このときアプリケーションサーバが主体となって自サーバのメモリまたはメモリ以外のリソースの使用率を監視する方法があるが、この方法では他のアプリケーションサーバと同時にGCが発生することを避けることは難しい。ここでの同時とは、GCの発生時刻が同時という意味だけではなく、発生時刻が異なっても、ある時刻において複数のアプリケーションサーバがGC発生から終了までの間、つまりGC発生中の状態にあることを含んでいる。
【０００７】
またロ−ドバランサがGC発生中のアプリケーションサーバを避けてリクエストの振り分けを行っている間は、トータルの単位時間当たりのリクエスト数が一定の場合、アプリケーションサーバ１台当たりの処理リクエスト数が増える。そのため、GCが発生していないアプリケーションサーバのメモリ使用率も、最初と比べて変化してしまうため、アプリケーションサーバ側で他のアプリケーションサ−バのメモリ変化を予測することも難しい。
【０００８】
本発明は、このような従来技術の欠点を解消し、メモリコスト値を利用してメモリ使用量の分散を行い、より高い精度でFull GCが発生する契機を分散することにより全体のパフォーマンスを維持することができるSIPアプリケーションサーバのロードバランサおよびその動作方法を提供することを目的とする。
【課題を解決するための手段】
【０００９】
本発明によれば、上述の課題を解決するために、ネットワークに接続されたセッション初期化プロトコル(SIP) アプリケーションサーバのロードバランサは、ネットワークよりメッセージを受信するメッセージ受信手段と、この受信したメッセージの情報を解析するメッセージ解析手段と、メモリ変化量とメモリコスト値との対応関係をコストテーブルとしてあらかじめ準備し、解析したメッセージの情報に対応するメモリコスト値を出力するコストテーブル管理手段と、アプリケーションサーバごとのメモリコストの合計値を管理するメモリテーブル管理手段と、メモリコスト値とメモリコスト合計値情報とからメッセージの転送先のアプリケーションサーバを決定する転送処理手段と、決定されたアプリケーションサーバにメッセージを送信するメッセージ送信手段とを含むことを特徴とする。
【００１０】
また、ネットワークに接続されたセッション初期化プロトコル(SIP) アプリケーションサーバのロードバランサの動作方法は、ネットワークよりメッセージを受信するメッセージ受信工程と、この受信したメッセージの情報を解析するメッセージ解析工程と、メモリ変化量とメモリコスト値との対応関係をコストテーブルとしてあらかじめ準備し、前記解析したメッセージの情報に対応するメモリコスト値を出力するコストテーブル管理工程と、アプリケーションサーバごとのメモリコストの合計値を管理するメモリテーブル管理工程と、メモリコスト値とメモリコスト合計値情報とからメッセージの転送先のアプリケーションサーバを決定する転送処理工程と、決定されたアプリケーションサーバにメッセージを送信するメッセージ送信工程とを含むことを特徴とする。
【発明を実施するための最良の形態】
【００１１】
次に添付図面を参照して、本発明によるSIPアプリケーションサーバのロードバランサの実施例について詳細に説明する。
【００１２】
本実施例のロードバランサの構成100は、たとえば図１に示す通り、クライアントネットワーク対応側とアプリケーション対応側とに分かれて構成されており、メッセージ受信部とメッセージ送信部ともそれぞれ別々に設置されている。
【００１３】
まず、クライアントネットワーク対応側から説明する。
【００１４】
ネットワークメッセージ受信部22は、ネットワークからアプリケーションサーバ側へのメッセージを受信し、この受信メッセージをメッセージ解析部24に送る。
【００１５】
メッセージ解析部24は、転送メッセージ情報をコストテーブル管理部26に送信する。さらにコストテーブル管理部26から得られたメモリコスト値を転送処理部28に送信する。
【００１６】
コストテーブル管理部26は、たとえば図３、図４に示すように、あらかじめ実験などにより得られた適切なメモリコスト値を基に転送メッセージ情報とメモリの変化量との対応関係をコストテーブルとして管理し、このコストテーブルを使いメッセージ解析部24から送られた情報に対応するメモリコスト値を選び、メッセージ解析部24に送る。
【００１７】
ネットワーク転送処理部28は、メッセージ解析部24から送られたメモリコスト値情報をメモリテーブル管理部30に送り、メモリテーブル管理部30からメモリコスト合計値情報を得て、どのアプリケーションサーバにメッセージの転送を行うかを決定する。この判断結果をネットワークメッセージ送信部32に送る。
【００１８】
メモリテーブル管理部30は、ネットワーク転送処理部28からのメモリコスト値情報に基づきアプリケーションサーバごとのメモリコスト合計値情報をネットワーク転送処理部28に送る。それと共にメモリテーブル管理部30は、たとえば図５に示すテーブルようにアプリケーションサーバごとのメモリに関する情報を管理し、たとえば、Full GCが発生したり、再起動が行われた場合には、そのメモリコスト合計値をクリアする。
【００１９】
ネットワークメッセージ送信部32は、ネットワーク転送処理部28より送られた判断結果に基づきネットワークを介してアプリケーションサーバにメッセージの転送を行う。
【００２０】
つづいて、アプリケーション対応側について説明する。
【００２１】
アプリケーションメッセージ受信部42は、アプリケーションサーバから対向する端末や他のSIPサーバへのメッセージを受信し、この受信メッセージを共通のメッセージ解析部24に送る。
【００２２】
メッセージ解析部24は、アプリケーションメッセージ受信部42から送られるメッセージの解析を行い、解析情報を直接アプリケーション転送処理部48に送る。
【００２３】
アプリケーション転送処理部48は、メッセージ解析部24から送られた解析情報から対向する端末または他のSIPサーバを確認し、アプリケーションメッセージ送信部52に送る。
【００２４】
アプリケーションメッセージ送信部52は、アプリケーション転送処理部48からの情報に基づきメッセージを送信する。
【００２５】
次に、本実施例におけるSIPアプリケーションサーバのロードバランサ100の動作方法について、図６のフローチャートを参照しながら主にクライアントネットワーク対応側の動作方法について説明する。
【００２６】
まず、インターネットなどのネットワークからネットワークメッセージ受信部22でメッセージが受信される(S102)。
【００２７】
受信されたメッセージは、メッセージ解析部24に送られメッセージの解析が行われる(S104)。
【００２８】
この解析結果は、コストテーブル管理部26にあらかじめ設定、管理されている図４に示すようなテーブルと照合され、当てはまるメモリコスト値が取得される(S106)。
【００２９】
次にネットワークメッセージ転送処理部28で、負荷が分散されるように選択されたアプリケーションサーバは、メモリテーブル管理部30に蓄積した各アプリケーションサーバのコスト合計値により検証され、たとえばコスト合計値の大きい順番すなわち使用可能なメモリ領域の多い順番にアプリケーションサーバが再度選択され決定される(S108)。
【００３０】
決定されたアプリケーションサーバに対してネットワークメッセージ送信部32よりメッセージが送信される(S110)。
【００３１】
メモリテーブル管理部30ではメッセージが送信されたアプリケーションサーバに対するメモリテーブルのコスト合計値が更新される(S112)。
【００３２】
次に、本発明によるSIPアプリケーションサーバのロードバランサの他の実施例、すなわち第２の実施例について図７を参照にして説明する。なお第１の実施例と同じ構成部は、同じ参照符号で示し、できるだけ反復説明を避ける。
【００３３】
第２の実施例の SIPアプリケーションサーバのロードバランサ200は、コストテーブル管理部26のコストテーブルのコスト値を実際のデータのやり取りから得られた実績値に基づいて設定するものである。
【００３４】
第１の実施例と同様にクライアントネットワーク対応側とアプリケーション対応側とに分かれて構成されているが、クライアントネットワーク対応側は、第１の実施例とほぼ同じ構成であるので説明を省略し、主にアプリケーション対応側の構成について説明する。
【００３５】
アプリケーションメッセージ受信部42は、アプリケーションサーバから対向する端末や他のSIPサーバへのメッセージを受信し、共通のメッセージ解析部24に送る。
【００３６】
メッセージ解析部24は、アプリケーションメッセージ受信部42から送られるメッセージの解析を行い、解析情報を直接アプリケーション転送処理部48に送るとともに、受信メッセージから得られたアプリケーションサーバのメモリ情報をコスト計算部44に送付する。
【００３７】
コスト計算部44は、メッセージ解析部24から送られたアプリケーションサーバのメモリ情報を基にメモリコスト値を計算し、クライアントネットワーク対応側のコストテーブル管理部46に送る。
【００３８】
コストテーブル管理部46は、コスト計算部44から送られたメモリコスト値を基に転送メッセージ情報とメモリの変化量との対応関係をコストテーブルとして更新管理を行う。この更新されたコストテーブルを使いメッセージ解析部24から送られた情報に対応するメモリコスト値を選び、メッセージ解析部24に送る。
【００３９】
以降は、第１の実施例と同じであるので書略する。
【００４０】
次に、第２の実施例におけるSIPアプリケーションサーバのロードバランサ200の動作方法について、図８のフローチャートを参照にしながら、主に新たに変更された動作方法について説明する。なお第１の実施例と同じ動作は簡略化して、できるだけ反復説明を避ける。
【００４１】
まず、インターネットなどのネットワークからネットワークメッセージ受信部22でメッセージが受信され(S202)、メッセージ解析部24に送られメッセージの解析が行われる(S204)。
【００４２】
解析結果は、コスト計算部44に送られ、メッセージに含まれるアプリケーションサーバのメモリ情報からコスト値を計算する(S206)。
【００４３】
計算されたコスト値は、コストテーブル管理部46に送られコストテーブルのデータが更新される(S208)。
【００４４】
以降、第１の実施例と同様に、更新されたコストテーブルを基にアプリケーションサーバの振り分けが行われる(S210)。
【００４５】
ここで、ロードバランサが受信するメッセージを送信するSIPアプリケーションサーバの一例について図９を用いて説明する。
【００４６】
たとえば、SIPアプリケーションサーバ300は、メッセージ受信部62と、アプリケーション実行部64とメモリ管理部66とメッセージ送信部68とを含んで構成される。
【００４７】
メッセージ受信部62は、ネットワークからメッセージを受信し、アプリケーション実行部64に送る。
【００４８】
アプリケーション実行部64は、メッセージ受信部62より送られたメッセージに基づきアプリケーションプログラムを実行し、そのプログラム実行結果をメッセージ送信部68に送る。
【００４９】
メモリ管理部66は、アプリケーションサーバでのメモリ使用状況などのメモリ情報を取得し、メッセージ送信部68に送る。
【００５０】
メッセージ送信部68は、アプリケーション実行部64から送られるプログラム実行結果とメモリ管理部66から送られるメモリ情報とを含むメッセージをネットワークへ送信する。
【００５１】
次に、SIPアプリケーションサーバの動作について図１０を用いて説明する。
【００５２】
インターネットなどのネットワークからメッセージ受信部62でメッセージが受信される(S302)と、メモリ監視開始指示がメモリ管理部66に出される(S304)。
【００５３】
メモリ管理部66ではこの開始指示に基づきその時点のメモリ使用量を保存する(S306)。
【００５４】
アプリケーション実行部64でアプリケーションが実行され(S308)、終了するとメモリ監視終了指示がメモリ管理部66に出される(S310)。
【００５５】
メモリ管理部66ではこの終了指示に基づき、終了時点でのメモリ使用量と、保存されていた開始時点のメモリ使用量とのメモリ差分計算が行われ（S312）、消費されたメモリ量が計算される。
【００５６】
消費されたメモリ情報は、SIPメッセージのヘッダ内にパラメータ値として埋め込まれ、メモリ情報を含むヘッダをもったSIPメッセージが生成され(S314)、メッセージ送信部68より送信される(S316)。
【００５７】
なお、図３に示したメッセージ分類要素は、一例であり、他にメッセージサイズなど新たな要素を加えても構わないし、処理の高速化のために分類要素を絞り込んでも構わない。
【００５８】
また、第２の実施例において、アプリケーションサーバからのメモリ情報を基に毎回コスト値を計算するのではなく、運用前にメッセージ転送を試みてあらかじめ得たコスト値を基に処理することによりメモリ情報算出処理を省略し、負荷の軽減をはかることも可能である。
【００５９】
このように第１の実施例によれば、SIPアプリケーションサーバのロードバランサにおいて、GCが発生する契機の一つとなるメモリ使用量の分散を行い、その結果、Full GCの発生をほとんど回避させることが可能となり、全体的な性能の効率を維持することができる。
【００６０】
また、第２の実施例によれば、あらかじめメモリコスト値が設定できない場合やより確度の高いメモリコスト値を用いた場合でも、より正確なメモリコスト値が得られ、より高い精度で分散化を制御することを可能とし Full GC 発生を極力抑制できるロードバランサを提供することができる。
【図面の簡単な説明】
【００６１】
【図１】本発明の実施例によるロードバランサを示すブロックである。
【図２】一般的なSIPアプリケーションサーバとロードバランサの配置図である。
【図３】本発明の実施例によるロードバランサの説明の図である。
【図４】本発明の実施例によるロードバランサの説明の図である。
【図５】本発明の実施例によるロードバランサの説明の図である。
【図６】図１に示す実施例におけるロードバランサの動作を示すフローチャートである。
【図７】本発明の他の実施例によるロードバランサを示すブロックである。
【図８】図７に示す実施例におけるロードバランサの動作を示すフローチャートである。
【図９】本発明の他の実施例によるSIPアプリケーションサーバを示すブロックである。
【図１０】図９に示す実施例におけるSIPアプリケーションサーバの動作を示すフローチャートである。
【符号の説明】
【００６２】
100,200  ロードバランサ
300  SIPアプリケーションサーバ
22  ネットワークメッセージ受信部
24  メッセージ解析部
26,46  コストテーブル管理部
28  ネットワーク転送処理部
30  メモリテーブル管理部
32  ネットワークメッセージ送信部
42  アプリケーションメッセージ受信部
44  コスト計算部
48  アプリケーション転送処理部
52  アプリケーションメッセージ送信部
64  アプリケーション実行部
66  メモリ管理部
【図１】
2010079670.tif 000003
【図２】
2010079670.tif 000004
【図３】
2010079670.tif 000005
【図４】
2010079670.tif 000006
【図５】
2010079670.tif 000007
【図６】
2010079670.tif 000008
【図７】
2010079670.tif 000009
【図８】
2010079670.tif 000010
【図９】
2010079670.tif 000011
【図１０】
2010079670.tif 000012