4

私はこれに頭を悩ませようとしています。私はビジネス固有のメッセージングアプリケーションを作成しています.5000〜10,000台のマシンをWCF経由でデータセンターに接続します(vpnなし、ネット全体)。これは主にアラート用であり、特定のクライアントにメッセージを直接送信できるようにする必要があります。WCF を使用すると、デュプレックス コントラクトを使用してこれらすべてを実行できますが、これだけ多くのクライアントを使用すると、 65535 ポート。

すべてのインバウンド接続は、選択したポートを介して着信すると仮定しますが、クライアントへのアウトバウンドはそれぞれ 1 つのポートを使用します。WCF ポート共有サービスがこの問題を解決するために何かを行っているのか、それとも 65535 ポートだけが IP アドレスに接続されているのか知りたいです。さらに言えば、MSN Messenger などはこの状況にどのように対処しているのでしょうか。確かに私はそこにたどり着けないかもしれませんが、少なくとも領域には入っています。

または、サービス エンドの WCF 二重契約は、クライアントの期間中、コールバック用にポートを開いたままにしますか?それとも解放しますか?

4

4 に答える 4

4

非永続的な接続を提供するソケット サーバーなど、オープン/クローズ トランザクションの多い環境では、デフォルトの TCP スタックを使い果たすのは非常に簡単です。

これは、デフォルトの TIME-WAIT 遅延 (リサイクルされる前にソケットを閉じる必要がある時間) によって悪化します。これはデフォルトで 90 秒です (私の記憶が正しければ)。

私の他のスレッドの1つからいくつかのビットをリサイクルするには-微調整できるレジストリキーがたくさんあります-少なくとも次のキーが作成/編集されていることを提案します

HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Tcpip\Parameters

TcpTimedWaitDelay = 30
MaxUserPort = 65534 
MaxHashTableSize = 65536 
MaxFreeTcbs = 16000 

これらのキーの機能については、MSDN と Technet に多数のドキュメントがあります。例えば

http://technet.microsoft.com/en-us/library/cc776295.aspx

SQL、Biztalk、IIS などのソケット サーバー アプリケーション用にこれらのキーを微調整することはかなり一般的です。

于 2008-11-13T07:00:52.337 に答える
3

各ポートは実際には DestinationTCPAddress と Port Number の組み合わせであると思います-したがって、不足することはありません。

つまり、複数のサブスクライバがすべて同じ送信元ポートで話されている可能性があります。あとは容量の問題になります。

于 2008-11-13T06:21:21.107 に答える
2

これらの接続がすべて同時に行われる場合、ファイアウォールが一度に多数の接続に対応できることを確認する必要があります。

ステートフル ファイアウォールは、後続のパケットが許可されているかどうかを判断できるように、進行中の各接続を記録する必要があります。小規模なファイアウォールに数百のセッション制限があることは珍しくありません。

于 2008-11-13T09:28:27.500 に答える
2

接続は、送信元アドレス、宛先アドレス、送信元ポート、宛先ポートによって (少なくとも IP 層で) 区別されます。最大接続数に対する OS の制限が問題になる場合がありますが、ポート番号自体が何らかの現実的な制限であるという考えにとらわれないでください。

于 2008-11-13T13:04:28.103 に答える