(57)【要約】  【課題】複数のサービスサーバ装置と負荷分散装置から成る負荷分散システムにおいて、サービスサーバ装置へのリクエスト過負荷によりサービス性能低下を防ぐ。  【解決手段】負荷分散装置４と、統計処理を行う管理サーバ装置５から成り、負荷分散装置はサービスサーバ装置へのアクセスに対するアクセスログを出力し、管理サーバ装置は上記アクセスログの統計処理を行う。管理サーバ装置は、この統計処理の結果から、サービスサーバ装置の運用計画を作成し、これを負荷分散装置に通知する。負荷分散装置は通知された運用計画に従ってサービスサーバ装置へのリクエスト振り分けを制御する。  【選択図】  図１
2005141441.tif 000002
【特許請求の範囲】
【請求項１】
クライアント端末から受信したリクエストを、複数のサービスサーバ装置のいずれかに振り分け、サービスサーバ装置からの応答を前記クライアント端末に送信する負荷分散システムであって、
前記クライアント端末からのリクエストを前記複数のサービスサーバ装置に振り分ける機能を備えた負荷分散装置と、
負荷分散装置の動作状態を監視する管理装置と、から成り、
前記負荷分散装置は、前記リクエストの処理に関わるアクセスログを出力する機能を備え、
前記管理装置は、出力された前記アクセスログを読み込み、統計処理を行う機能を備え、
前記リクエストの処理に関わる前記統計処理の結果に基づき、リクエストの処理に必要なサービスサーバ装置の数を予測し、前記サービスサーバ装置の運転計画を作成する機能を備え、
前記運転計画に従った前記サービスサーバ装置へのリクエスト振り分けを前記負荷分散装置に指示する機能を備える
ことを特徴とする負荷分散システム。
【請求項２】
請求項１の負荷分散システムにおいて、
前記負荷分散装置は、指示された前記運転計画に基づき、前記サービスサーバ装置へのリクエスト振り分け方法を事前に決定する機能を備える
ことを特徴とする負荷分散システム。
【請求項３】
請求項１の負荷分散システムにおいて、
前記管理装置は特定の指定日の入力を受け付ける機能を備え、
受け付けた前記指定日に対しては、該指定日固有の統計処理を行う機能を備える
ことを特徴とする負荷分散システム。
【請求項４】
請求項３の負荷分散システムにおいて、
前記管理装置は、前記指定日に対しては、指定日固有の統計処理結果に基づき、前記指定日固有のリクエスト振り分け方法を設定した前記指定日用運転計画を作成する機能を備え、
前記指定日用運転計画に従った前記サービスサーバ装置へのリクエスト振り分けを前記負荷分散装置に指示する機能を備える
ことを特徴とする負荷分散システム。
【請求項５】
請求項４の負荷分散システムにおいて、
前記負荷分散装置は、指示された前記指定日用運転計画に基づき、指定日用の、前記サービスサーバ装置へのリクエスト振り分け方法を事前に決定する機能を備える
ことを特徴とする負荷分散システム。
【請求項６】
請求項３の負荷分散システムにおいて、
前記負荷分散装置は、前記指定日の統計処理を、前記統計処理の結果から削除する機能を備える
ことを特徴とする負荷分散システム。
【請求項７】
請求項２の負荷分散システムにおいて、
前記クライアント端末から受信したリクエスト数が、前記運転計画が予測したサービスサーバ装置数で処理できるリクエスト数を超える場合、
前記負荷分散装置は、前記クライアント端末からのリクエストを拒否する機能を備える
ことを特徴とする負荷分散システム。
【請求項８】
請求項２の負荷分散システムにおいて、
前記クライアント端末から送信されたリクエスト数が、前記運転計画が予測したサービスサーバ装置数で処理できるリクエスト数を超える場合、
前記負荷分散装置が、指示された前記運転計画を変更し、リクエスト振り分け先となる新たなサービス装置を追加する機能を備え、
変更した前記運転計画に従って、前記クライアント端末からのリクエスト処理を継続する
ことを特徴とする負荷分散システム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、複数のサーバ装置へのアクセスの振り分けを行う負荷分散システムに関し、更に詳しくは、負荷分散装置の運用方法に関する。
【背景技術】
【０００２】
インターネットが急速に普及し、従来営業窓口で行われていたチケット販売などのサービスがインターネットを介して提供されるようになってきている。通信技術も進歩し、家庭やオフィスからだけではなく、携帯電話などからも同サービスを享受できる環境が整ってきている。
【０００３】
インターネットを介して、上記のようなサービスを行うサービス提供サーバ装置（以下サービスサーバ装置という）では、通常は多数のクライアント端末からのリクエストを処理する必要があり、１台のサービスサーバ装置ではリクエストを処理しきれない。このため、例えば、特許文献１に記載されているように、システムを負荷分散装置に接続された複数のサービスサーバ装置で構成し、多数のクライアント端末からのリクエストを複数のサービスサーバ装置に分散することにより、オーバフローを解消する方法が知られている。
【０００４】
更に、サービスサーバ装置が過負荷状態になり、クライアント端末への応答性能が劣化するという問題に対して、特許文献１に記載されている従来の負荷分散システムでは、負荷分散管理装置において、サービスサーバ装置のＣＰＵ使用量、メモリ使用量等を監視し、負荷の高くなっているサービスサーバ装置へのリクエストの振り分けを減らし、性能低下の原因となっている要因を除去（例えば、過度に使用されているメモリの開放）する、等の方法が知られている。
【０００５】
【特許文献１】特開２００３−１７８０４１公報（段落００２０）
【発明の開示】
【発明が解決しようとする課題】
【０００６】
しかし、上記特許文献１に記載されている従来の負荷分散システムでは、過負荷が発生して、システムの性能低下が発生しそうになったときに、その原因を取り除くことを前提としている。このため、時間が経過すればシステムの性能は回復するものの、一時的にシステム性能を低下させてしまう。
【０００７】
したがって、より改善された負荷分散システムの運用方法が望まれている。
【課題を解決するための手段】
【０００８】
インターネットを介したサービスサーバ装置へのアクセスには、サービスによって、１日、１週間、または１ヶ月の中で、統計的にパターンのあることが知られている。例えば、社内事務業務では、平日は仕事が始まる午前９時すぎと、昼休みが終了する午後１時すぎにサービスサーバ装置へのアクセス負荷が高くなる、といったことがアクセスの統計値を取るとわかる。
【０００９】
本発明は、複数のサービスサーバ装置にリクエストを振り分ける負荷分散システムにおいて、アクセスログの統計処理から得られる情報を、サービスサーバ装置への負荷分散制御に利用し、サービスサーバ装置へのリクエスト過負荷によるサービス性能低下を未然に防ぐことを可能にする。
【００１０】
本発明の負荷分散システムは、その一態様において、負荷分散装置とサービスサーバ装置を管理する管理サーバ装置を備え、管理サーバ装置がアクセスログの統計処理を行う。管理サーバ装置は、統計処理から得られる単位時間当たりのリクエスト数に基づいて、各時間帯に必要なサービスサーバ装置数を予測し、これを負荷分散装置に通知する。負荷分散装置は、通知された時間帯とサービスサーバ装置数の情報に従って、指定時間帯の直前に必要台数のサービスサーバ装置への振り分け設定を実施する。これにより、サービスサーバ装置へのリクエスト過負荷を回避し、サービス性能低下を未然に防ぐことができる。
【００１１】
更に、通常とは異なるアクセスパターンとなることが判っている、あるいは予想される、特定の指定日（以下アクセス特異日と呼ぶ）を、指定することにより、その特異日については通常とは異なる統計処理を実施し、特異日固有の振り分け設定を行うことにより、より適切なアクセス制御を可能にする。
【発明の効果】
【００１２】
本発明によれば、より改善された負荷分散制御が可能になり、高品質のサービスを提供することができる。
【発明を実施するための最良の形態】
【００１３】
以下、本発明の実施例について図面を参照して説明する。
【００１４】
図１は、本実施例による負荷分散システム３を含む通信ネットワークシステムの構成を示している。
【００１５】
負荷分散システム３は、ＬＡＮ又はインターネットなどの通信網２を介して複数のクライアント端末装置（以下端末という）１（１−１〜１−Ｌ）に接続されている。
【００１６】
負荷分散システム３は、通信網２に接続された負荷分散装置４と、該負荷分散装置４との通信機能を持つ管理サーバ装置５と、該管理サーバ装置に接続されたコンソール６と、該負荷分散装置４に接続されたサービスサーバ装置７（７−１〜７−Ｎ）と、サービスサーバ装置７に接続されたデータベース８から成る。なお、管理サーバ装置５は負荷分散装置４を介してサービスサーバ装置７と通信することが可能である。
【００１７】
図１の例では、負荷分散装置４と管理サーバ装置５は異なる装置として構成しているが、負荷分散装置４の機能と管理サーバ装置５の機能を１個の装置として構成してもよい。
【００１８】
また、図１の例では、サービスサーバ装置は１個の装置として記載しているが、これを複数のサーバ装置、例えば、端末１との通信を専門に処理するＷｅｂサーバ装置と、データベース処理を専門に実施するデータベースサーバ装置を組み合わせて構成してもよい。
【００１９】
いずれかの端末１から送信されたリクエストは、通信網２を介して負荷分散装置４が受信する。負荷分散装置４は、受信したリクエストを所定の負荷分散アルゴリズムに従ってサービスサーバ装置７に振り分ける。サービスサーバ装置７は、端末１からのリクエストに対して、必要に応じてデータベース８に対する処理を実施して、応答データを作成し、これを負荷分散装置４に送信する。負荷分散装置４は、受信した応答データを、リクエスト発信元の端末１に送信する。同時に、負荷分散装置４はリクエスト送受信に対するアクセスログを生成する。
【００２０】
図２は、負荷分散装置４及び管理サーバ装置５の構成を示す図である。
【００２１】
負荷分散装置４は、プロセッサ４０と、通信網２、管理サーバ装置５、及びサービスサーバ装置７と接続するための通信インタフェース４１と、プログラム格納用のメモリ４２と、データ格納用のメモリ４３と、アクセスログを一時的に格納するためのディスク４４から成り、これらの要素はバス等の内部通信線（以下バスという）４５によって相互に接続している。メモリ４２には、プロセッサ４０が実行する制御用ソフトウェアとして、受信したリクエストをサービスサーバ装置７へ振り分けるための負荷分散制御モジュール４２１と、その他の制御モジュール４２０を格納している。
【００２２】
管理サーバ装置５の構成は、基本的に負荷分散装置４と同一であるが、プログラム格納用のメモリ４２には、負荷分散装置４からアクセスログを取得し、統計処理を行い、その結果からサービスサーバ装置必要台数を決定するアクセス統計処理モジュール４２２と、その他の制御モジュール４２０を格納している。
【００２３】
さらに、上記各制御モジュールまたは処理モジュールは、あらかじめ、上記装置内のディスク４４に格納されていても良いし、必要なときに、上記装置が利用可能な、着脱可能な記憶媒体または通信媒体（通信回線または通信回線上の搬送波）を介して、上記装置に導入されてもよい。
【００２４】
図３は、負荷分散装置４が生成するアクセスログを格納するファイルのデータ構造を示す図である。
【００２５】
アクセスログを格納するアクセスログファイル６０は、該アクセスログファイル６０に関する情報を格納するアクセスログファイルヘッダ６１と、負荷分散装置４が出力するアクセスログの実体であるアクセスログレコード６２−ｋ（１≦ｋ≦Ｋ）から成る。
【００２６】
アクセスログファイルヘッダ６１には、そのファイルに最初にアクセスログが書き込まれた日時を示すログ出力開始時刻６１１と、そのファイルにアクセスログが最後に書き込まれた日時を示すログ出力終了時刻６１２と、プロキシサーバ装置がアクセスログの出力先を別のファイルに切り替えた場合に切り替え先を示す次のアクセスログファイル名６１３と、そのファイル内に格納されているアクセスログの数を示すアクセスログレコード数６１４とから成る。
【００２７】
図４は、アクセスログの一構成例であり、リクエスト送受信（以下セッションと呼ぶ）単位に作成するアクセスログレコード６２−ｋの一つのレコードのデータ形式を示す図である。
【００２８】
なお、本実施形態におけるセッションとは、アクセス元（本実施形態では、端末１）が何らかのリクエストを発行し、アクセス先（本実施形態では、サービスサーバ装置７）がそれに対して応答するまでの１回のやり取りを指す。
【００２９】
アクセスログレコード６２−ｋには、そのレコードを出力した負荷分散装置４を示す負荷分散装置番号６２０と、該負荷分散装置４が受信したリクエストの受付番号であるセッション番号６２１と、サービスサーバ装置からの応答データに付されているエラー状態を示す応答コード６２２と、負荷分散装置４が端末１に応答するエラーコードを示すエラー番号６２３と、受信したリクエストの発信元を特定するための端末アドレス６２４と、リクエストの送信先を示すリクエスト転送先（サービスサーバ装置）アドレス６２５と、リクエストに記されているリクエスト送信先を示すリクエストＵＲＬ６２６と、リクエストを発信した端末１に関する情報を示す端末情報６２７と、負荷分散装置４が端末１からリクエストを受信した時刻を示すリクエスト受信時刻６２８と、負荷分散装置４が端末１に応答データを送信し終わった時刻を示す応答メッセージ送信完了時刻６２９と、負荷分散装置４で処理に要した時間を示す負荷分散装置処理時間６３０と、サービスサーバ装置７にリクエストを送信してから該サービスサーバ装置７から応答データを受信するまでの待ち時間を示すサービスサーバ装置応答待ち時間６３１と、端末１から受信したリクエストのヘッダサイズ６３２と、端末１への応答データのヘッダサイズ６３３と、端末１から受信したリクエストのデータサイズ６３４と、端末１への応答データのデータサイズ６２５と、サービスサーバ装置７に送信したリクエストのヘッダサイズ６３６と、サービスサーバ装置７から受信した応答データのヘッダサイズ６３７と、サービスサーバ装置７に送信したリクエストのデータサイズ６３８と、サーバビスサーバ装置７から受信した応答データのデータサイズ６３９と、該セッションを処理していた際に同一サービスサーバ装置に同時に接続していたセッション数を示す同時接続セッション数６４０と、該セッションを処理していた時の振り分け先サービスサーバ装置台数６４１から成る。
【００３０】
図６は、負荷分散装置４が保持している、リクエスト振り分け先を管理するテーブルの構成例を示す図である。
【００３１】
振り分け先管理テーブル７０は、負荷分散装置４と接続され、リクエストの振り分け先となり得るサービスサーバ装置のアドレスを記した接続サーバアドレス７０１と、そのサービスサーバ装置が現在振り分け先となっているかを示す振り分け対象フラグ７０２と、そのサービスサーバ装置に同時に接続するセッションの上限値を示す接続セッション上限値７０３と、そのサービスサーバ装置に対して現在接続しているセッションの数を示す接続セッション数７０４とから成る。
【００３２】
図５に、負荷分散装置４のプロセッサ４０が負荷分散制御モジュール４２１を実行することにより実現されるリクエスト振り分け処理機能のフローチャートを示す。
【００３３】
負荷分散装置４が端末１からのリクエストを受信すると（Ｓ２００１）、該リクエストに誤りがないかチェックする（Ｓ２００２）。もし誤りがある場合は、端末１にエラーを送信する（Ｓ２０１１）。リクエストが正しい場合は、振り分け先管理テーブル７０の各接続セッション上限値７０３と接続セッション数７０４を比較し、リクエストを振り分け可能なサービスサーバ装置７があるか否かをチェックする（Ｓ２００３）。
【００３４】
全ての振り分け先サービスサーバ装置７の接続セッション数７０４が接続セッション上限値７０３に達している場合は、サービスサーバ装置への送信不可であるため、端末１にエラーを送信する（Ｓ２０１０）。
【００３５】
リクエストを送信可能なサービスサーバ装置がある場合は、各サービスサーバ装置７の接続セッション数７０４を比較し、その値が一番小さいサービスサーバ装置７を振り分け先として決定し、その接続セッション数７０４の値を１上げる（Ｓ２００４）。振り分け先のサービスサーバ装置７が決定したら、該サービスサーバ装置７にリクエストを送信し（Ｓ２００５）、サービスサーバ装置７からの応答を待つ（Ｓ２００６）。
【００３６】
もし、サービスサーバ装置７からの応答がなくタイムアウトした場合は（Ｓ２００７）、端末１にエラーを送信する（Ｓ２０１１）。
【００３７】
サービスサーバ装置７から応答データを受信すると、該接続セッション数７０４の値を一つ減らし（Ｓ２００８）、該応答データに誤りがないかチェックする（Ｓ２００９）。もし応答データにプロトコル違反等の誤りがある場合は、端末１にエラーを送信する（Ｓ２０１１）。応答データが正しい場合は、これを端末１に送信する（Ｓ２０１０）。
【００３８】
Ｓ２０１０、Ｓ２０１１いずれの処理を行った場合でも、負荷分散装置４は、その処理結果に応じて図４に示したアクセスログレコード６２−ｋを生成し（Ｓ２０１２）、これをディスク４４内のアクセスログファイル６０に出力する（Ｓ２０１３）。更に、アクセスログファイルヘッダ６１内にあるアクセスログレコード数６１４の値を更新する（Ｓ２０１４）。
【００３９】
次に、管理サーバ装置５の処理について説明する。
【００４０】
図７は、管理サーバ装置５においてプロセッサ４０がアクセス統計処理モジュール４２２を実行することにより生成されるテーブルの一構成例である。
【００４１】
アクセス記録集計テーブル８０は、アクセスログから得られる統計データを格納するテーブルである。該テーブル８０は、一週間の曜日毎の集計テーブル８１−１〜８０−７を持ち、その中に、時間帯別にリクエストの処理数を記録する時間帯別全アクセス記録８０１と記録回数８０２がある。更に、時間帯別全アクセス記録８０１の中は、１時間ごとに正常に処理したアクセス数８１１と、リクエストをサービスサーバ装置７に送ることができずにエラーで返したアクセス数８１２と、サービスサーバ装置からの応答時間８１３と、振り分け先のサービスサーバ装置の台数８１４と、最大同時セッション接続数８１５を記録する項目を持つ。
【００４２】
また、一週間の曜日毎の集計テーブル８１−１〜８０−７は、リスト８０３に繋いだ過去一定期間の個別（一日分）の時間帯別アクセス記録集計リスト８２−１〜８０−Ｘを持つ。個別の時間帯別アクセス記録集計リスト８２−１〜８２−Ｘの構成要素は、日付８２１の情報を付加していることを除き、時間帯別全アクセス記録８０１と同一である。
【００４３】
図７の例では、一週間の曜日を単位に集計テーブル８１を分けているが、例えば１ヶ月の日々単位（１日、２日、…、３１日）や、１ヶ月内の上旬、中旬、下旬といった形式で集計テーブル８１を分けてもよい。
【００４４】
図８は、管理サーバ装置５においてプロセッサ４０がアクセス統計処理モジュール４２２を実行することにより生成される別のテーブルの構成例である。
【００４５】
アクセス特異日用アクセス記録集計テーブル９０は、運用者によって指定されたアクセス特異日に対するアクセス記録を、アクセス記録集計テーブル８０とは別に集計するためのテーブルである。
【００４６】
アクセス特異日用アクセス記録集計テーブル９０は、運用者から指定されるアクセス特異日を保持するアクセス特異日リスト９１と、特異日のパターンごとにアクセス記録を集計するパターン別集計テーブル９２−１〜９２−Ｚから成る。アクセス特異日リスト９１は、アクセス特異日ブロック９１１−１〜９１１−Ｗから成り、各アクセス特異日ブロックには、次のブロックへの指標９１２と、特定の日付を示すアクセス特異日９１３と、同じアクセスパターンを持つアクセス特異日で構成するグループを示すアクセス特異日のパターン９１４から成る。
【００４７】
アクセス特異日ブロックの設定は、運用者が管理サーバ装置５に接続しているコンソール６からデータを入力することによって行う。
【００４８】
運用者は、コンソール６から、アクセス特異日となる日付と、該アクセス特異日のパターンを入力する。管理サーバ装置５は、コンソール６から入力された日付とアクセス特異日パターンを、新しく用意したアクセス特異日ブロック９１１のアクセス特異日９１３及びアクセス特異日のパターン９１４に設定する。該アクセス特異日ブロック９１１は、各ブロックがアクセス特異日９１３で昇順になるようにアクセス特異日リスト９１に繋ぐ。
【００４９】
また、パターン別集計テーブル９２−１〜９２−Ｚは、時間帯別全アクセス記録９２１と記録回数９２２を持ち、更に、時間帯別全アクセス記録９２１は、１時間毎に正常に処理したアクセス数９２４と、リクエストをサービスサーバ装置７に送ることができずにエラーで返したアクセス数９２５と、サービスサーバ装置からの応答時間９２６と、振り分け先のサービスサーバ装置の台数９２７と、最大同時接続セッション数９２８を記録する項目を持つ。
【００５０】
パターン別集計テーブル２９−１〜９２−Ｚは、リスト９２３に繋いだ過去一定回数の個別（一日分）の時間帯別アクセス記録集計リスト９３−１〜９３−Ｙを持つ。
【００５１】
図７、図８が示すように、アクセス記録集計テーブル８０、及び、アクセス特異日用アクセス記録集計テーブル９０は、一定量の過去の日付の時間帯別アクセス記録をリストで保持しているので、指定した日付のアクセス記録を統計処理結果から削除することができる。
【００５２】
例えば、運用者がコンソール６より、アクセス記録を削除したい日付を指定する。
【００５３】
管理サーバ装置５は、プロセッサ４０がアクセス統計処理モジュール４２２を実行することにより、まず、アクセス特異日用アクセス記録集計テーブル９０を参照し、コンソール６より入力された日付と同じ日付９３１の情報を持つ時間帯別アクセス記録集計リスト９３が存在するか否かをチェックする。もし同一の日付の時間帯別アクセス記録集計リスト９３が存在した場合は、該時間帯別アクセス記録集計リスト９３をリスト９２３から外し、該時間帯別アクセス記録集計リスト９３内に記録されている値を、パターン別集計テーブル９２内の時間帯別全アクセス記録９２１から減ずる。その後、該時間帯別アクセス記録集計リスト９３を初期化し、リスト９２３の最後尾に繋ぐ。
【００５４】
アクセス特異日用アクセス記録集計テーブル９０に該当日付のデータがなかった場合は、アクセス記録集計テーブル８０を参照し、コンソール６より入力された日付と同じ日付８２１の情報を持つ個別の時間帯別アクセス記録集計リスト８２が存在するか否かをチェックする。もし同一の日付の時間帯別アクセス記録集計リスト８２が存在した場合は、該時間帯別アクセス記録集計リスト８２をリスト８０３から外し、該時間帯別アクセス記録集計リスト８２内に記録されている値を、時間帯別全アクセス記録８０１から減ずる。その後、該時間帯別アクセス記録集計リスト８２を初期化し、リスト８０３の最後尾に繋ぐ。
【００５５】
以上の手順により、運用者が指定した日付のアクセス記録を統計処理結果から削除することができる。
【００５６】
図９は、管理サーバ装置５のプロセッサ４０がアクセス統計処理モジュール４２２を実行することにより実現される統計処理機能の概要を示すフローチャートである。
【００５７】
管理サーバ装置５は、まず、負荷分散装置４のディスク４４上にあるアクセスログファイル６０を取得する（Ｓ２１０１）。ファイル取得の方法は、ｆｔｐ等を使用したサーバ装置間のファイル転送でもよいし、負荷分散装置４と管理サーバ装置５で共有ディスクを持ち、ここにアクセスログファイル６０を格納するようにしてもよい。アクセスログファイル６０を取得したら、この中にあるアクセスログレコード６２−１〜６２−Ｋを管理サーバ装置５のデータメモリ５３上に読み込む（Ｓ２１０２）。メモリ上に読み込んだアクセスログレコード６２−１〜６２−Ｋに対して、次の処理を行う。
【００５８】
アクセスログレコード６２のリクエスト受信時刻６２８の日付が、アクセス特異日リスト９１の先頭ブロック９１１−１と一致している場合（Ｓ２１０３）、アクセス特異日ブロック９１１−１のアクセス特異日パターン９１４よりパターン別集計テーブル９２−１〜９２−Ｚのエントリを特定する（Ｓ２１０４）。
【００５９】
次に、該エントリのリスト９２３に繋がっている時間帯別アクセス記録集計リスト９３−１の日付９３１と、アクセスログレコード６２のリクエスト受信時刻６２８の日付が一致しない場合（Ｓ２１０５）、リスト９２３の最後尾に繋がっている時間帯別アクセス記録集計リスト９３−Ｙをリストから外し、９３−Ｙを初期化（具体的には、日付９３１にアクセス特異日ブロック９１１−１のアクセス特異日９１３の日付を設定し、他のデータは０に設定する）した後、該リストをリスト９２３の先頭に繋げる（Ｓ２１０６）。結果として、初期化して先頭に繋いだリストが９３−１に代わる。
【００６０】
次に、アクセスログレコード６２から得られる値を用いて、パターン別集計テーブル９２及び時間帯別アクセス記録集計リスト９３−１内の該当時間帯の正常アクセス数９２４、異常アクセス数９２５、応答時間９２６の値を更新する（Ｓ２１０７）。具体的には、アクセスログレコード６２のエラー番号６２３に値が設定されている、すなわちエラーが発生していた場合は、異常アクセス９２５の値を１上げ、それ以外の場合は正常アクセス数９２４の値を１上げる。また、サービスサーバ装置応答待ち時間６３１の値を応答時間９２６に加算する。
【００６１】
更に、アクセスログレコード６２中の振り分け先サービスサーバ装置台数６４１と、パターン別集計テーブル９２及び時間帯別アクセス記録集計リスト９３−１内の該当時間帯の振り分け先サービスサーバ装置台数９２７の値を比較し（Ｓ２１０８）、アクセスログレコード中の値６４１の方が大きい場合は、パターン別集計テーブル９２及び時間帯別アクセス記録集計リスト９３−１内の振り分け先サービスサーバ装置台数９２７をアクセスログレコードの値に更新する（Ｓ２１０９）。
【００６２】
更に、アクセスログレコード６２中の同時接続セッション数６４０と、パターン別集計テーブル９２及び時間帯別アクセス記録集計リスト９３−１内の該当時間帯の最大同時接続セッション数９２８の値を比較し（Ｓ２１１０）、アクセスログレコード中の値６４０の方が大きい場合は、パターン別集計テーブル９２及び時間帯別アクセス記録集計リスト９３−１内の最大同時接続セッション数９２８をアクセスログレコードの値に更新する（Ｓ２１１１）。
【００６３】
一方、アクセスログレコード６２のリクエスト受信時刻６２８の日付が、アクセス特異日リスト９１の先頭ブロック９１１−１と一致しなかった場合（Ｓ２１０３）は、リクエスト受信時刻の日付から曜日を特定し、集計テーブル８１−１〜８１−７のエントリを特定する（Ｓ２１１２）。
【００６４】
次に、該エントリのリスト８０３に繋がっている時間帯別アクセス記録集計リスト８２−１の日付８２１と、アクセスログレコード６２のリクエスト受信時刻６２８の日付が一致しない場合（Ｓ２１１３）、リスト８０３の最後尾に繋がっている時間帯別アクセス記録集計リスト８２−Ｘをリストから外し、８２−Ｘを初期化（具体的には、日付８２１にアクセスログレコード６２のリクエスト受信時刻６２８の日付を設定し、他のデータは０に設定する）した後、該リストをリスト８０３の先頭に繋げる（Ｓ２１１４）。結果として、初期化して先頭に繋いだリストが８２−１に代わる。
【００６５】
次に、アクセスログレコード６２から得られる値を用いて、集計テーブル８１及び時間帯別アクセス記録集計リスト８２−１内の該当時間帯の正常アクセス数８１１、異常アクセス数８１２、応答時間８１３の値を更新する（Ｓ２１１５）。具体的には、アクセスログレコード６２のエラー番号６２３に値が設定されている、すなわちエラーが発生していた場合は、異常アクセス８１２の値を１上げ、それ以外の場合は正常アクセス数８１１の値を１上げる。また、サービスサーバ装置応答待ち時間６３１の値を応答時間８１３に加算する。
【００６６】
更に、アクセスログレコード６２中の振り分け先サービスサーバ装置台数６４１と、集計テーブル８１及び時間帯別アクセス記録集計リスト８２−１内の該当時間帯の振り分け先サービスサーバ装置台数８１４の値を比較し（Ｓ２１１６）、アクセスログレコード中の値６４１の方が大きい場合は、集計テーブル８１及び時間帯別アクセス記録集計リスト８２−１内の振り分け先サービスサーバ装置台数８１４をアクセスログレコードの値に更新する（Ｓ２１１７）。
【００６７】
更に、アクセスログレコード６２中の同時接続セッション数６４０と、集計テーブル８１及び時間帯別アクセス記録集計リスト８２−１内の該当時間帯の最大同時接続セッション数８１５の値を比較し（Ｓ２１１８）、アクセスログレコード中の値６４０の方が大きい場合は、集計テーブル８１及び時間帯別アクセス記録集計リスト８２−１内の最大同時接続セッション数８１５をアクセスログレコードの値に更新する（Ｓ２１１９）。
【００６８】
アクセスログレコード６２−１〜６２−Ｋに対して、上記Ｓ２１０３〜Ｓ２１１５の処理を実施する（Ｓ２１２０）。
【００６９】
最後に、アクセスログファイル６０のヘッダ６１に記録しているログ出力終了時刻６１２の日付が、アクセス特異日ブロック９１１−１のアクセス特異日９１３を超えている場合（Ｓ２１２１）、アクセス特異日ブロック９１１−１をアクセス特異日リスト９１から外す（Ｓ２１２２）。
【００７０】
図１０は、管理サーバ装置５においてプロセッサ４０がアクセス統計処理モジュール４２２を実行することにより生成されるサービスサーバ装置運転計画表の一構成例である。
【００７１】
サービスサーバ装置運転計画表１００は、時間帯別運転リスト１０００−０〜１０００−２３を持つ。時間帯別運転リスト内は、振り分け先サービスサーバ装置の台数を格納する振り分け台数１００１と、接続セッション総数の上限値を設定する接続セッション数１００２と、格納する実際に振り分け先となるサービスサーバ装置のアドレスを格納するサービスサーバアドレス１００３を持つ。
【００７２】
サービスサーバ装置運転計画表１００は、事前に、例えば前日に、管理サーバ装置５が作成する。
【００７３】
管理サーバ装置５は、まず、アクセス特異日リスト９１を参照し、翌日がアクセス特異日であるか否かをチェックする。アクセス特異日である場合は、該当するアクセス特異日ブロック９１１のアクセス特異日パターン９１４から参照すべき集計テーブル９２−ｎを決定する。アクセス特異日でない場合は、アクセス記録集計テーブル８０内の該当曜日から参照すべき集計テーブル８１を決定する。
【００７４】
参照すべき集計テーブルが決定したら、テーブルの各時間帯の統計データから、各時間帯の必要サーバ装置数を求める。
【００７５】
例えば、アクセス特異日の場合、アクセス特異日用アクセス記録集計テーブル９０の時間帯別全アクセス記録９２１に記録された各時間帯の正常アクセス数９２４及び異常アクセス数９２５の合計を記録回数と単位時間で割って平均スループットを求め、この値を接続セッション数１００２に設定する。
【００７６】
また、同様の方法で、各時間帯の平均応答時間を求める。ここで、得られた平均応答時間が、あらかじめシステムで決められた基準最大応答時間より遅い場合、該当時間帯の振り分け先サービスサーバ装置台数９２７をチェックする。その結果、振り分け先サービスサーバ装置台数を増やすことが可能ならば、振り分け先サービスサーバ装置台数９２７の値に１増やした値を振り分け先サービスサーバ装置台数として振り分け台数１００１に設定する。
【００７７】
振り分け先サービスサーバ装置台数を増やすことができない場合は、振り分け先サービスサーバ装置台数９２７の値をそのまま振り分け台数１００１に設定する。同時に、接続セッション数１００２に設定した値と、最大同時接続セッション数９２８の値を比較し、値の小さい方を選択し、更に、その値から一定値（１０、１００、などの値をシステム規模に応じて予め決めておく）を減じた値で接続セッション数１００２の値を置き換える。
【００７８】
逆に、平均応答時間が基準最大応答時間よりも一定値（基準最大応答時間の１／２等、予め決めておく）以上低い場合は、振り分け先サービスサーバ装置台数９２７の値から１減じた値を振り分け先サービスサーバ装置台数として振り分け台数１００１に設定する。
【００７９】
アクセス記録集計テーブル８０の値を使用する場合も、同様の処理にて振り分け先サービスサーバ装置台数を決定する。
【００８０】
アクセス特異日以外の場合、アクセス記録集計テーブル８０内の時間帯別全アクセス記録８０１の、該当する曜日の集計テーブル８１に記録された各時間帯の正常アクセス数８１１及び異常アクセス数８１２の合計を記録回数と単位時間で割って平均スループットを求め、この値を接続セッション数１００２に設定する。
【００８１】
また、同様の方法で、各時間帯の平均応答時間を求める。ここで、得られた平均応答時間が、予めシステムで決められた基準最大応答時間より遅い場合、該当時間帯の振り分け先サービスサーバ装置台数８１４をチェックする。その結果、振り分け先サービスサーバ装置台数を増やすことが可能ならば、振り分け先サービスサーバ装置台数８１４の値に１増やした値を振り分け先サービスサーバ装置台数として振り分け台数１００１に設定する。
【００８２】
振り分け先サービスサーバ装置台数を増やすことができない場合は、振り分け先サービスサーバ装置台数８１４の値をそのまま振り分け台数１００１に設定する。同時に、接続セッション数１００２に設定した値と、最大同時接続セッション数８１５の値を比較し、値の小さい方を選択し、更に、その値から一定値（上記アクセス特異日の場合と同一の値を使用する）を減じた値で接続セッション数１００２の値を置き換える。
【００８３】
逆に、平均応答時間が基準最大応答時間よりも一定値（上記アクセス特異日の場合と同一の値を使用する）以上低い場合は、振り分け先サービスサーバ装置台数８１４の値から１減じた値を振り分け先サービスサーバ装置台数として振り分け台数１００１に設定する。
【００８４】
なお、上記実施例では、アクセス特異日以外の場合のアクセス記録集計テーブル８０の各レコードを、一週間の曜日別に作成しているが、これに限定されず、他の基準によりレコードを作成しても良い。
【００８５】
上記のように各時間帯の振り分け先サービスサーバ装置台数を決定した後、管理サーバ装置５は、振り分け台数１００１に設定した値に従ってサービスサーバ装置７−１〜７−Ｎを割り当て、該サービスサーバ装置のアドレスをサービスサーバ装置アドレス１００３に設定する。サービスサーバ装置の割り当て方法には、常にアドレスの小さい方から必要台数を割り当てる方法や、常に最後に割り当てたサービスサーバ装置のアドレスを覚えておき、これを基準にサービスサーバ装置を割り当ててゆくローテーション方式、などがある。
【００８６】
以上の方法でサービスサーバ装置運転計画表１００を作成したら、管理サーバ装置５は、該サービスサーバ装置運転計画表１００を負荷分散装置４に送信する。
【００８７】
負荷分散装置４においてプロセッサ４０は、負荷分散制御モジュール４２１を実行することにより、受信したサービスサーバ装置運転計画表１００をデータメモリ４３上に記憶し、例えば、毎時５９分に該サービスサーバ装置運転計画表１００を参照し、その指定内容に従って振り分け先管理テーブル７０を更新する。具体的には、サービスサーバ装置運転計画表１００内のサービスサーバ装置１００３に指定されたサービスサーバ装置に対応して、振り分け先管理テーブル７０内の振り分け先フラグ７０２をセットする。また、サービスサーバ装置運転計画表１００内の接続セッション数１００２の値を振り分け台数１００１で割った値を、振り分け先フラグ７０２をセットしたサービスサーバ装置の接続セッション上限値７０３に設定する。
【００８８】
この後、負荷分散装置４においてプロセッサ４０は、負荷分散制御モジュール４２１を実行することにより、振り分け先管理テーブル７０の内容に従って、リクエストの振り分け処理を行う。
【００８９】
上記実施例によれば、過去の統計データから自動的に負荷分散システムの運転計画を策定し、サービスサーバ装置過負荷を回避する負荷分散制御を行うため、サービスサーバ装置過負荷によるサービス品質低下を防止することができる。
【００９０】
また、通常のアクセスパターンとは異なる特異日に対しても、運用者が事前に特異日を登録しておくことにより、自動的に特異日に対応した運転計画を策定するため、より適切な負荷分散制御が可能となる。
【００９１】
一方、管理サーバ装置５は、該サービスサーバ装置運転計画表１００に基づき、振り分け先となっていないサービスサーバ装置に対して、負荷分散装置４を介して行われるサービスとは異なるアプリケーションを実行させることができる。該サービスサーバ装置運転計画表１００により、負荷分散装置４を介して行われるサービスには必要十分なサービスサーバ装置を割り当てているため、サービスには影響を与えずに異なる業務を実行でき、システムを効率よく利用することができる。
【００９２】
また、実行する業務がない場合は、振り分け先となっていないサービスサーバ装置を停止することも可能である。例えば、毎時５分になったら、該サービスサーバ装置運転計画表１００に記載の当該時間帯のサービスサーバ装置アドレス１００３をチェックし、振り分け先となっていないサービスサーバ装置があれば、該サービスサーバ装置に対して停止のための通信を行い、該サービスサーバ装置７を停止させる。不要なサービスサーバ装置を停止することにより、システム全体の消費電力を抑えることができる。
【００９３】
停止させたサービスサーバ装置は、同じく該サービスサーバ装置運転計画表１００に記載のサービスサーバ装置アドレス１００３をチェックし、必要となるときに起動すればよい。
【００９４】
以上の実施例では、管理サーバ装置５が作成したサービスサーバ運転計画の予想を超えた数のリクエストが負荷分散装置４に到着した場合、図５のステップＳ２００３及びＳ２０１１に示したように、端末１にエラーを返すことにより、準備されたサービスサーバ装置の範囲でサービス品質の維持を図っている。
【００９５】
これに対して、サービスサーバ運転計画の予想を超えた数のリクエストが負荷分散装置４に到着した場合に、負荷分散装置４が振り分け先サービスサーバ装置を追加し、追加したサービスサーバ装置にもリクエストを振り分けることにより、サービス品質の維持を図ってもよい。
【００９６】
この実施例における、負荷分散装置４のプロセッサ４０が負荷分散制御モジュール４２１を実行することにより実現されるリクエスト振り分け処理機能のフローチャートを図１１に示す。
【００９７】
図１１の実施例のリクエスト振り分け処理は、ステップＳ２００３において、全てのサービスサーバ装置７の接続セッション数７０４が接続セッション上限値７０３に達している場合を除いて、図５に示した処理と同様である。
【００９８】
図１１のステップＳ２００３において、全ての振り分け先サービスサーバ装置７の接続セッション数７０４が接続セッション上限値７０３に達している場合、負荷分散装置４は、振り分け先管理テーブル７０を参照し、振り分け先フラグ７０２がセットされていないサービスサーバ装置がないかチェックする（Ｓ２０２０）。振り分け先フラグ７０がセットされていないサービスサーバ装置が存在した場合、該サービスサーバ装置にリクエストを振り分けることによりサービスの継続が可能なる。
【００９９】
そこで、負荷分散装置４は、該サービスサーバ装置を振り分け先対象とするために、振り分け先管理テーブル７０を更新する（Ｓ２０２１）。具体的には、該サービスサーバ装置の振り分け先フラグ７０２をセットし、既に振り分け先となっているサービスサーバ装置の接続セッション上限値７０３の値を該サービスサーバ装置の接続セッション上限値７０３に設定し、更に、該サービスサーバ装置の接続セッション数７０４の値を１にする。
【０１００】
この後、負荷分散装置４は、追加したサービスサーバ装置に対してリクエストを送信する。
【０１０１】
以上の処理により、該サービスサーバ装置は以後振り分け先サービスサーバ装置となる。
【０１０２】
この実施例によれば、負荷分散システム３に予想を超えたリクエストが到着しても、端末１にエラーを返すことなくサービスを継続することができる。
【０１０３】
なお、図１１のステップＳ２０２０のチェックにおいて、振り分け先フラグ７０がすべてセットされていた場合は、既にすべてのサービスサーバ装置が振り分け先になっており、これ以上のリクエスト処理はできないため、端末１にエラーを返す。
【０１０４】
また、負荷分散装置４が、ステップＳ２０２１において行った振り分け先サービスサーバ装置追加の情報は、アクセスログレコード６２−ｋの振り分け先サービスサーバ装置台数６４１に反映する。該振り分け先サービスサーバ装置台数６４１に反映したサービスサーバ装置台数の情報は、管理サーバ装置５の統計処理、具体的には、図９のステップＳ２１０９またはＳ２１１７により、アクセス記録集計テーブル８０またはアクセス特異日用アクセス記録集計テーブル９０に反映するため、次のサービスサーバ装置運転計画表１００の作成に有効に利用される。
【図面の簡単な説明】
【０１０５】
【図１】本実施例における負荷分散システム３を含む通信ネットワークシステムの構成図。
【図２】負荷分散システム３を構成している負荷分散装置４及び管理サーバ装置５の構成図。
【図３】負荷分散装置４のディスク４４上、及び、管理サーバ装置５のディスク５４上に蓄積されるアクセスログファイル６０のデータ構造の１実施例を示す図。
【図４】アクセスログの実態であるアクセスログレコード６２−１〜６２−Ｋのデータ構造の１実施例を示す図。
【図５】負荷分散装置４が行うリクエスト振り分け処理の一実施例を示すフローチャート。
【図６】負荷分散装置４がリクエスト振り分け先を管理するために使用するテーブルの１実施例を示す図。
【図７】通常の日のサービスサーバ装置７へのアクセス統計を記録するための集計テーブルの１実施例を示す図。
【図８】アクセス特異日のサービスサーバ装置へのアクセス統計を記録するための集計テーブルの１実施例を示す図。
【図９】管理サーバ装置５が行うアクセスログ統計処理の一実施例を示すフローチャート。
【図１０】サービスサーバ装置７−１〜７−Ｎの運転計画を示すテーブルの１実施例を示す図。
【図１１】負荷分散装置４が行うリクエスト振り分け処理の別の実施例を示すフローチャート。
【符号の説明】
【０１０６】
１：クライアント端末、２：通信網、３：負荷分散システム、４：負荷分散装置、５：管理サーバ装置、６：コンソール、７：サービスサーバ装置、８：データベース、６０：アクセスログファイル、６１：アクセスログファイルヘッダ、６２：アクセスログレコード、７０：振り分け先管理テーブル、８０：アクセス記録集計テーブル、９０：アクセス特異日用アクセス記録集計テーブル、９１：アクセス特異日リスト、１００：サービスサーバ装置運転計画表
【図１】
2005141441.tif 000003
【図２】
2005141441.tif 000004
【図３】
2005141441.tif 000005
【図４】
2005141441.tif 000006
【図５】
2005141441.tif 000007
【図６】
2005141441.tif 000008
【図７】
2005141441.tif 000009
【図８】
2005141441.tif 000010
【図９】
2005141441.tif 000011
【図１０】
2005141441.tif 000012
【図１１】
2005141441.tif 000013