- PR -

.NET Framework 上でのSocket同時接続数

1
投稿者投稿内容
じょな
会議室デビュー日: 2007/12/12
投稿数: 1
投稿日時: 2007-12-12 23:20
初めて投稿させていただきます。

.NET Frameworkを使って(C#かVB.NETをつかって)ソケットプログラミングをしようとしています。
自分なりに調べてみたところ、System.Net.Sockets.Socketクラス、もしくはそのラッパークラス(TcpClient, TcpListenerなど)を使えば実現できそうだということがわかりました。

この場合、一度に最大どれだけのコネクションを維持できるのでしょうか?
(サーバー側、クライアント側それぞれについて)
MSDNライブラリや、ネット上を調べてみましたが、この最大接続数についての記述は見つけることができませんでした。

ご存知の方、どうかよろしくお願いいたします。
(可能であれば情報源のURLも教えていただけると助かります。)
れい
ぬし
会議室デビュー日: 2005/11/01
投稿数: 346
投稿日時: 2007-12-12 23:46
引用:

じょなさんの書き込み (2007-12-12 23:20) より:
この場合、一度に最大どれだけのコネクションを維持できるのでしょうか?



WebRequest派生クラスでは
既定でAuthority(ホスト:ポート)あたり2つに制限されています。
ServicePointManager.DefaultXXXConnectionLimitで変更できます。
.Netの制限は他に知りません。

次にWindowsの制限が入ります。これはOSによって異なります。
XPや2003、Vistaは知りませんが、2kで25600程度が理論限界です。

サーバー、クライアントは関係ありません。

メモリの都合上、実際にはもっと早く限界が来ます。
以前実測したところ、2k3で約5000接続が限界でした。

また、スレッドあたり64接続の制限もあります。
これはWaitForMultipleObjectsに拠ります。
これを使わないように工夫すれば、スレッドあたりの制限は回避できます。

情報源は忘れました。
自分で調べたもの、他人が調べてくれたもの、Webなどです。

[ メッセージ編集済み 編集者: れい 編集日時 2007-12-13 00:06 ]
カンタービレ
会議室デビュー日: 2007/12/03
投稿数: 2
お住まい・勤務地: パリ・コンセルヴァトワール
投稿日時: 2007-12-13 19:34
引用:

れいさんの書き込み (2007-12-12 23:46) より:
引用:

じょなさんの書き込み (2007-12-12 23:20) より:
この場合、一度に最大どれだけのコネクションを維持できるのでしょうか?



次にWindowsの制限が入ります。これはOSによって異なります。
XPや2003、Vistaは知りませんが、2kで25600程度が理論限界です。

サーバー、クライアントは関係ありません。




http://support.microsoft.com/kb/122920/
サーバ側とクライアント側の構成が分かりませんが、サーバ側のOSによって
接続クライアント数は10という制限があるものがありマス。
れい
ぬし
会議室デビュー日: 2005/11/01
投稿数: 346
投稿日時: 2007-12-13 22:35
引用:

http://support.microsoft.com/kb/122920/
サーバ側とクライアント側の構成が分かりませんが、サーバ側のOSによって
接続クライアント数は10という制限があるものがありマス。



これはNetBiosの制限では?
WinSockじゃないと思います。

引用:

カンタービレさんの書き込み (2007-12-13 19:34) より:



@ITデビューしてるし!
パリはイルミネーションが綺麗でしょうねぇ。

カンタービレ
会議室デビュー日: 2007/12/03
投稿数: 2
お住まい・勤務地: パリ・コンセルヴァトワール
投稿日時: 2007-12-14 18:13
#ばれてる・・w

んと、確かWindowsXp(SP2)とかはTCPのドライバレベルで
接続数を10と制限してたと記憶してマス。
http://itpro.nikkeibp.co.jp/article/Watcher/20060812/245765/

WinSockの64制限等は
http://www.kt.rim.or.jp/~ksk/wskfaq-ja/advanced.html
あたりにまとまっているデスね。
れい
ぬし
会議室デビュー日: 2005/11/01
投稿数: 346
投稿日時: 2007-12-14 20:03
引用:

カンタービレさんの書き込み (2007-12-14 18:13) より:
んと、確かWindowsXp(SP2)とかはTCPのドライバレベルで
接続数を10と制限してたと記憶してマス。
http://itpro.nikkeibp.co.jp/article/Watcher/20060812/245765/


この10は片側がダウンしたTCP接続の制限で、
対象OSはWindows XP SP2とWindows Server 2003 SP1です。

こっちは確かにSocketですが、
引用:

http://support.microsoft.com/kb/122920/


この10はWindows NT WorkstationとWindows 2000 ProfessionalのNetBiosの制限で、
Socketじゃないです。

全く違う話ですね。

でも確かにOSや状況によっては制限があるようですね。
きっと他にもいろいろあるような気がします。


[ メッセージ編集済み 編集者: れい 編集日時 2007-12-14 20:08 ]
かるあ
ぬし
会議室デビュー日: 2003/11/16
投稿数: 1190
お住まい・勤務地: センガワ→ムサシノ
投稿日時: 2007-12-14 23:07
引用:

じょなさんの書き込み (2007-12-12 23:20) より:

この場合、一度に最大どれだけのコネクションを維持できるのでしょうか?
(サーバー側、クライアント側それぞれについて)
MSDNライブラリや、ネット上を調べてみましたが、この最大接続数についての記述は見つけることができませんでした。


一つのセッションを維持するのにどれだけのコストがかかるかわからないと答えようがない気がします。
サーバのリソースによっても変わってくるので、そういった資料は存在しないと思いますし、自分で調べるしかないと思います。
_________________
かるあ のメモスニペット
1

スキルアップ/キャリアアップ(JOB@IT)