(57)【要約】【課題】データ処理システムにおいて要求を処理するための方法、装置およびコンピュータ命令を提供すること。【解決手段】要求を処理するために複数のプロセスが提供される。これら複数のプロセスのそれぞれは、複数の外部ポートの中の１つの外部ポート・サブセットから来る各要求を処理するように割り当てられ、１つのプロセスに割り当てられた１組の外部ポートが、これら複数の外部ポートのうちの他の外部ポート・サブセットに対して固有なものとなるようにする。１つの要求中に含まれる外部ポートは、当該要求の受信に応答して識別される。当該要求は、要求中に含まれる当該外部ポートに一致する外部ポートを持った外部ポート・サブセット、が割り当てられたプロセスに対して送られ、このプロセスが当該要求を処理する。【選択図】図３
2008071359.tif 000002
【特許請求の範囲】
【請求項１】
データ処理システムにおいて要求を処理するための方法であって、
前記要求を処理するために複数のプロセスを提供するステップであって、前記複数のプロセスのそれぞれに、複数の外部ポートのうちの１つの外部ポート・サブセットが割り当てられ、前記複数の外部ポートの各々は、前記要求の発信元である遠隔マシン上のクライアント・プロセスを識別するのに使用する番号である、ステップと、
要求の受信に応答して、前記要求中に含まれる１つの外部ポートを識別するステップと、
前記要求中に含まれる前記外部ポートと一致する外部ポートを持つ前記外部ポート・サブセット、が割り当てられた１つのプロセスに前記要求を送るステップであって、前記プロセスが前記要求を処理する、ステップと、
ネットワーク負荷を計算するステップと、
前記ネットワーク負荷が第１の選択された閾値を超えて増加した場合に、前記複数のプロセスにいくつかのプロセスを追加するステップと、
前記ネットワーク負荷が第２の選択された閾値以下に減少した場合に、前記複数のプロセスからいくつかのプロセスを取り去るステップと、
を含む方法。
【請求項２】
前記プロセスに割り当てられる前記外部ポート・サブセットが、前記複数の外部ポートのうちの他の外部ポート・サブセットに対して固有なものとなるように、前記外部ポート・サブセットが割り当てられる、
請求項１に記載の方法。
【請求項３】
前記要求が１つの要求元からのものであり、
前記要求を処理する前記プロセスが前記要求元との接続を確立する、
請求項１に記載の方法。
【請求項４】
前記要求が１つのローカル・ポートおよび１つのローカルＩＰアドレスをも含み、
前記ローカル・ポートおよび前記ローカルＩＰアドレスが、前記プロセスについての１つのローカル・ポートおよび前記プロセスについての１つのローカルＩＰアドレスに一致するかどうかの識別を開始するステップ、をさらに有する、
請求項１に記載の方法。
【請求項５】
前記複数プロセスのうちの１つのプロセスがマスタ・プロセスであり、
前記複数プロセスのうちの残りのプロセスはスレーブ・プロセスである、
請求項１に記載の方法。
【請求項６】
前記プロセスによる前記要求の受信に応答して、前記要求を処理するための１つのスレーブ・プロセスを生成するステップ、
をさらに有する、請求項１に記載の方法。
【請求項７】
前記複数のプロセスがサーバ・プロセスである、請求項１に記載の方法。
【請求項８】
要求を処理するためのデータ処理システムであって、
１つのバス・システムと、
前記バス・システムに接続され、１組の命令を含む１つのメモリと、
前記バス・システムに接続された１つの通信アダプタと、
前記バス・システムに接続され、前記１組の命令を実行して、前記要求を処理するための複数のプロセスを提供する１つの処理ユニットであって、前記複数のプロセスのそれぞれが、
複数の外部ポートのうちの１つの外部ポート・サブセットを割り当てられ、前記複数の外部ポートの各々は、前記要求の発信元である遠隔マシン上のクライアント・プロセスを識別するのに使用する番号であり、
要求を受信したことに応答して、前記要求中に含まれる外部ポートを識別し、
前記要求中に含まれる前記外部ポートと一致する外部ポートを持つ前記外部ポート・サブセット、が割り当てられた１つのプロセスに前記要求を送り、当該プロセスは前記要求を処理し、ネットワーク負荷を計算し、前記ネットワーク負荷が第１の選択された閾値を超えて増加した場合に前記複数のプロセスにいくつかのプロセスを追加し、前記ネットワーク負荷が第２の選択された閾値以下に減少した場合に前記複数のプロセスからいくつかのプロセスを取り去る、
処理ユニットと、
を有するデータ処理システム。
【請求項９】
前記プロセスに割り当てられる前記外部ポート・サブセットが、前記複数の外部ポートのうちの他の外部ポート・サブセットに対して固有なものとなるように、前記外部ポート・サブセットが割り当てられる、
請求項８に記載のデータ処理システム。
【請求項１０】
要求を処理するためのデータ処理システムであって、
前記要求を処理するための複数のプロセスを提供するための提供手段であって、前記複数のプロセスのそれぞれに、複数の外部ポートのうちの１つの外部ポート・サブセットが割り当てられ、前記複数の外部ポートの各々は、前記要求の発信元である遠隔マシン上のクライアント・プロセスを識別するのに使用する番号である、提供手段と、
要求の受信に応答して、前記要求中に含まれる１つの外部ポートを識別するための識別手段と、
前記要求中に含まれる前記外部ポートと一致する外部ポートを持つ前記外部ポート・サブセット、が割り当てられた１つのプロセスに前記要求を送るための送信手段であって、前記プロセスが前記要求を処理する送信手段と、
ネットワーク負荷を計算するための計算手段と、
前記ネットワーク負荷が第１の選択された閾値を超えて増加した場合に、前記複数のプロセスにいくつかのプロセスを追加するための追加手段と、
前記ネットワーク負荷が第２の選択された閾値以下に減少した場合に、前記複数のプロセスからいくつかのプロセスを取り去るための除去手段と、
を有するデータ処理システム。
【請求項１１】
前記プロセスに割り当てられた前記外部ポート・サブセットが、前記複数の外部ポートのうちの他の外部ポート・サブセットに対して固有なものとなるように、前記外部ポート・サブセットが割り当てられる、
請求項１０に記載のデータ処理システム。
【請求項１２】
前記要求が１つの要求元からのものであり、前記要求を処理する前記プロセスが前記要求元との接続を確立する、
請求項１０に記載のデータ処理システム。
【請求項１３】
前記要求が１つのローカル・ポートおよび１つのローカルＩＰアドレスをも含み、
前記ローカル・ポートおよび前記ローカルＩＰアドレスが、前記プロセスについての１つのローカル・ポートおよび前記プロセスについての１つのローカルＩＰアドレスに一致する場合に、前記識別手段の実行を開始するための開始手段、をさらに有する、
請求項１０に記載のデータ処理システム。
【請求項１４】
前記複数プロセスのうちの１つのプロセスがマスタ・プロセスであり、
前記複数プロセスのうちの残りのプロセスはスレーブ・プロセスである、
請求項１０に記載のデータ処理システム。
【請求項１５】
前記プロセスによる前記要求の受信に応答して、前記要求を処理する１つのスレーブ・プロセスを生成する生成手段、
をさらに有する、請求項１０に記載のデータ処理システム。
【請求項１６】
前記複数のプロセスがサーバ・プロセスである、請求項１０に記載のデータ処理システム。
【請求項１７】
データ処理システムで受信された要求を処理するための、コンピュータ読取り可能なコンピュータ・プログラムであって、
前記要求を処理するために複数のプロセスを提供するステップであって、前記複数プロセスのそれぞれに、複数の外部ポートのうちの１つの外部ポート・サブセットが割り当てられ、前記複数の外部ポートの各々は、前記要求の発信元である遠隔マシン上のクライアント・プロセスを識別するのに使用する番号である、ステップと、
要求の受信に応答して、前記要求中に含まれる１つの外部ポートを識別するステップと、
前記要求中に含まれる前記外部ポートと一致する外部ポートを持つ前記外部ポート・サブセット、が割り当てられた１つのプロセスに前記要求を送るステップであって、前記プロセスが前記要求を処理する、ステップと、
ネットワーク負荷を計算するステップと、
前記ネットワーク負荷が第１の選択された閾値を超えて増加した場合に、前記複数のプロセスにいくつかのプロセスを追加するステップと、
前記ネットワーク負荷が第２の選択された閾値以下に減少した場合に、前記複数のプロセスからいくつかのプロセスを取り去るステップと、
を前記データ処理システムに実行させるための、コンピュータ・プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、改良型データ処理システムに関し、詳細には、要求を処理するための方法、装置およびコンピュータ命令に関する。さらに詳細には、本発明は、クライアントの要求を処理するためのサーバ負荷を分散する方法、装置およびコンピュータ命令を提供する。
【背景技術】
【０００２】
「インターネットワーク」とも称されるインターネットは、データ転送と、送信側ネットワークのプロトコルから受信側ネットワークが使用するプロトコルへのメッセージ変換とを扱うゲートウェイによって結合される、異なり得るコンピュータ・ネットワークのセットである。
大文字表記の場合、用語「インターネット（Internet）」は、ＴＣＰ／ＩＰ（TransmissionControl Protocol/Internet Protocol）プロトコル群を用いるネットワークおよびゲートウェイの集合体を意味する。
【０００３】
インターネットは、情報と娯楽の両方の提供源として文化的基盤（cultural fixture）になってきた。多くの企業がマーケティング活動の不可欠な部分として、インターネット・サイトを立ち上げ、そのビジネスが提供する製品またはサービスについて消費者に知らせ、あるいはブランド信仰を養おうとして他の情報を提供している。
多くの連邦、州および地方の政府機関、特に、内国税歳入局や諸省庁など事実上すべての社会の諸部門とやり取りをしなければならない機関もまた、情報目的のためにインターネット・サイトを使用している。
オンライン上の公文書の情報ガイドまたは検索可能なデータベースあるいはその両方を提供することで、運営コストを削減することができる。さらに、商取引のための媒体として、インターネットはますます普及している。
【０００４】
今日、最も一般に使用されているインターネット上でのデータ転送方法は、単に「ウェブ」とも称される、ワールド・ワイド・ウェブ環境を使用するものである。
ＦＴＰ（File TransferProtocol：ファイル転送プロトコル）やGopher（ゴーファー）など、情報転送のための他のインターネット・リソースが存在するが、ウェブほどには普及していない。
ウェブ環境では、サーバおよびクライアントが様々なデータ・ファイル（テキスト、静止グラフィック・イメージ、音声、動画ビデオなど）の転送を扱うための周知のプロトコルであるＨＴＴＰ（Hypertext Transfer Protocol）を用いてデータ・トランザクションを実行する。
様々なデータ・ファイル内の情報は、ユーザに提示するために、標準のページ記述言語、ＨＴＭＬ（Hypertext Markup Language）を用いてフォーマットされる。
【０００５】
基本的な提示フォーマティングに加えて、ＨＴＭＬを用いると、開発者がＵＲＬ（Uniform Resource Locator）によって識別される他のウェブ・リソースへの「リンク」を指定することも可能になる。
ＵＲＬは、特定の情報への通信パスを定義する特別な構文識別子である。
「ページ」または「ウェブ・ページ」と称される、クライアントからアクセス可能なそれぞれの論理情報ブロックをＵＲＬによって識別する。
ＵＲＬは、こうした情報を見つけてアクセスするための普遍的で一貫した方法を、必ずしもユーザのためではなく、たいていはユーザのウェブ「ブラウザ」のために提供する。
ブラウザは、たとえばＵＲＬなどの識別子によって識別される情報の要求を提示することができるプログラムである。
ユーザは、ブラウザがコンテンツ・ソースにアクセスできるように、ＧＵＩ（graphical user interface）を介してドメイン名を入力することができる。
ドメイン名は、ドメイン・ネーム・システム（ＤＮＳ）によって、ＩＰ（Internet Protocol）アドレスに自動的に変換される。
ドメイン・ネーム・システムは、データベースでドメイン名を調べて、ユーザが入力したシンボル名をＩＰアドレスに変換するサービスである。
【０００６】
インターネットは、ブラウザを使用するユーザにアプリケーションを転送するためにも広く使用されている。
ウェブ上の商取引に関しては、個人消費者および企業が様々な商品およびサービスを購入するためにウェブを使用する。
商品およびサービスを提供する際に、一部の企業はウェブ上だけで商品およびサービスを提供し、他の企業は取引先の範囲を広げるためにウェブを使用する。
【発明の開示】
【発明が解決しようとする課題】
【０００７】
ウェブ・ページおよびアプリケーションに対する様々な接続要求がウェブ・サーバやＦＴＰサーバなどのサーバによって処理されている。
こうしたサーバはしばしば、通常は多数のクライアントが同時にサービスを要求したときに生じる重い負荷を負っている。
この問題はしばしば、こうした仕事を実施するためのスレーブ・サーバを生成（spawn and create）することによって解決される。
この方式では、メイン・サーバが続けて新しい接続を受け入れ、これらの接続をスレーブ・サーバに直ちに配分することができる。
しかし、こうしたシステムには依然としてボトルネックがある。
このボトルネックとはメイン・サーバであり、このメイン・サーバには全ての入り接続をリスン（listen for）するためのソケットが１つしかない。
【０００８】
したがって、サーバ負荷分散のための改良された方法、装置およびコンピュータ命令があれば有利であろう。
【課題を解決するための手段】
【０００９】
本発明は、データ処理システムにおいて要求を処理するための方法、装置およびコンピュータ命令を提供する。
要求を処理するために複数のプロセスが提供される。
こうした複数プロセスのそれぞれに、複数外部ポートのうちのある外部ポート・サブセットからの要求を処理する役割が割り当てられる。
こうした例では、あるプロセスに割り当てられる外部ポート・サブセットが、複数外部ポートのうちの他の外部ポート・サブセットに対して一意になるように割当てが行われる。
要求の受信に応答して、要求中に含まれる外部ポートが識別される。
要求は、要求中に含まれる外部ポートに対応する外部ポート・サブセットが割り当てられたプロセスに送られ、このプロセスが要求を処理する。
【発明を実施するための最良の形態】
【００１０】
次に図面を参照すると、図１に、本発明を実施することができるデータ処理システムのネットワークの絵画図が示してある。
ネットワーク・データ処理システム１００は、本発明を実施することができるコンピュータのネットワークである。
ネットワーク・データ処理システム１００は、ネットワーク１０２を含む。
このネットワークは、ネットワーク・データ処理システム１００内で互いに接続された様々な装置およびコンピュータの間の通信リンクを提供するために使用される媒体である。
ネットワーク１０２は、有線、無線通信リンクや光ファイバ・ケーブルなどの接続を含むことができる。
【００１１】
この図に示した例では、サーバ・コンピュータ１０４は、記憶装置１０６とともに、ネットワーク１０２に接続される。
さらに、クライアント１０８、１１０および１１２もネットワーク１０２に接続される。
これらのクライアント１０８、１１０および１１２は、たとえば、パーソナル・コンピュータでも、ネットワーク・コンピュータでもよい。
【００１２】
この図に示した例では、サーバ・コンピュータ１０４は、ブート・ファイル、オペレーティング・システム・イメージ、アプリケーションなどのデータをクライアント１０８〜１１２に提供する。
クライアント１０８、１１０および１１２は、サーバ・コンピュータ１０４に対するクライアントである。
ネットワーク・データ処理システム１００は、図示されていない追加のサーバ・コンピュータ、クライアントおよび他の装置を含むことができる。
この図に示した例では、ネットワーク・データ処理システム１００は、互いに通信するためにＴＣＰ／ＩＰ（Transmission Control Protocol/Internet Protocol）プロトコル群を使用するネットワークおよびゲートウェイの世界規模の集合体である、ネットワーク１０２を含むインターネットである。
インターネットの中心には、データおよびメッセージをルーティングする無数の商業、政府、教育および他のコンピュータ・システムからなる主要ノードまたはホスト・コンピュータ間の高速データ通信回線のバックボーンがある。
もちろん、ネットワーク・データ処理システム１００は、複数の異なるタイプのネットワーク、たとえばイントラネット、ＬＡＮ（local area network：ローカル・エリア・ネットワーク）、ＷＡＮ（wide area network：広域ネットワーク）などとしても実施することができる。
図１は、本発明をアーキテクチュア面で限定するものではなく、例示するためのものである。
【００１３】
図２を参照すると、図１のサーバ・コンピュータ１０４などのサーバ・コンピュータとして実施することができる、本発明の好ましい一実施形態によるデータ処理システムのブロック図が示されている。
データ処理システム２００は、システム・バス２０６に接続された複数のプロセッサ２０２および２０４を含む対称マルチプロセッサ（ＳＭＰ）システムでよい。
あるいは、単一のプロセッサ・システムを使用してもよい。
システム・バス２０６には、ローカル・メモリ２０９にインターフェイスを提供するメモリ・コントローラ／キャッシュ２０８も接続されている。
Ｉ／Ｏバス・ブリッジ２１０は、システム・バス２０６に接続され、Ｉ／Ｏバス２１２とのインターフェイスを提供する。
メモリ・コントローラ／キャッシュ２０８およびＩ／Ｏバス・ブリッジ２１０は、図示するように統合することができる。
【００１４】
Ｉ／Ｏバス２１２に接続されたＰＣＩ（peripheralcomponent interconnect）バス・ブリッジ２１４は、ＰＣＩローカル・バス２１６にインターフェイスを提供する。
複数のモデムをＰＣＩローカル・バス２１６に接続することができる。
典型的なＰＣＩバスの実装では、４個のＰＣＩ拡張スロットすなわち拡張コネクタをサポートする。
拡張ボードを介してＰＣＩローカル・バス２１６に接続されたモデム２１８およびネットワーク・アダプタ２２０を介して、図１のクライアント１０８〜１１２との通信リンクを提供することができる。
【００１５】
追加のＰＣＩバス・ブリッジ２２２、２２４は、追加のＰＣＩローカル・バス２２６、２２８にインターフェイスを提供し、これらのバスを介して、追加のモデムまたはネットワーク・アダプタをサポートすることができる。
このようにして、データ処理システム２００は、複数のネットワーク・コンピュータとの接続を可能にする。
図示するように、メモリ・マップト・グラフィックス・アダプタ２３０およびハード・ディスク２３２を、直接または間接的にＩ／Ｏバス２１２に接続することもできる。
【００１６】
当業者には、図２に示すハードウェアは様々なものとすることができることが理解されよう。
たとえば、図示したハードウェアに加えて、またはその代わりに、光ディスク・ドライブなど他の周辺装置を使用することもできる。
この図に示した例は、アーキテクチュア面で本発明を限定するものではない。
【００１７】
図２に示すデータ処理システムは、たとえば、ＡＩＸ（Advanced Interactive Executive：）オペレーティング・システムまたはＬＩＮＵＸオペレーティング・システムを実行する、IBMeServer pSeries（商標）システムでよい。
【００１８】
本発明は、外部ポート配分に基づいてサーバ負荷を分散するための方法、装置およびコンピュータ命令を提供する。
特に、本発明の機構は、ソケットをあらゆる外部ポートにではなく、外部ポートのセットに結び付けることを可能にする。
ソケットは、ＴＣＰ／ＩＰスタックを使用するネットワーク内の適切なアプリケーションに向けてデータを送るために使用する機構である。
このスタックは、送られた全部のバイトが正しく受信されるようにするトランスポート機能を提供する。
このスタックは、アドレスに基づいてメッセージをルーティングするためにも使用される。
ソケットはＩＰアドレスおよびポート番号で構成される。
こうした例では、ソケットは、サーバに関連付けられ、サーバ・プロセスとも称される。
本明細書では、用語「サーバ」は、単独で使用する場合、実際のコンピュータまたはマシンではなくプロセスを意味する。
このようにして、接続を扱う際に複数のサーバを使用して異なる外部ポートをリスンすることができる。
こうした例では、ローカルＩＰ（ＬＩＰ）アドレス、外部ＩＰ（ＦＩＰ）アドレス、ローカル・ポート（ＬＰ）および外部ポート（ＦＰ）を使用して接続を識別する。
通常、サーバでは、ローカル・ポート番号がサーバに対応し、ＩＰアドレスがサーバに属している限り、どの外部ＩＰアドレス、およびどの外部ポートからの接続も受け入れるソケットを使用する。
【００１９】
本発明によれば、複数のサーバを使用して、外部ポートに基づいて接続がこうしたサーバに分散されるようにする。
「外部ポート」は、ＴＣＰ／ＩＰ要求パケットの発信元である遠隔マシン上のプロセス（本発明におけるクライアント・プロセス）を識別するのに使用する番号である。
この番号は、ＴＣＰ／ＩＰプロトコル・スタックのトランスポート層で使用される。
ローカル・プロセス（本発明におけるサーバ・プロセス）は、外部ポートを使用して元のパケットへの返信を生成する。
この番号を用いることで、返信パケットが要求パケットの送信元である同じクライアント・プロセスに確実に到達する。
本発明によれば、それぞれのサーバに外部ポートのサブセットを割り当てる。
図に示した例では、複数のサーバによってカバーされる外部ポートが存在しないように、サブセットは互いに一意になっている。
もちろん、実装に応じて、サーバに重複して割り当てられることもある。
このように割当てされ、それぞれのサーバがソケット上で入り接続をリスンする。
こうしたソケットは、全ての外部ポート番号からの接続を受け入れるのではなく、外部ポート番号のセットに結び付けられている。
【００２０】
この機構は、接続要求を行うクライアントのどんな修正も必要としない。
しかし、入り接続要求を適切なソケットに向けて送るために使用するＴＣＰ／ＩＰスタックに修正が必要である。
現在、１つだけの外部ポート番号、または全ての外部ポート番号が受入れ可能であることを意味するワイルドカード・ポート番号をＴＣＰ／ＩＰスタックで指定することができる。
こうした修正には、外部ポート番号セットを指定できることが必要である。
言い換えれば、異なるサーバまたはソケットに外部ポートを割当てできるようにする追加の機能が、本発明のプロセスを実行するサーバ・コンピュータのオペレーティング・システムのＴＣＰ／ＩＰスタック内に実装される。
図に示した例では、ＴＣＰ／ＩＰスタックのトランスポート層に修正が加えられている。
【００２１】
次に図３に移ると、本発明の好ましい一実施形態による要求を処理する際のデータの流れを示す図が示されている。
サーバ・コンピュータ３００は、図２のデータ処理システム２００などのデータ処理システム上に実装することができる。
【００２２】
本発明の好ましい一実施形態によれば、サーバに関連するソケットを、全ての外部ポートにではなく、外部ポート・セットに結び付けることができる。
要求は一般に、ローカル・ポート・アドレス、外部ポート・アドレス、ローカル・ポート番号および外部ポート番号を含む。
オペレーティング・システム（ＯＳ）カーネル３０２によって、サーバ・コンピュータ３００との接続が確立される。
こうした例では、ローカル・ポート番号が対応しており、またローカルＩＰアドレスがサーバ・コンピュータ３００に割り当てられているものである場合に、オペレーティング・システム・カーネル３０２が接続を処理するために受け入れる。
【００２３】
本発明の好ましい一実施形態によれば、サーバ３０４、３０６および３０８を使用して、異なるクライアントから送られてくる要求３１０に対する接続を扱う。
オペレーティング・システム・カーネル３０２によって、これらのサーバに接続が送信される。
より具体的には、これらの接続はオペレーティング・システム・カーネル３０２内のＴＣＰ／ＩＰスタックによってサーバにルーティングされる。
こうした要求のルーティングは、要求３１０中に含まれる外部ポート番号に基づいて実施される。
【００２４】
たとえば、外部ポートの範囲が１０２５から４０００であれば、これらのポート番号をサーバ３０４、３０６および３０８に配分することができる。
こうした例では、それぞれのサーバが一意である外部ポート範囲のサブセットを有するように、外部ポート番号を配分する。
言い換えれば、それぞれのサブセット間で外部ポートの重複は生じない。
外部ポートは一般に、要求を行うクライアントによってランダムに割り当てられるので、こうした機構がうまく機能する。
外部ポートの範囲が１０２５から４０００であれば、以下のように外部ポート番号の割当てを行うことができる。
サーバ３０４が外部ポート番号１０２５、１０２８、１０３１、．．．３０９８までを扱い、  サーバ３０６が外部ポート番号１０２６、１０２９、１０３２、．．．３０９９までを扱い、  サーバ３０８が外部ポート番号１０２７、１０３０、１０３３、．．．４０００までを扱う。
【００２５】
このようにして、それぞれのサーバがソケット上で入り接続をリスンする。
しかし、これらのソケットは、前述のように、全てのポート番号にではなく外部ポート番号セットに結び付けられている。
【００２６】
こうした例では、サーバ３０４がマスタ・サーバ・プロセスであり、サーバ３０６および３０８は、サーバ３０４によって生成されたスレーブ・サーバ・プロセスである。
あるいは、これらのプロセスは、サーバ・コンピュータ３００上の負荷に応じてスレーブ・サーバ・プロセスを生成する能力を有するマスタ・サーバ・プロセスとしても働くことができる。
こうした例では、要求の処理がスレーブ・スレッド３１２、３１４、３１６などのスレーブ・スレッドに引き渡される。
こうしたスレーブ・スレッドは、サーバ３０４、３０６および３０８によって生成することができる。
この例では、スレーブ・スレッド３１２がサーバ３０４によって生成され、スレーブ・スレッド３１４がサーバ３０６によって生成され、スレーブ・スレッド３１６がサーバ３０８によって生成される。
【００２７】
この機構では、単一のサーバに全ての接続を扱わせるのではなく、負荷バランスをとるために異なるサーバに要求を配分することができるので、現在の機構にまさる利点がもたされる。
本発明の機構は、ネットワーク・ディスパッチャとは異なるものである。
このネットワーク・ディスパッチャは、異なるシステム間で接続を分配するが、全ての外部ポート番号をリスンする単一のソケット番号を使用するので依然としてボトルネックになる。
さらに、本発明の機構では、要求を行うクライアントの修正は必要ない。
異なるソケットに外部ポートを割当てできるようにするために、ＴＣＰ／ＩＰスタックの修正だけが必要である。
【００２８】
次に図４に移ると、本発明の好ましい一実施形態による、接続要求を処理するプロセスのフローチャートが示してある。
図４に示すプロセスを、図３のオペレーティング・システム・カーネル３０２などのオペレーティング・システム上に実装することができる。
こうした例では、この機構はＴＣＰ／ＩＰスタック上に実装される。
【００２９】
このプロセスは、クライアントからの入り接続要求を待つことから始まる（ステップ４００）。
要求を受信した後、カーネル上で、ローカル・ポート（ＬＰ）、ローカル・ポート・ＩＰ（ＬＩＰ）アドレス、および外部ＩＰ（ＦＩＰ）アドレスに対応するソケットが選択される（ステップ４０２）。
こうした例では、複数のソケットが存在し、そのそれぞれに外部ポートのサブセットが割り当てられる。
ステップ４０２で、処理するためにこれらのソケットのうちの１つを選択する。
【００３０】
次いで、要求中に含まれる外部ポートが、このソケットに割り当てられた外部ポート・セットの一部であるかどうかを判定する（ステップ４０４）。
要求中に含まれる外部ポートが、選択されたソケットに対するセットに含まれていない場合、ソケット・リストの最後まで達したかどうかを判定する（ステップ４０６）。
このステップを用いて、全てのソケットが処理されたかどうかを判定する。
全てのソケットが処理されていない場合はステップ４０２に戻り、別のソケットを選択する。
こうしたソケットの全てが処理されると、接続を拒否し（ステップ４０８）、その後、プロセスは終了する。
【００３１】
再びステップ４０４を参照すると、要求の中に含まれる外部ポートがソケットに割り当てられた外部ポート・セット内に存在する場合は、接続がこのソケットに引き渡され（ステップ４０８）、その後、プロセスは終了する。
この場合、サーバ・プロセスの１つがこの接続要求を処理する。
【００３２】
次に図５に移ると、本発明の好ましい一実施形態による、サーバ・プロセスの生成および削除のプロセスのフローチャートが示してある。
図５に示すプロセスは、図３のサーバ３０４などのアプリケーション上に実装することができる。
こうしたサーバは、たとえば、ウェブ・サーバでも、データベース・サーバでも、ＦＴＰサーバでも
よい。
【００３３】
このプロセスは、ネットワーク負荷を再計算することから始まる（ステップ５００）。
ネットワーク負荷を様々な周知の方法によって計算することができる。
ネットワーク負荷が計算された後、負荷が第１閾値を超えて増加したかどうか判定する（ステップ５０２）。
負荷がこの閾値を超えていない場合は、負荷が第２閾値以下に減少したかどうかを判定する（ステップ５０４）。
閾値を設定する際に使用することができるパラメータは、入り接続のレートである。
低い閾値は毎分当たりｘの入り接続というレートを用いて設定することができ、高い閾値は毎分当たりｙの入り接続という別のレートを用いて設定することができる。
こうした閾値の実際の値は、個々の実装によって決まる。
【００３４】
負荷が第２閾値以下に減少していない場合、ネットワーク負荷の次の再計算を行うためにタイムアウトを設定する（ステップ５０６）。
次いで、時間切れを待つ（ステップ５０８）。
時間切れになると、ステップ５００に戻り、ネットワーク負荷を再計算する。
【００３５】
再びステップ５０４を参照すると、負荷が第２閾値以下に減少した場合、サーバの数を減らし、ポート配分を変更する（ステップ５１０）。
こうした例では、残っている各サーバについて一意の外部ポート・サブセットが設定されるように、外部ポートのポート配分を変更する。
【００３６】
ステップ５０２に戻ると、負荷が第１閾値を超えて増加した場合、サーバの数を増やし、ポート配分を変更する（ステップ５１２）。
この場合、新しく生成されたサーバを含めて、全てのサーバに外部ポートが再配分されるようにポート配分を変更する。
サーバ数の増減は個々の実装に応じて変わる。
さらに、どのくらいネットワーク負荷が閾値を超えて増加または減少したかに応じて、サーバ数を増減させることができる。
ステップ５０２の第１閾値とステップ５０４の第２閾値は、特定の実装に応じて、同じ値でも異なる値でもよい。
【００３７】
したがって、本発明は、外部ポート配分に基づいてサーバ負荷を分散するための方法、装置およびコンピュータ命令を提供する。
本発明の機構では、外部ポート範囲をサブセットに分割し、こうしたサブセットを異なるサーバに割り当てることによって、現在あるボトルネックを解消する。
図に示した例では、それぞれのサブセットは、他のサブセットに対して一意であり、実質上同数のポートを含む。
もちろん、個々の実装に応じて、サブセットは重複する外部ポート番号を含むことができ、サブセットによっては他よりも多い外部ポートを含むことができる。
異なるソケットを聴取する複数のサーバに外部ポート・サブセットが割り当てられると、複数のサーバすなわちプロセスがクライアントの接続要求をリスンし処理することができる。
【００３８】
十分に機能するデータ処理システムの状況において本発明を説明したが、本発明のプロセスは、命令のコンピュータ読取り可能媒体の形態、および様々な形態で配布することができ、また配布を実施するために実際に使用される信号搬送媒体の特定のタイプに関係なく本発明が同様に適用されることが当業者には理解されようことに留意されたい。
コンピュータ読取り可能媒体の例には、フロッピディスク、ハード・ディスク・ドライブ、ＲＡＭ，ＣＤ−ＲＯＭ,ＤＶＤ−ＲＯＭなどの書込み可能なタイプの媒体、ならびに、たとえば無線周波数や光波伝送などの伝送形態を用いたデジタルおよびアナログ通信リンク、有線および無線通信リンクなどの転送型媒体が含まれる。
コンピュータ読取り可能媒体は、個々のデータ処理システムで実際に使用するために復号化される、符号化されたフォーマットの形をとることができる。
【００３９】
例示および説明の目的で本発明の説明を提示したが、これは網羅的なものではなく、    開示した形に本発明を限定するためのものではない。
多くの修正および変形が当業者には明らかであろう。
実施形態は、本発明の原理および実際の適用例を最も適切に説明し、また企図する特定の用途に適した様々な修正を伴う様々な実施形態について本発明が当業者に理解できるようにするために選択し説明したものである。
【図面の簡単な説明】
【００４０】
【図１】本発明を実施することができるデータ処理システムのネットワークの絵画図ある。
【図２】サーバ・コンピュータとして実施することができる、本発明の好ましい一実施形態によるデータ処理システムのブロック図である。
【図３】本発明の好ましい一実施形態による、要求を処理する際のデータの流れを示す図である。
【図４】本発明の好ましい一実施形態による、接続要求を処理するためのプロセスのフローチャートである。
【図５】本発明の好ましい一実施形態による、サーバ・プロセスを生成および削除するためのプロセスのフローチャートである。
【図１】
2008071359.tif 000003
【図２】
2008071359.tif 000004
【図３】
2008071359.tif 000005
【図４】
2008071359.tif 000006
【図５】
2008071359.tif 000007