1

1 つのインスタンスを持ち、ポート 21 でリッスンしている Azure ワーカー ロールに許可される同時接続の最大数を知りたいです。

シナリオは次のとおりです。

ワーカー ロールのインスタンスが 1 つあり、21 でポートが開いており、Tcplistener がポート 21 で着信接続をリッスンしています。非同期で実装して、処理中に他のクライアント リクエストをリッスンできるようにしました。

Azure の部分では、Worker ロールのポート 21 での同時リクエスト数に制限があるかどうかを知りたいです。

よろしく、 Vivek

4

2 に答える 2

2

最初にネットワーキングの原則を理解する必要があると思います。ネットワーク インターフェイス上の特定のポートとプロトコルをリッスンできるプロセスは、一度に 1 つだけです。通信はどのように処理されますか?非常に単純な概要では、状況は次のようになります (ポート番号と IP アドレスは意図的に偽造されています)。

  1. IP アドレス 902.168.13.24 のポート 21 にリスナーがあります (他のプロセスはそのポートをリッスンできないため、同時リスナーはありません)
  2. 接続要求は、他のホストからその IP アドレスとそのポートに送信されます。
  3. 現在、ポート 21 が占有されており、誰も接続できません (より多くの着信接続がキューに入れられています)。
  4. プロトコル レベルでのハンドシェイクの後、接続が成功した場合、前者は別の (任意の) ソケット (ポート 43251) に移動されます。
  5. ポート 21 は、別の接続を受け入れるために解放されます。
  6. キュー内の次の接続が受け入れられます。

すべては非常に低いプロトコル レベルで発生し、開発者 (ネットワーク アダプター ドライバーを開発しない限り) は、このポート シフトを認識/気にしません。

本当の問題は、より多くの同時接続を受け入れる方法です。独自の TCP サーバーを開発している場合は、許可される接続の最大数を設定し、(スレッドを管理することによって) 自分でそれらを管理します。他のサードパーティサーバーを使用する場合、許可される同時接続の最大数を設定できるオプションが必要です。

ここで TCP サーバーの簡単な実装を確認できます。ご覧のとおり、接続を処理するために使用されるプライベート フィールド _maxConnections があります。

要約すると、特定のリソース (ソケット) への同時接続の最大数は、そのリソースを提供するサーバーによって異なります。たとえば、IIS8 の既定の最大同時接続制限は 4294967295 に設定されています。

IIS 最大同時接続数

于 2012-09-12T09:54:52.820 に答える