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