web-dev-qa-db-ja.com

Windows Server 2008で使用できるTCP接続の最大数はいくつですか?

コメットスタイルのアプリケーションをサポートするために、Windows Server 2008で実行されているサーバーで可能な限り多くの接続(多くの異なるクライアントからの単一の接続)を使用したいと思います。アプリケーションはC#で記述されています。接続はおしゃべりではなく、開いている必要があります(そして開いたままにします)。大量のメモリと高速CPUを購入しても問題ありません。

私が知る限り、NIC-ポートの最大数)あたりの同時オープン接続は65kに制限されます。これは正確ですか?または、65k接続を超えてもよいですか/ NICどういうわけか。少なくとも数十万の接続をサポートするLinux用のサーバー製品があるようです。どうやってこれを行うのですか?

11
evilfred

65k接続をはるかに超えることができます。ポートごとに複数の接続を使用できるため(受け入れられると、リスナーは別のクライアントに接続できます)。どちらか一方の端には、いくつかの違いがある必要があります。通常、クライアントはランダムなポートを選択します。 Windowsのデフォルトでは、これらのランダムなポートのうち3000を超える数に制限されています。だからあなたの典型的なクライアントはその周りで最大になります。ただし、クライアントを別の方法で構成することは可能であり、* nixの多くはWindows以外にも制限されています。

最大接続数を1600万に制限するレジストリ設定があります。ただし、通常は制限が少ない他のより実用的な問題があります(レジストリ値を変更できます)。

  • WindowsはRAM)の約1KBを消費します(16M接続では〜16GBです)。また、アプリはアクティブな接続を何らかの方法で追跡する必要があります(より多くのメモリ)。
  • また、Windowsは2時間ごとに無応答接続をチェックします。 16M接続では、これは約0.5ミリ秒ごとです。これらのチェックを行うだけでかなりの帯域幅を消費します。
9
Chris S