(57)【特許請求の範囲】
【請求項１】
クライアントサーバーシステムの各クライアントコンピュータが有するネットワーク負荷制御プログラムによって、直接サーバーのＩ/ Ｏ装置を制御してデータ転送を行い、各クライアントコンピュータ上のネットワーク負荷制御プログラムにおいて、データの読込み時間からネットワークの負荷を推定し、そのネットワーク負荷の推定結果に応じて１回に転送を受けるデータブロックサイズと、１回のデータ転送中の待ち時間とを制御するようにしたことを特徴とするクライアントサーバーシステムのデータ転送におけるネットワーク負荷分散方法。
【請求項２】
処理速度が異なるクライアントコンピュータを含むクライアントサーバーシステムにおいて、
所定の処理速度のクライアントコンピュータが、ネットワークの最大バンド幅を使用してデータ転送を受ける場合のデータ転送時間を基準とし、前記基準のデータ転送時間から各クライアントコンピュータのデータ転送時間を引いた時間が正の場合にその時間差を各データ転送動作の時間間隔とすることを特徴とする請求項１に記載のクライアントサーバーシステムのデータ転送におけるネットワーク負荷分散方法。
【請求項３】
クライアントサーバーシステムの各クライアントコンピュータによって直接サーバーのＩ/ Ｏ装置を制御してデータ転送を行い、
各クライアントコンピュータにおいて、データの読込み時間からネットワークの負荷を推定し、そのネットワーク負荷の推定結果に応じて１回に転送を受けるデータブロックサイズと、１回のデータ転送中の待ち時間とを制御するようにしたプログラムを記録した媒体。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は、クライアントサーバーシステムにおいて、同時に多数のクライアントコンピュータがサーバーにアクセスした場合に、サーバーとネットワークに集中する負荷を分散させることにより、クライアントサーバーシステムの健全性と効率を維持する方法に関する。
【０００２】
【従来の技術】
最近は、従前のホストコンピュータと端末からなる情報処理システムに代えて、クライアントサーバーシステムが広く用いられるようになっている。
【０００３】
クライアントサーバーシステムは、データやソフトウェアを一元的に管理し、提供する役割の「サーバー」と、このサーバーに要求を出してデータやソフトウェアを利用する「クライアントコンピュータ」とからなる。
【０００４】
これらサーバーとクライアントコンピュータは、各装置でも独自に情報処理を行うが、他の装置と処理結果や処理データを交換して、全体として統一された情報処理を行うように構成されている。
【０００５】
このようにクライアントサーバーシステムは、システム内のサーバーとクライアントコンピュータが互いにデータやソフトウェアを交換しながら全体として統一した情報処理を行うので、当然システム内の各クライアントコンピュータは同一のソフトウェア（同一のソフトウェアにおいては同一のバージョンであることが必要となる）によって情報処理をしなければならない。
【０００６】
このため、一般に現在のクライアントサーバーシステムでは、定期的に（たとえば週に１，２回程度に）全クライアントコンピュータが一斉にサーバーにアクセスして、その時のサーバー内に格納されているソフトウェアやデータのファイルによって自らのファイルを更新している。
【０００７】
図６は、上記クライアントコンピュータがサーバーにアクセスしてソフトウェアやデータの配布を受けるためのシステム構成とその方法とを示している。なお、図６において、命令や情報の流れは矢印で示す。
【０００８】
図６に示すように、クライアントサーバーシステム１は、サーバー２と、複数のクライアントコンピュータ３がＬＡＮ等のネットワーク４によって接続されている。
【０００９】
上記ファイルの更新時期になると、数多くのクライアントコンピュータ３が一斉にサーバー２にアクセスして、ファイルをダウンロードしようとする。従来のダウンロードでは、クライアントコンピュータ３がサーバー２にアクセスし、通信相手の確認等の接続手順が確立した後に、クライアントコンピュータ３からサーバー２へファイル転送等の命令が送られる。
【００１０】
これらのクライアントコンピュータ３からの転送命令は、サーバー２のサーバーのＣＰＵ２ａによって処理される。この場合、サーバーのＣＰＵ２ａはＩ/ Ｏ装置２ｂを制御し、サーバーのＩ/ Ｏ装置２ｂの作用により、記憶装置２ｃから指定されたファイルを取り出してクライアントコンピュータ３に転送する。
【００１１】
クライアントコンピュータ３では、ＣＰＵ３ａの制御を受けたＩ／Ｏ装置３ｂが、サーバー２から転送されたファイルをその記憶装置３ｃに格納し、古いファイルがある場合はそれを更新する。
【００１２】
従来のクライアントサーバーシステム１は、サーバーのＣＰＵ２ａの処理がオーバーフローしないように、流量制御プログラム５を備えている。これは、サーバーのＣＰＵ２ａは、その処理能力に限界があり、それ以上のクライアントコンピュータ３からの命令が入力されると、処理不能になってシステム全体が機能を停止してしまうからである。このため、流量制御プログラム５は、所定台数のクライアントコンピュータ３の接続があると、それ以上の接続要求に対しては、要求があったクライアントコンピュータ３に対してアクセスを拒絶する。
【００１３】
サーバー２が限界一杯の処理を行っている状態を図６に示す。図６においては、サーバー２が同時接続することができるクライアントコンピュータの数を仮に３台としている。この場合、クライアントコンピュータＣ1 〜Ｃ3 が交信状態になるが、他のクライアントコンピュータＣ4 〜Ｃn は、待機の状態（ＷＡＩＴ状態）になり、サーバー２へのアクセスを試み続ける。
【００１４】
クライアントコンピュータＣ1 〜Ｃ3 のうちのいずれかがサーバー２との交信を終了すると、その直後にアクセスを試みたクライアントコンピュータＣ4 〜Ｃn のいずれかが接続される。
【００１５】
【発明が解決しようとする課題】
しかしながら、上記従来のクライアントサーバーシステムとそのファイル配布の方法では、サーバーのＣＰＵの処理能力の制限により、システム全体の能力を効率よく活かすことができなかった。
【００１６】
つまり、従来のクライアントサーバーシステムでは、上述したように、サーバーのＣＰＵがクライアントコンピュータからのアクセス要求とファイル転送命令等を集中的に処理するため、すぐにその処理能力の上限に達してしまうのである。
【００１７】
このサーバーのＣＰＵの処理能力の制限により、結局限られた台数のクライアントコンピュータへファイル転送をすることになっていた。一方、この間のクライアントコンピュータのＣＰＵは、その処理能力のほんの一部のみを使用し、いわば遊んだ状態になっていた。
【００１８】
また、ＷＡＩＴ状態にあるクライアントコンピュータが繰返しサーバーへのアクセスを試みるので、そのアクセス要求に対する返答（アクセスを拒否する返答）を送信するために、サーバー側のＣＰＵとネットワークにさらに負荷がかかっていた。
【００１９】
そこで、本発明は、上記従来技術が抱える課題を解決し、サーバーのＣＰＵへの負荷の集中を解消し、クライアントサーバーシステム全体の処理能力により、サーバーから多数のクライアントコンピュータへ同時に多数のファイルを配布することができるクライアントサーバーシステムのデータ転送におけるネットワーク負荷分散方法を提供することにある。
【００２０】
【課題を解決するための手段】
本願請求項１に係るクライアントサーバーシステムのデータ転送におけるネットワーク負荷分散方法は、
クライアントサーバーシステムの各クライアントコンピュータが有するネットワーク負荷制御プログラムによって、直接サーバーのＩ/ Ｏ装置を制御してデータ転送を行い、各クライアントコンピュータ上のネットワーク負荷制御プログラムにおいて、データの読込み時間からネットワークの負荷を推定し、そのネットワーク負荷の推定結果に応じて１回に転送を受けるデータブロックサイズと、１回のデータ転送中の待ち時間とを制御するようにしたことを特徴とするものである。
【００２１】
本願請求項２に係るクライアントサーバーシステムのデータ転送におけるネットワーク負荷分散方法は、上記請求項１に記載の方法において、
処理速度が異なるクライアントコンピュータを含むクライアントサーバーシステムにおいて、
所定の処理速度のクライアントコンピュータが、ネットワークの最大バンド幅を使用してデータ転送を受ける場合のデータ転送時間を基準とし、前記基準のデータ転送時間から各クライアントコンピュータのデータ転送時間を引いた時間が正の場合にその時間差を各データ転送動作の時間間隔とすることを特徴とするものである。
【００２２】
本願請求項３に係る媒体は、
クライアントサーバーシステムの各クライアントコンピュータによって直接サーバーのＩ/ Ｏ装置を制御してデータ転送を行い、
各クライアントコンピュータにおいて、データの読込み時間からネットワークの負荷を推定し、そのネットワーク負荷の推定結果に応じて１回に転送を受けるデータブロックサイズと、１回のデータ転送中の待ち時間とを制御するようにしたプログラムを記録したものである。
【００２３】
【発明の実施の形態】
次に本発明の実施の形態について以下に説明する。
本発明による「クライアントサーバーシステムのデータ転送におけるネットワーク負荷分散方法」は、クライアントコンピュータのＣＰＵによる負荷の分担と、多数のクライアントコンピュータへ同時にするファイル配布と、ネットワークの効率よい転送レートにおけるファイル転送、の３つを実現する。このことを以下に説明する。
【００２４】
図１は、本発明の方法を実現するクライアントサーバーシステムのシステム構成とその処理の状態を示している。
【００２５】
図１において、クライアントサーバーシステム１は、サーバー２と、クライアントコンピュータ３と、サーバー２とクライアントコンピュータ３とを接続するＬＡＮ等のネットワーク４とからなる。
【００２６】
このクライアントサーバーシステム１において、従来のクライアントサーバーシステム（図６参照）と異なるのは、サーバー２側に流量制御プログラムがなく、クライアントコンピュータ３が、ネットワーク負荷制御プログラム６を有し、このネットワーク負荷制御プログラム６の働きによってサーバーのＩ/ Ｏ装置２ｂを直接制御するようにしていることである。
【００２７】
図１に示すように、このクライアントサーバーシステム１では、多数のクライアントコンピュータ３が、そのＣＰＵ３ａによってサーバーのＩ/ Ｏ装置２ｂを制御し、サーバーのＩ/ Ｏ装置２ｂは、サーバーの記憶装置２ｃから所定のファイルを取り出し、クライアントコンピュータ３へ転送する。この場合は、サーバーのＣＰＵ２ａは、わずかにＩ/ Ｏ装置２ｂの制御に関与するだけで、ほとんどの負荷から解放される。
【００２８】
一方、クライアントコンピュータ３に転送されたファイルは、クライアントコンピュータのＩ/ Ｏ装置３ｂにより、記憶装置３ｃに格納される。
【００２９】
すなわち、本クライアントサーバーシステム１によれば、ネットワーク負荷制御プログラム６により、従来サーバーのＣＰＵ２ａが行っていた処理をクライアントコンピュータのＣＰＵ３ａによって肩代わりし、サーバーのＣＰＵ２ａへの負荷を分散するようにしている。
【００３０】
また、本クライアントサーバーシステム１においては、ネットワーク負荷制御プログラム６の作用により、接続を要求したすべてのクライアントコンピュータ３に同時にファイル転送するのと同時に、ネットワーク４への負荷を制御している。このことを以下に説明する。
【００３１】
図２は、本クライアントサーバーシステム１が、同時に多数のクライアントコンピュータ３へファイル転送を行っているところの通信状態を示している。
【００３２】
図の陰影を付したバーチャート部分は、データ転送している時間を示している。図に示したように、本システムのネットワーク負荷制御プログラム６は、サーバー２に少数のクライアントコンピュータ３がアクセスしようとするとき（これを「平常時」ということにする）は、従来のファイル転送と同様に、１つのクライアントコンピュータに対してファイル転送した後に、次のクライアントコンピュータに対してファイル転送を行う。
【００３３】
しかし、同時に多数のクライアントコンピュータ３がサーバー２にアクセスしようとするとき（これを「ラッシュ時」ということにする）は、各クライアントコンピュータ３のネットワーク負荷制御プログラム６は、ネットワーク４の負荷を計算しながら、転送ファイルを分割し、１回に少量のデータのみを転送させ、かつ、全体としてネットワーク４に過負荷とならないように、転送を受ける時間を制御する。
【００３４】
すなわち、本システムでは、サーバー２にアクセスした各クライアントコンピュータ３のネットワーク負荷制御プログラム６が、ネットワーク４の負荷状態を計算し、計算結果に基づいて転送ファイルを分割し、１回のＲＥＡＤ時間（ＴＲ）、１回のデータ転送におけるＷＡＩＴ時間（ＴＷ）、各回のデータ転送間のＷＡＩＴ時間（ＴＳ）を変化させる。
【００３５】
転送ファイルを細かく分割することにより、多数のクライアントコンピュータ３に対して交互にデータ転送を行えることができ、見かけ上同時に多数のクライアントコンピュータ３へデータの転送を行うことができる。
【００３６】
また、このように転送ファイルを細かく分割して、その転送時間の間隔、１回の転送時間の長さを調節することにより、ネットワーク４の最も効率が良い転送レートでデータ転送を行うことができる。
【００３７】
一般に、サーバー２へのアクセス要求が混み合うほどファイルを細分化し、各回のデータ転送の間隔を大きくする。
【００３８】
ここで、ネットワーク４の最も効率が良い転送レートについて説明する。
【００３９】
一般にネットワーク４は、固有の情報転送容量（バンド幅という）を有している。
【００４０】
しかし、バンド幅の限界ぎりぎりでは、信号の干渉により、再送信等を試みる回数が増加し、全体として通信効率が低下する。この通信効率は、全バンド幅に対して一定の割合を超過すると、指数的に低下することが知られている。
【００４１】
一方、バンド幅に対して少ない転送レートによってデータを転送する場合は、信号の干渉による再送信はなくなるが、ネットワーク４が遊んだ状態になる。
【００４２】
本発明によるネットワーク負荷分散方法では、時々刻々に変化するネットワーク４の負荷状態に応じて、１回に転送するデータのサイズ（これをデータ転送単位という）の大きさと、転送を受ける時間とを変化させ、データ転送を適当に配分することにより、ネットワーク４の最も効率のよい転送レートでファイルの転送を行うようにしている。
【００４３】
以下に、上記機能を実現するためのネットワーク負荷制御プログラム６の処理について説明する。
【００４４】
図３は、ネットワーク負荷制御プログラム６による処理の流れを示している。図３に示すように、クライアントコンピュータ３がサーバー２にアクセスを試みるときに、ネットワーク負荷制御プログラム６が起動し（ステップＳ１００）、最初にサーバー２から設定値を取得する。ここで、設定値とは、リトライ間隔、リトライ回数、第１回目のデータ転送単位、そのネットワーク４において効率よくデータ転送をする場合の標準的な１回のデータ転送時間（これを標準データ転送時間という）等である。
【００４５】
なお、上記設定値をサーバー２に格納し、起動したネットワーク負荷制御プログラム６によって取得するようにしているのは、設定値を変更する場合の変更の容易さを考慮したものであり、無論各クライアントコンピュータ３に格納するようにしてもよい。この場合は、このステップＳ１１０は、省略される。
【００４６】
次に、ネットワーク負荷制御プログラム６は、ファイルの転送を実行し（ステップＳ１２０）、１回のデータ転送におけるデータブロックサイズ・待ち時間の制御（ステップＳ１３０）、各データ転送間隔の制御（ステップＳ１４０）を、各データ転送回ごとに行いながら、ファイル転送を実行する。
【００４７】
上記ステップＳ１３０のデータブロックサイズ・待ち時間の制御の詳細を図４によって詳細に説明する。
【００４８】
図４に示すように、最初に第１回目の読込ＷＡＩＴ時間ＴＷ＝Ｔ1 と、読込データブロックサイズＢＳ＝Ｂ1 を取得する（ステップＳ１１０）。
【００４９】
次に、上記Ｔ1 とＢ1 に基づいて、ｎ回だけデータのＲＥＡＤ、ＷＡＩＴ、ＷＲＩＴＥを繰り返す（ステップＳ１３１〜Ｓ１３３）。このｎ回のデータ転送の間に、各回のデータ転送のＲＥＡＤ時間ＴＲを計測する。
【００５０】
次に、上記ｎ回のＲＥＡＤ時間ＴＲにより、１回に転送するデータブロックサイズＢＳ、１回のデータ転送におけるＷＡＩＴ時間ＴＷを計算し、これを制御する（ステップＳ１３４）。このステップＳ１３４における処理を以下にさらに詳説する。
【００５１】
最初に、ＴＲ時間のｎ回の平均を求める。ＴＲの平均をＴＡとすると、ＴＡ＝ΣＴＲ／ｎ。
【００５２】
このＴＡは、ネットワーク４の負荷状態を表わしている。すなわち、ＴＡが長ければ、データの読込み（ＲＥＡＤ）に時間がかかっていることになり、これはとりもなおさずネットワーク４がラッシュの状態にあることを示している。
【００５３】
そこで、ＴＡ＞Ｔmax （Ｔmax は設定値）の時は、ネットワーク４が高負荷の状態にあると判断し、データブロックサイズＢＳを現在の１／２にする。
【００５４】
上記データブロックサイズＢＳを小さくした結果、データブロックサイズＢＳが所定値ＢＬより（データブロックサイズの下限）小さくなるときは、それ以上データブロックサイズを小さくせずに、ＷＡＩＴ時間を２倍にする。
【００５５】
つまり、上記処理により、ネットワーク４が混雑の状態にあるときは、どんどんデータブロックサイズが小さくなり、あるいはＷＡＩＴ時間が長くなり、結局ネットワーク４の負荷が時間的に分散され、効率のよい転送レートに落ち着くことになる。
【００５６】
上記とは反対に、ＴＡ＜Ｔmin （Ｔmin は設定値）となった時は、ネットワーク４が低負荷の状態にあると判断し、ＷＡＩＴ時間ＴＷを現在の１／２にし、あるいは、データブロックサイズＢＳを現在の２倍にする。
【００５７】
つまり、ネットワーク４が低負荷の状態にあるときは、どんどんＷＡＩＴ時間が短くなり、あるいはデータブロックサイズが大きくなり、結局ネットワーク４の負荷が時間的に集中され、効率のよい転送レートに落ち着くことになる。
【００５８】
しかし、上記処理は、各クライアントコンピュータ３における処理であるため、クライアントコンピュータ３間の処理速度の差による調節をすることができない。
【００５９】
つまり、サーバー２に接続するクライアントコンピュータ３の処理速度が同一の場合は、問題を生じないが、クライアントコンピュータ３間に処理速度の差が存在する場合は、処理が速いクライアントコンピュータ３はネットワーク４が低負荷と判断し、どんどんデータ転送を集中させる。反対に、処理速度が遅いクライアントコンピュータ３は、ＲＥＡＤ時間ＴＲが長いため、データ転送をどんどん分散させる。
【００６０】
そこで、ステップＳ１４０（図３参照）により、各クライアントコンピュータ３のデータ転送間隔を制御する。このデータ転送間隔の制御を図５を用いて以下に説明する。
【００６１】
最初に、ネットワーク４が有しているバンド幅から、標準のクライアントコンピュータ３の１秒間に転送可能なバイト数ＢＴを計算する（ステップＳ１４１）。
【００６２】
次に、データのＲＥＡＤ、ＷＡＩＴ、ＷＲＩＴＥの処理をｎ回繰返し、その合計時間ＴＴsum と、ｎ回分のデータ転送量ＢＳsum を求める（ステップＳ１４２〜Ｓ１４４）。なお、１回のＲＥＡＤ、ＷＡＩＴ、ＷＲＩＴＥの処理を行う時間をＴＴとし、１回のＲＥＡＤ、ＷＡＩＴ、ＷＲＩＴＥによって転送されるデータ量をＢＳとする。
【００６３】
次に、上記ＴＴsum とＢＳsum により、データ転送間隔の制御を行う（ステップＳ１４５，Ｓ１４６）。
【００６４】
ステップＳ１４５においては、最初に標準的なクライアントコンピュータ３が最大のバンド幅を使用したときに、ＢＳsum を転送するのにかかる時間ＴＷ2 を計算する（ＴＷ2 ＝ＢＳsum   ＊１０００／ＢＴ）。
【００６５】
次に、ＴＳ＝ＴＷ2 −ＴＴsum として、ＴＳを計算する（ステップＳ１４５）。処理が速いコンピュータでは、ＴＴsum が短くなりＴＳが長くなる。一方、処理が遅いコンピュータでは、ＴＴsum が長くなり、ＴＳが短くなる。
【００６６】
上記計算されたＴＳをデータ転送間の時間として各データ転送間で時間TSの間隔を開けるようにする（ステップＳ１４６）。なお、ＴＷ2 ＜ＴＴsum の場合は、各データ転送間隔を０とする。
【００６７】
上記処理により、処理が速いクライアントコンピュータ３では、１回のデータ転送で短い時間内に多くのデータを転送するが、データ転送の間隔が長くなる。一方、処理が遅いクライアントコンピュータ３では、１回のデータ転送で長い時間内に少ないデータを転送するが、データ転送の間隔が短くなる。
【００６８】
上記バランスにより、サーバー２に処理速度が異なるクライアントコンピュータ３が接続されている場合にも、サーバー２から全体のクライアントコンピュータ３に均等にデータを配布することができる。
【００６９】
【発明の効果】
上記説明から明らかなように、本発明の「クライアントサーバーシステムのデータ転送におけるネットワーク負荷分散方法」によれば、各クライアントコンピュータがサーバーのＩ/ Ｏ装置を直接制御することにより、サーバーのＣＰＵへの負荷を各クライアントコンピュータのＣＰＵによって分散させることができる。
【００７０】
また、本発明の方法では、各クライアントコンピュータのネットワーク負荷制御プログラムの働きにより、１回のデータ転送のＲＥＡＤ時間によってネットワークの混雑状況を判断し、ネットワークが混雑している場合は、転送するデータブロックサイズを小さくし、あるいは１回のデータ転送における待ち時間を長くする。反対に、ネットワークが混雑していない場合は、転送するデータブロックサイズを大きくし、あるいは１回のデータ転送における待ち時間を短くする。
【００７１】
上記転送データブロックサイズや待ち時間の上限や下限を、ネットワークの高効率の転送レートに合うように設定することにより、各クライアントコンピュータは、自律的にデータ転送の間隔や転送データブロックサイズを調節し、結果的にネットワークの高効率の転送レートで、サーバーからデータの転送を受けることができる。
【００７２】
さらに、データ転送間隔の制御により、処理速度が速いクライアントコンピュータは間隔を開けて、反対に処理速度が遅いクライアントコンピュータは間隔を詰めて、データ転送を受ける。これにより、クライアントサーバーシステム全体に均等にデータが配布される。
【図面の簡単な説明】
【図１】本発明による「クライアントサーバーシステムのデータ転送におけるネットワーク負荷分散方法」を実現するための手段とそれらの手段間の処理の流れを示した図。
【図２】本発明による「クライアントサーバーシステムのデータ転送におけるネットワーク負荷分散方法」のデータ転送の様子を示した図。
【図３】本発明による「クライアントサーバーシステムのデータ転送におけるネットワーク負荷分散方法」のネットワーク負荷制御プログラムの処理の流れを示したフローチャート。
【図４】本発明における１回のデータ転送におけるデータブロックサイズ・待ち時間の制御方法を示したフローチャート。
【図５】本発明におけるデータ転送間隔の制御方法を示したフローチャート。
【図６】従来のクライアントサーバーシステムのデータ転送の手段とそれらの手段間の処理の流れを示した図。
【符号の説明】
１  クライアントサーバーシステム
２  サーバー
２ａ  サーバーのＣＰＵ
２ｂ  サーバーのＩ/ Ｏ装置
２ｃ  サーバーの記憶装置
３  クライアントコンピュータ
３ａ  クライアントコンピュータのＣＰＵ
３ｂ  クライアントコンピュータのＩ/ Ｏ装置
３ｃ  クライアントコンピュータの記憶装置
４  ネットワーク
５  流量制御プログラム
６  ネットワーク負荷制御プログラム
【図１】
0003897843.tif 000002
【図２】
0003897843.tif 000003
【図３】
0003897843.tif 000004
【図４】
0003897843.tif 000005
【図５】
0003897843.tif 000006
【図６】
0003897843.tif 000007