(57)【特許請求の範囲】
【請求項１】
プロセッサを有し、ネットワークを構成する通信装置であって、
前記プロセッサ上で動作し通信における優先度を指定するアプリケーションと、
前記アプリケーションを前記ネットワーク上の他の通信装置と接続して通信を行う通信手段と、
前記通信手段が通信を行っている間に前記プロセッサの負荷を測定する負荷計測手段と、
前記プロセッサの負荷および前記優先度に基づいてヘルスチェックを行う間隔を調整するヘルスチェック間隔調整手段と、
前記ヘルスチェック間隔調整手段が調整した間隔でヘルスチェックを実行するヘルスチェック実行手段と
を有することを特徴とする通信装置。
【請求項２】
前記ヘルスチェック間隔調整手段が、前記プロセッサの負荷が過負荷とならない所定の範囲内になるように前記ヘルスチェックを行う間隔を調整することを特徴とする、請求項１に記載の通信装置。
【請求項３】
前記ヘルスチェック実行手段が、前記プロセッサの負荷に関する情報を前記ヘルスチェックにおいて送信するヘルスチェックパケットに含めることを特徴とする、請求項２に記載の通信装置。
【請求項４】
前記ネットワーク上の他の通信装置から受信したヘルスチェックパケットに含まれる情報の中から前記他の通信装置が有するプロセッサの負荷に関する情報を取得する通信相手状況取得手段を有し、
前記ヘルスチェック間隔調整手段が、前記通信相手状況取得手段が取得した他の通信装置のプロセッサの負荷が高負荷を示していれば該通信装置に対するヘルスチェックの間隔を短縮しないことを特徴とする、請求項３に記載の通信装置。
【請求項５】
前記ヘルスチェック間隔調整手段に、数値が大きいほど前記プロセッサの負荷が高い状態を表す進行度と前記優先度および前記進行度に対応して調整段階を決定する進行度マトリックスとを記憶する記憶手段を併設すると共に、
前記ヘルスチェック間隔調整手段が、前記進行度マトリックスによって決定される調整段階に応じて前記ヘルスチェックを行う間隔を調整することを特徴とする、請求項２に記載の通信装置。
【請求項６】
前記ヘルスチェック間隔調整手段が、前記ヘルスチェックを行う間隔のとりうる最大値および最小値をそれぞれ最大間隔および最小間隔とし、前記調整段階のとりうる最大値および最小値をそれぞれ最高調整段階および最低調整段階とすると、前記ヘルスチェックを行う間隔を最小間隔＋（最大間隔−最小間隔）＊（最高調整段階−調整段階）÷（最高調整段階−最低調整段階）の式によって決定することを特徴とする、請求項５に記載の通信装置。
【請求項７】
前記アプリケーションが、前記最大間隔および最小間隔を前記優先度に応じて決定することを特徴とする、請求項６に記載の通信装置。
【請求項８】
前記ヘルスチェック間隔調整手段が、前記進行度マトリックスによって決定される調整段階が現在行われている通信における調整段階と異なる通信に対して前記ヘルスチェックを行う間隔を調整することを特徴とする、請求項５に記載の通信装置。
【請求項９】
前記進行度マトリックスによって決定される調整段階が現在行われている通信における調整段階と異なる通信が存在せずかつ前記プロセッサの負荷が前記所定の範囲より高い場合に前記進行度を加算し、前記進行度マトリックスによって決定される調整段階が現在行われている通信における調整段階と異なる通信が存在せずかつ前記プロセッサの負荷が前記所定の範囲より低い場合に前記進行度を減算することを特徴とする、請求項８に記載の通信装置。
【請求項１０】
前記通信装置が、クライアント−サーバシステムにおいて相互に接続されるサーバもしくは端末を構成する通信装置であることを特徴とする、請求項１ないし請求項９のうちいずれか１項に記載の通信装置。
【請求項１１】
アプリケーションを実行するプロセッサと記憶手段とを有し、ネットワークを構成する通信装置においてヘルスチェックを行う間隔を調整する方法であって、
前記アプリケーションが通信における優先度を指定する優先度指定工程と、
前記アプリケーションを前記ネットワーク上の他の通信装置と接続して通信を行う通信工程と、
前記通信工程の間に前記プロセッサの負荷を測定する負荷計測工程と、
前記プロセッサの負荷および前記優先度に基づいてヘルスチェックを行う間隔を調整するヘルスチェック間隔調整工程と、
前記ヘルスチェック間隔調整工程で調整された間隔でヘルスチェックを実行するヘルスチェック工程と
を有することを特徴とするヘルスチェック間隔調整方法。
【請求項１２】
前記ヘルスチェック間隔調整工程が、前記プロセッサの負荷が過負荷とならない所定の範囲内になるように前記ヘルスチェックを行う間隔を調整することを特徴とする、請求項１１に記載のヘルスチェック間隔調整方法。
【請求項１３】
前記ヘルスチェック工程が、前記プロセッサの負荷に関する情報を前記ヘルスチェックにおいて送信するヘルスチェックパケットに含めることを特徴とする、請求項１２に記載のヘルスチェック間隔調整方法。
【請求項１４】
前記ネットワーク上の他の通信装置からヘルスチェックパケットを受信して、該ヘルスチェックパケットに含まれる情報の中から前記他の通信装置が有するプロセッサの負荷に関する情報を取得する通信相手状況取得工程を有し、
前記ヘルスチェック間隔調整工程が、前記通信相手状況取得工程で取得された他の通信装置のプロセッサの負荷が高負荷を示していれば該通信装置に対するヘルスチェックの間隔を短縮しないことを特徴とする、請求項１３に記載のヘルスチェック間隔調整方法。
【請求項１５】
前記ヘルスチェック間隔調整工程が、数値が大きいほど前記プロセッサの負荷が高い状態を表す進行度と前記優先度および前記進行度に対応して調整段階を決定する進行度マトリックスとを前記記憶手段から読み取り、前記進行度マトリックスによって決定される調整段階に応じて前記ヘルスチェックを行う間隔を調整することを特徴とする、請求項１２に記載のヘルスチェック間隔調整方法。
【請求項１６】
前記ヘルスチェック間隔調整工程が、前記ヘルスチェックを行う間隔のとりうる最大値および最小値をそれぞれ最大間隔および最小間隔とし、前記調整段階のとりうる最大値および最小値をそれぞれ最高調整段階および最低調整段階とすると、前記ヘルスチェックを行う間隔を最小間隔＋（最大間隔−最小間隔）＊（最高調整段階−調整段階）÷（最高調整段階−最低調整段階）の式によって決定することを特徴とする、請求項１５に記載のヘルスチェック間隔調整方法。
【請求項１７】
アプリケーションを実行するプロセッサを有し、ネットワークを構成する通信装置を構成するコンピュータに、
前記アプリケーションが通信における優先度を指定する処理と、
前記アプリケーションを前記ネットワーク上の他の通信装置と接続して通信を行う通信処理と、
前記通信処理の間に前記プロセッサの負荷を測定する処理と、
前記プロセッサの負荷および前記優先度に基づいてヘルスチェックを行う間隔を調整するヘルスチェック間隔調整処理と、
前記ヘルスチェック間隔調整工程で調整された間隔でヘルスチェックを実行する処理と
を実行させることを特徴とするヘルスチェック間隔調整プログラム。
【請求項１８】
前記ヘルスチェック間隔調整処理が、前記プロセッサの負荷が所定の範囲内になるように前記ヘルスチェックを行う間隔を調整することを特徴とする、請求項１７に記載のヘルスチェック間隔調整プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、通信網においてヘルスチェックを行う技術に関し、特に通信機器に過大な負荷をかけずにヘルスチェックを行う技術に関する。
【背景技術】
【０００２】
ネットワークが普及し、またその中でも映像や音声などのようなリッチコンテンツの利用が増えているので、ネットワークを介して交換されるデータの量は増大する一方である。そのようなネットワークにおいて、通信機器、回線、端末などの異常を検出する技術が重要性を増しているのは言うまでもない。特に、リッチコンテンツを利用した通信においては、現在行われている通信の品質を劣化させることなく、異常を検出することが求められる。
【０００３】
異常を検出する方法で一般的に行われているのが、ヘルスチェックと呼ばれる方法である。ヘルスチェックは、専用のパケット（以後ヘルスパケットという）を現在行われている通信のパケットの中に交えて送信し、チェックの対象となるコンピュータやネットワーク機器（以後チェック対象装置という）からの返信を受信して、チェック対象装置の正常な動作を確認するという手法である。
【０００４】
ヘルスチェックによって、ネットワークや装置の異常を外部の監視装置から検出することが可能である。また、ヘルスパケットで送信するコマンドの種類によって、チェック対象装置のどの部分で異常が生じているかを特定することもできる。たとえばＰｉｎｇコマンドをチェックすることによって、レイヤ３の動作を確認できる。ポートをチェックすることによって、レイヤ４の動作を確認できる。ＨＴＴＰなどのようなプロトコルをチェックして、アプリケーションの動作を確認できる…などのように、異常の発生要因を特定することができる。
【０００５】
ヘルスチェックを短い間隔で行えば行うほど、より迅速にチェック対象装置の異常を特定して対応することができる。しかし、現在行われている通信のパケットにヘルスパケットが加わるので、ヘルスチェックを短い間隔で行うと、通信機器や回線などの負荷を増すこととなる。このため、通信機器や回線などの負荷を増大させることなく、かつ高精度に障害の発生箇所を特定できる技術が求められる。
【０００６】
ネットワークの異常の検出に係る負荷を分散する方法として、たとえば以下のような技術が開示されている。特許文献１には、各装置固有の処理に合わせたヘルスチェックを行うことを可能とするため、各装置の応答時間を最初にネゴシエーションをして、各装置に適したヘルスチェックの応答待ち時間を設定するという技術が開示されている。特許文献２には、ヘルスチェックの種類に応じて通信可否確認用の短期ヘルスチェック、機能障害検出用の長期ヘルスチェックを使い分けることで、負荷を抑制しつつ、被監視対象の異常を早期に検出するという技術が開示されている。特許文献３には、変更可能な周期でヘルスパケットを送信して、対象ノードの系ごとに正常・異常を判定して結果を保存して伝送路を選択する技術が開示されている。
【０００７】
【特許文献１】特開平０８−２２３１９１号公報
【特許文献２】特開２００２−３３０１９１号公報
【特許文献３】特開２００３−０１８２１７号公報
【発明の開示】
【発明が解決しようとする課題】
【０００８】
負荷が比較的安定しているテキストベースなどの通信に比べて、リッチコンテンツを利用した通信においては、通信機器や回線などに対する負荷が急激に変動することが多い。しかしながら、特許文献１および２に示した従来技術では最初にヘルスチェックの間隔を決定したら、その後での負荷の変動に対応してヘルスチェックの間隔を変更することができない。また、自らの装置にかかる負荷を検出する手段もない。特許文献３の技術ではヘルスチェックの間隔を変更することは可能だが、装置にかかる負荷に応じて間隔を変更するものではない。
【０００９】
そのため、事前にヘルスチェックの間隔を固定化してしまうと、短い間隔でヘルスチェックを行っているときに負荷が急激に増大して、通信機器や回線などが過負荷となってしまうことがある。このことは、通信品質の急激な低下を招くこととなる。逆に、長い間隔でヘルスチェックを行っている状態では、障害の検出に時間がかかり、障害の発生箇所の特定も難しくなる。
【００１０】
さらに、通信の相手となる通信機器の負荷を検出することもできない。このため、障害の発生箇所を高精度に特定しようとして自らの装置において短い間隔でヘルスチェックを行うと、通信相手を過負荷としてしまうこともある。
【００１１】
本発明の目的は、自らの装置および通信相手の装置を含んだ通信装置の負荷の変化に対応して、柔軟にヘルスチェックの間隔を変更することが可能な通信装置、ヘルスチェック間隔調整方法およびヘルスチェック間隔調整プログラムを提供することにある。
【課題を解決するための手段】
【００１２】
上記目的を達成するため、本発明に係る通信装置は、プロセッサを有し、ネットワークを構成する通信装置であって、プロセッサの制御によって動作し、通信における優先度を指定するアプリケーションと、アプリケーションをネットワーク上の他の通信装置と接続して通信を行う通信手段と、通信手段が通信を行っている間にプロセッサの負荷を測定する負荷計測手段と、プロセッサの負荷および優先度に基づいてヘルスチェックを行う間隔を調整するヘルスチェック間隔調整手段と、ヘルスチェック間隔調整手段が調整した間隔でヘルスチェックを実行するヘルスチェック実行手段とを有することを特徴とする。
【００１３】
上記目的を達成するため、本発明に係るヘルスチェック間隔調整方法は、アプリケーションを実行するプロセッサを有し、ネットワークを構成する通信装置においてヘルスチェックを行う間隔を調整する方法であって、アプリケーションが通信における優先度を指定する優先度指定工程と、アプリケーションをネットワーク上の他の通信装置と接続して通信を行う通信工程と、通信工程の間にプロセッサの負荷を測定する負荷計測工程と、プロセッサの負荷および優先度に基づいてヘルスチェックを行う間隔を調整するヘルスチェック間隔調整工程と、ヘルスチェック間隔調整工程で調整された間隔でヘルスチェックを実行するヘルスチェック工程とを有することを特徴とする。
【００１４】
上記目的を達成するため、本発明に係るヘルスチェック間隔調整プログラムは、アプリケーションを実行するプロセッサを有し、ネットワークを構成する通信装置を構成するコンピュータに、アプリケーションが通信における優先度を指定する処理と、アプリケーションをネットワーク上の他の通信装置と接続して通信を行う通信処理と、通信処理の間にプロセッサの負荷を測定する処理と、プロセッサの負荷および優先度に基づいてヘルスチェックを行う間隔を調整するヘルスチェック間隔調整処理と、ヘルスチェック間隔調整工程で調整された間隔でヘルスチェックを実行する処理とを実行させることを特徴とする。
【発明の効果】
【００１５】
本発明は、上記したようにプロセッサの負荷および優先度に基づいてヘルスチェックを行う間隔を調整するように構成したので、プロセッサの負荷が変化してもそれに対応してヘルスチェックの間隔を変更することができる。これによって、自らの装置および通信相手の装置を含んだ通信装置の負荷の変化に対応して、柔軟にヘルスチェックの間隔を変更することが可能であるという、従来にない優れた通信装置、ヘルスチェック間隔調整方法およびヘルスチェック間隔調整プログラムを提供することができる。
【発明を実施するための最良の形態】
【００１６】
図１は、本発明の実施の形態に係るネットワーク１の構成例について示すブロック図である。ネットワーク１はクライアント−サーバシステムであり、相互に接続された複数のサーバ装置１０１および複数の端末装置１０２によって構成される。以後、端末装置とサーバ装置の総称として通信装置１００という。それぞれの通信装置上にはＡＰ（アプリケーション）が稼働し、端末装置１０２上の端末用ＡＰ１１２はサーバ装置１０１上のサーバ用ＡＰ１１１と通信している。
【００１７】
図１に示した例では、サーバ装置１０１ａ上のサーバ用ＡＰ１１１ａに対して、端末装置１０２ａ上の端末用ＡＰ１１２ａ、端末装置１０２ｂ上の端末用ＡＰ１１２ｂ、端末装置１０２ｃ上の端末用ＡＰ１１２ｃが通信を行っている。またサーバ装置１０１ｂ上のサーバ用ＡＰ１１１ｂに対して、端末装置１０２ａ上の端末用ＡＰ１１２ｄが通信を行っている。このように、それぞれの通信装置には複数のＡＰが存在しており、各々のＡＰが複数の通信装置上のＡＰとの間で通信を行うことができる。
【００１８】
図２は、図１で示した通信装置１００（サーバ装置１０１および端末装置１０２）の内部構成を示すブロック図である。通信装置１００はＡＰ１１０、通信手段１２０、障害検出負荷調整手段１３０、記憶手段１４０、およびＣＰＵ１５０から構成される。ＣＰＵ１５０は、ＡＰ１１０、通信手段１２０、障害検出負荷調整手段１３０の各機能を実行する。記憶手段１４０は、ＡＰ１１０および障害検出負荷調整手段１３０から読み書き可能であり、後述の通信情報２１０、状態変数２２０と進行度マトリックス２３０を記憶する。
【００１９】
ＡＰ１１０はサーバ用ＡＰ１１１と端末用ＡＰ１１２とを総称していう。ＡＰ１１０や通信手段１２０が切り替わることにより、通信装置１００がサーバ装置１０１と端末装置１０２のうちのどちらであるかが決定される。１台の通信装置１００において、複数のＡＰ１１０が動作しうる。
【００２０】
ＡＰ１１０は、たとえば音声通話、映像通話、資料共有、アプリケーション共有、Ｗｅｂ共有、チャット、掲示板などである。ＡＰ１１０は一つのあるいは複数の通信手段１２０を所有しており、相手の通信装置１００上のＡＰ１１０との間で通信手段１２０を介して任意のフォーマットとプロトコルで通信が行われる。また、サーバ装置１０１が複数の端末装置１０２との通信を行うまたは中継する場合には、サーバ用ＡＰ１１１が複数の通信手段１２０を介して、複数の端末装置１０２上の端末用ＡＰ１１２と通信を行う。
【００２１】
通信手段１２０は、他の通信装置１００上の通信手段１２０との間で通信を行う。ＡＰ１１０からの任意のプロトコルでの通信と、障害検出負荷調整手段１３０にあるヘルスチェック実行手段１３４で発生して転送されるヘルスパケットの送信と、別の通信装置１００から送信されたヘルスパケットの受信およびヘルスチェック実行手段１３４への転送を行う。１台の通信装置１００において複数のＡＰ１１０が動作する場合、各々のＡＰ１１０に対応した複数の通信手段１２０が用意される。
【００２２】
障害検出負荷調整手段１３０は、ＡＰ間のヘルスチェック間隔調整手段１３１（以後間隔調整手段１３１という）、負荷計測手段１３２、通信相手状況取得手段１３３、ヘルスチェック実行手段１３４から構成される。各々の動作の詳細は後述する。
【００２３】
間隔調整手段１３１は、負荷計測手段１３２から送られてくる現在の通信装置１００の負荷と、通信相手状態取得手段１３３から送られる通信相手の負荷状況と、ＡＰ１１０が記憶手段１４０に登録した通信情報２１０（後述）に基づいて、状態変数２２０（後述）と進行度マトリックス２３０（後述）で計算されるヘルスチェック間隔を各通信に割り当てる。
【００２４】
図３は、図２で示した記憶手段１４０に記憶される通信情報２１０および状態変数２２０のデータ構成を示す概念図である。図４は、図２で示した記憶手段１４０に記憶される進行度マトリックス２３０の構成を示す概念図である。
【００２５】
通信情報２１０は、ヘルスチェックを行う間隔の最大値と最小値を示す最大間隔２１１と最小間隔２１２、実際にヘルスチェックを行う間隔である実行間隔２１３、および現在の通信状態を表す優先度２１４、調整段階２１５、通信相手の負荷２１６とで構成される。
【００２６】
このうち、最大間隔２１１と最小間隔２１２、優先度２１４はＡＰ１１０が指定した値であり、実行間隔２１３、現在の調整段階２１５、通信相手の負荷２１６は障害検出負荷調整手段１３０が随時書き換える値である。最大間隔２１１および最小間隔２１２は、本実施の形態では優先度２１４に応じて決定されるが、これ以外の要素によって決定することも可能である。
【００２７】
状態変数２２０には現在の通信において設定された進行度を表す進行度２２１と、ＣＰＵ１５０の負荷を表す自身の負荷２２２が記憶される。
【００２８】
進行度マトリックス２３０は横軸を優先度２１４、縦軸を調整段階２１５として、これらに対応する進行度２２１の値を決定するマトリックスである。通信装置１００が起動されるとき、進行度マトリックス２３０には進行度２２１の値として初期化された定数が入る。すなわち、優先度＝「１」かつ調整段階＝「１」のグリッドが進行度の最大値が記入される。そこから優先度を＋１、調整段階を−１したグリッドに、進行度を−１した値が記入される。ただし、優先度を＋１、調整段階を−１した所にグリッドが存在しない（グリッドの枠外である）場合は、まだ進行度が記入されていないグリッドの中で最も優先度の高いグリッドに進行度を−１した値が記入される。進行度マトリックス２３０では、優先度１〜４、調整段階１〜４の１６マスのグリッドを、上記の原則で記入している。進行度２２１の最大値は１６、最小値は１である。
【００２９】
進行度マトリックス２３０は、優先度２１４および調整段階２１５に対応する進行度２２１の値を決定する。優先度２１４は、数値が小さいほど優先度が高いと定義する。調整段階２１５はヘルスチェックの間隔を決定する変数であり、この数値に応じて、以下の式によってヘルスチェックの間隔（実行間隔２１３）が決定される。なお、最高調整段階および最低調整段階は、調整段階２１５の設計上とりうる最大値および最小値である。前述の図４に示された例では最高調整段階＝４、最低調整段階＝１となる。
【００３０】
［数１］
実行間隔２１３  ＝  最小間隔２１２＋（最大間隔２１１−最小間隔２１２）＊（最高調整段階−調整段階２１５）÷（最高調整段階−最低調整段階）
【００３１】
調整段階２１５の数値が高いほど、ヘルスチェック間隔が小さくなり、障害発生箇所を高い精度で検出できるようになるが、ヘルスチェック回数の増加に伴い通信装置１００に対する負荷も増加することになる。そのため、通信実行時には進行度２２１が負荷の状況に応じて変動し、進行度２２１の数値を超えない範囲で、間隔調整手段１３１が優先度２１４における調整段階２１５を選択し、最大間隔２１１および最小間隔２１２の間の範囲で実行間隔２１３を決定する。
【００３２】
進行度２２１は負荷状況と比例しており、負荷が高いほど進行度２２１の数値は大きくなる。進行度２２１の数値が大きくなるのは負荷が増加したときであり、優先度２１４の低い通信から各通信のヘルスチェックの間隔が広がっていく。逆に進行度２２１の数値が小さくなるのは負荷が減少したときであり、優先度２１４の高い通信から各通信のヘルスチェック間隔が縮まっていく。進行度マトリックス２３０を使うことで、各通信の最大間隔２１１と最小間隔２１２の間の実行間隔２１３の変動を、優先度２１４の違いによってスムーズに遷移させることが可能となる。
【００３３】
間隔調整手段１３１は、通信実行中は負荷計測手段１３２から通信装置１００の負荷を受け取り、そこから逆算される許容負荷範囲に収まるように各通信のヘルスチェックの間隔を調整する。閾値判定によって、高負荷あるいは低負荷になったら、実行間隔２１３の調整を開始する。
【００３４】
ヘルスチェック間隔の調整は、まず現在の進行度２２１に基づいて、進行度マトリックス２３０によって調整段階２１５の値を決定する。各優先度２１４のチャネルにおいて、進行度マトリックス２３０から進行度２２１の値を越えない一番大きな調整段階２１５を選択する。ただし、「進行度２２１の値を越えない一番大きな調整段階２１５」が存在しない（すべての調整段階において、進行度２２１の値を越える）場合は、最高調整段階（この場合は調整段階４）を選択する。
【００３５】
例えば、進行度２２１＝９の場合は、図４の進行度マトリックス２３０から、優先度１では調整段階４、優先度２では調整段階３、優先度３では調整段階２、優先度４では調整段階１となり、進行度が５の場合は、優先度１では調整段階４、優先度２では調整段階４、優先度３では調整段階３、優先度４では調整段階２が選択される。つまり、進行度２２１の数値が大きいほど、低優先度の通信の調整段階が小さくなることになる。
【００３６】
通信情報２１０には、行われている各通信の現在の調整段階２１５が記憶されている。ここに記憶された調整段階２１５と、進行度マトリックス２３０から算出された調整段階が異なる場合に、各通信の調整段階を算出された調整段階の値に修正し、数１の式によって正しい間隔を設定して、ヘルスチェックの実行間隔を変更する。このように、調整段階２１５が異なる通信だけを選択することで、全通信を再計算しなくてもよいので、ヘルスチェックの間隔の変更に伴う計算量を削減することができる。
【００３７】
ただし、通信相手の負荷２１６に記憶された状況によって、相手が過負荷であると判断される場合には、その通信の調整段階の上昇は取りやめ、通信相手の負荷の上昇を防止し、ほかの通信の調整段階の変更を優先させる。そして、記憶された調整段階２１５と、進行度マトリックス２３０から算出された調整段階がすべて一致する場合には、負荷計測手段１３２が測定した通信装置１００の負荷が低負荷状態の場合には進行度２２１を加算し、高負荷状態の場合には進行度２２１を減算する。
【００３８】
進行度２２１が加算されると調整段階２１５が減少し、ヘルスチェックの間隔（実行間隔２１３）が増加して、負荷を低減する。逆に、進行度が減算されると調整段階２１５が増加して、ヘルスチェックの間隔（実行間隔２１３）が減少して一定範囲で負荷は増えるが、ヘルスチェックの精度が向上する。この一連の動作を、前述の許容負荷範囲に収まるところまで繰り返す。
【００３９】
間隔調整手段１３１は、ヘルスチェック実行手段１３４にヘルスチェック間隔（実行間隔２１３）の変更と、自身のＣＰＵ１５０の負荷（以後ＣＰＵ負荷という）についての情報を送付する。そして自身の通信装置１００にＣＰＵ負荷の増加を許容する余地がない、つまり進行度２２１の数値が設定値よりも大きい場合には、高負荷状態であることをヘルスチェック実行手段１３４によって通信相手に通達させる。
【００４０】
負荷計測手段１３２は自身のＣＰＵ１５０の負荷を測定し、現状のＣＰＵ負荷を間隔調整手段１３１に送付し、また自身の負荷２２２として記憶装置１４０に記憶する。ＣＰＵ負荷を測定する方法は、公知の技術を適用することができる。通信相手状況取得手段１３３は通信相手のヘルスチェック実行手段１３４から受け取った通信相手の負荷状況を取得し、通信情報２１０の通信相手の負荷２１６に記憶する。
【００４１】
ヘルスチェック実行手段１３４は、間隔調整手段１３１が決定した実行間隔２１３によって、通信相手に対してヘルスチェックを行う。ヘルスチェックは一方向でも双方向でも可能であり、通信相手から相互にヘルスチェックが行われる。ヘルスチェック実行手段１３４はまた、自身のＣＰＵ負荷をヘルスパケットに記載して通信相手に送付し、相手から受け取ったＣＰＵ負荷は通信相手状況取得手段１３３に渡す。
【００４２】
図５は、図１で示したネットワーク１における通信の流れを書き表したフローチャートである。通信装置１００が通信を開始すると（ステップＳ３００）、まずは通信装置１００同士が所定のプロトコルに基づいて接続される（ステップＳ３０１）。すると、開始された通信について進行度２２１に応じた初期値設定を行う（ステップＳ３０２）。何も通信がない状態から開始した場合は、通信負荷がないので、進行度の値は１から始まる。他の通信が既に行われている状態で開始した場合は、その時点での進行度２２１が設定される。
【００４３】
通信が定常状態に入ると（ステップＳ３０３）、一定間隔あるいは、ＡＰ１１０の実行や通信回線の追加などのイベントをトリガーとして、負荷検出（ステップＳ３０４）に移行する。検出された負荷が許容される負荷の範囲にあるか否かどうかの判定を行い（ステップＳ３０５）、範囲外にあると判断される場合は後述の図６に示すＡＰ間負荷調整を行う（ステップＳ３０６）。
【００４４】
定常状態のステップＳ３０３から通信が切断されると、切断処理に移り（ステップＳ３０７）、該通信は状態記憶手段１４０から削除されて（ステップＳ３０８）終了する（ステップＳ３０９）。通信切断によっては通信に係る負荷が軽減されるので、その後の負荷検出時にはほかの通信のヘルスチェックの精度が向上する可能性がある。逆に、定常状態のときに他の通信が接続された場合には、ステップ３０１からのフローで通信が増やされる。すると、通信に係る負荷が増加するので、その後の負荷検出時には他の通信のヘルスチェックの精度が低下する可能性がある。
【００４５】
図６〜８は、図５のステップＳ３０６で示した、間隔調整手段１３１が行うＡＰ間負荷調整の処理をより詳細に書き表したフローチャートである。錯綜を避けてわかりやすくするため、図６〜８の３枚に分けて描かれている。ＡＰ間負荷調整の処理が開始されると（ステップＳ４００）、負荷計測手段１３２が自身の通信装置１００の現状のＣＰＵ負荷を測定して取得し（ステップＳ４０１）、間隔調整手段１３１は取得されたＣＰＵ負荷を所定の低負荷閾値および高負荷閾値と比較する（ステップＳ４０２〜Ｓ４０３）。ちなみに低負荷閾値＜高負荷閾値である。
【００４６】
間隔調整手段１３１は、現状のＣＰＵ負荷が低負荷閾値未満であれば、図７のステップＳ５１０に進み、ヘルスチェック間隔を縮める動作に入る。現状のＣＰＵ負荷が高負荷閾値以上であれば、図８のステップＳ６２０に進み、ヘルスチェック間隔を広げる動作に入る。現状のＣＰＵ負荷が低負荷閾値以上高負荷閾値未満であれば、ＡＰ間負荷調整の必要はないと判断し、ステップＳ４０４に進んで処理を終了する。
【００４７】
低負荷時にヘルスチェック間隔を縮める動作に進んだ場合、まず進行度２２１に基づいて通信を選択する（ステップＳ５１０）。各優先度２１４の通信ごとに、進行度マトリックス２３０を参照して、該当の進行度２２１の値を超えない調整段階２１５を算出し、各通信の現在の調整段階２１５と、進行度マトリックス２３０から算出された調整段階が異なる通信を選択する。
【００４８】
ステップＳ５１０で「調整段階が異なる通信」に該当する通信があるか否かを判断し（ステップＳ５１１）、該当の通信がない場合には進行度２２１を減算して（ステップＳ５１２）ステップＳ５１０に戻る。進行度２２１を減算すると、ヘルスチェックの間隔をより小さくする調整段階２１５が指定されるので、ヘルスチェックの精度を向上することができる。
【００４９】
ステップＳ５１１で該当する通信が存在する場合、通信相手の負荷２１６を参照して、該通信の相手の通信装置１００が高負荷かどうかを判定する（ステップＳ５１３）。通信相手が高負荷の場合には、相手の負荷をこれ以上増やさないように、該通信を選択から除外してステップＳ５１０に戻り、別の通信の選択を行う。
【００５０】
通信相手が高負荷でなければ、間隔調整手段１３１は、実行間隔２１３を調整段階２１５に対応したヘルスチェック間隔に設定し（ステップＳ５１４）、ヘルスチェック間隔の変更情報をヘルスパケットに含めて相手の通信装置１００に対して送信する（ステップＳ５１５）。該ヘルスパケットを受信した相手の通信装置１００は、受け取ったヘルスチェック間隔を通信相手の負荷２１６として記憶する。
【００５１】
そして、自身の通信装置１００においても、現状の進行度２２１、調整段階２１５、ヘルスチェック間隔（実行間隔２１３）などを記憶装置１４０に記憶して（ステップＳ５１６）、他の通信に対して判定するため図６のステップＳ４００に戻る。
【００５２】
負荷時にヘルスチェック間隔を広げる動作に進んだ場合、まず進行度２２１に基づいて通信を選択する（ステップＳ６２０）。各優先度２１４の通信ごとに、進行度マトリックス２３０を参照して、該当の進行度２２１の値を超えない調整段階２１５を算出し、各通信の現在の調整段階２１５と、進行度マトリックス２３０から算出された調整段階が異なる通信を選択する。
【００５３】
ステップＳ６２０で「調整段階が異なる通信」に該当する通信があるか否かを判断し（ステップＳ６２１）、該当の通信がない場合には進行度２２１を加算して（ステップＳ６２２）ステップＳ６２０に戻る。進行度２２１を加算すると、ヘルスチェックの間隔をより大きくする調整段階２１５が指定されるので、ヘルスチェックの精度は低下するが、ＣＰＵ負荷を軽減することができる。
【００５４】
ステップＳ６２１で該当する通信が存在する場合、間隔調整手段１３１は、実行間隔２１３を調整段階２１５に対応したヘルスチェック間隔に設定し（ステップＳ６２３）、ヘルスチェック間隔の変更情報をヘルスパケットに含めて相手の通信装置１００に対して送信する（ステップＳ６２４）。該ヘルスパケットを受信した相手の通信装置１００は、受け取ったヘルスチェック間隔を通信相手の負荷２１６として記憶する。
【００５５】
そして、自身の通信装置１００においても、現状の進行度２２１、調整段階２１５、ヘルスチェック間隔（実行間隔２１３）などを記憶装置１４０に記憶して（ステップＳ６２５）、他の通信に対して判定するため図６のステップＳ４００に戻る。
【００５６】
図９は、図５〜８に示された動作で実際に設定されるヘルスチェック間隔の例を示す表である。ここでは３つの通信が行われており、それぞれの通信に対して優先度２１４が１〜３の３段階が付与されている。優先度２１４と調整段階２１５はそれぞれ１〜４の４段階が指定可能であるが、優先度２１４＝４はここでは使用しない。図９においては、通信装置１００の進行度２２１が１６、１２、８、１の４通りの場合に、各々の通信においてどのようなヘルスチェック間隔（実行間隔２１３）が設定されるかを示している。
【００５７】
進行度２２１＝１６の場合、進行度マトリックス２３０では優先度２１４＝１〜３のすべてにおいて調整段階２１５＝１となる。これは、通信装置１００の負荷が最も大きくなっている状態を表す。そこから数１に基づいて、各々の優先度２１４において設定可能なヘルスチェック間隔の中で最大の値、つまり最大間隔２１１に等しい値が実行間隔２１３として選択される。これによって、ヘルスチェックに係る負荷がこれ以上増大しないように制御されることになる。
【００５８】
進行度２２１＝１２の場合、通信１は優先度２１４＝１であるから調整段階２１５＝４、通信２は優先度２１４＝２であるから調整段階２１５＝２、通信３は優先度２１４＝３であるから調整段階２１５＝１が選択される。そこから数１に基づいて、通信１は最小間隔２１２に等しい１０ｍｓ、通信２は２０＋（１００−２０）＊（４−２）÷（４−１）＝７３ｍｓ、通信３は最大間隔２１１に等しい１０００ｍｓが実行間隔２１３として選択される。
【００５９】
進行度２２１＝８の場合、通信１は優先度２１４＝１であるから調整段階２１５＝４、通信２は優先度２１４＝２であるから調整段階２１５＝４、通信３は優先度２１４＝３であるから調整段階２１５＝３が選択される。そこから数１に基づいて、通信１は最小間隔２１２に等しい１０ｍｓ、通信２も最小間隔２１２に等しい２０ｍｓ、通信３は２０＋（１００−２０）＊（４−２）÷（４−１）＝７３ｍｓ、通信３は３０＋（１０００−３０）＊（４−３）÷（４−１）＝３５３ｍｓが実行間隔２１３として選択される。
【００６０】
進行度２２１＝１の場合、進行度マトリックス２３０では優先度２１４＝１〜３のすべてにおいて調整段階２１５＝４となる。これは、通信装置１００の負荷が最も小さくなっている状態を表す。そこから数１に基づいて、各々の優先度２１４において設定可能なヘルスチェック間隔の中で最小の値、つまり最小間隔２１２に等しい値が実行間隔２１３として選択され、実施可能な最高の精度でヘルスチェックを行う。
【００６１】
以上のように、本実施の形態では、通信装置１００上にあるＡＰ１１０が指定した優先度２１４およびヘルスチェック間隔の範囲と、通信装置の現在の負荷に応じて、各ＡＰ１１０間のバランスをとってヘルスチェックの間隔を決定することができる。これによって、通信装置１１０に過大な負荷をかけない範囲で、負荷の変動に対応して高精度なヘルスチェックができる。さらに相手の負荷の状況によってはヘルスチェックの精度を向上しないように制御するので、相手の端末が過負荷にならないようにヘルスチェックの間隔を設定できる。
【００６２】
上記で説明した本実施の形態では、優先度２１４および調整段階２１５を各々１〜４の整数、進行度２２１を１〜１６の整数とした。しかしながら、これらの数値の最大値、最小値、および段階数は、設計者が必要に応じて任意に変更しうる事項である。
【００６３】
これまで本発明について図面に示した特定の実施の形態をもって説明してきたが、本発明は図面に示した実施の形態に限定されるものではなく、本発明の効果を奏する限り、これまで知られたいかなる構成であっても採用することができることは言うまでもないことである。
【産業上の利用可能性】
【００６４】
本発明は、複数の通信装置がネットワークを介して通信を行うシステムに適用できる。特に、負荷が急激に変動することが多い、映像や音声などのようなリッチコンテンツを利用するシステム、たとえばＩＰ電話やＷＥＢ会議などのようなシステムに好適である。また、クライアント−サーバシステムに限らず、エンドトゥエンドの通信システムなどにも適用できる。
【図面の簡単な説明】
【００６５】
【図１】本発明の実施の形態に係るネットワークの構成例について示すブロック図である。
【図２】図１で示した通信装置（サーバ装置および端末装置）の内部構成を示すブロック図である。
【図３】図２で示した記憶手段に記憶される通信情報および状態変数のデータ構成を示す概念図である。
【図４】図２で示した記憶手段に記憶される進行度マトリックスの構成を示す概念図である。
【図５】図１で示したネットワークにおける通信の流れを書き表したフローチャートである。
【図６】図５で示した、間隔調整手段が行うＡＰ間負荷調整の処理をより詳細に書き表したフローチャートである。
【図７】図６の続きである。
【図８】図６および図７の続きである。
【図９】図５〜８に示された動作で実際に設定されるヘルスチェック間隔の例を示す表である。
【符号の説明】
【００６６】
１  ネットワーク（クライアント−サーバシステム）
１００  通信装置
１０１  サーバ装置
１０２  端末装置
１１０  ＡＰ（アプリケーション）
１１１  サーバ用ＡＰ
１１２  端末用ＡＰ
１２０  通信手段
１３０  障害検出負荷調整手段
１３１  間隔調整手段（ヘルスチェック間隔調整手段）
１３２  負荷計測手段
１３３  通信相手状況取得手段
１３４  ヘルスチェック実行手段
１４０  記憶手段
１５０  ＣＰＵ（プロセッサ）
２１０  通信情報
２１１  最大間隔
２１２  最小間隔
２１３  実行間隔（ヘルスチェックを行う間隔）
２１４  優先度
２１５  調整段階
２１６  通信相手の負荷（他の通信装置のプロセッサの負荷に関する情報）
２２０  状態変数
２２１  進行度
２２２  自身の負荷（プロセッサの負荷に関する情報）
２３０  進行度マトリックス
【図１】
0004952514.tif 000002
【図２】
0004952514.tif 000003
【図３】
0004952514.tif 000004
【図４】
0004952514.tif 000005
【図５】
0004952514.tif 000006
【図６】
0004952514.tif 000007
【図７】
0004952514.tif 000008
【図８】
0004952514.tif 000009
【図９】
0004952514.tif 000010