. net Socketserver最大并发连接数和积压的最大值

本文关键字:最大值 连接 Socketserver 并发 net | 更新日期: 2023-09-27 18:12:29

我目前正在开发一个。net c#套接字服务器,它应该能够扩展到100K并发连接。我正在使用socketasynceventargs类和这里提到的模式。如果我错了请纠正我,但我明白维护100K并发连接不同于100K客户端在同一时间击中套接字服务器。我的问题是我能同时建立多少个连接?这取决于套接字积压变量吗?如果是这样,我可以设置的最大积压值是多少?

Thanks in advance

. net Socketserver最大并发连接数和积压的最大值

我目前正在开发一个。net c#套接字服务器,它应该能够扩展到100K并发连接。

上次我在Win7上测试时,这是一个很容易达到的目标。连接数似乎受到内存使用的限制。

我正在使用socketasynceventargs类和这里提到的模式。

此模式用于具有非常高的呼叫频率。维护大量的连接是没有用的,因为它比一个简单的BeginRead调用使用更多的内存。总是问为什么,不要只是复制示例代码。大多数关于套接字的示例代码都是可怕的错误,甚至在MSDN上也是如此。

每个套接字有一个未完成的BeginRead调用。直到一个读调用完成,给它的内存缓冲区被固定。这会导致GC问题。要么使用一个大的预分配缓冲区(64MB左右),要么一开始只读取一个字节。只有当一个字节读取完成后,才可以用更大的缓冲区读取剩余的字节。

纠正我,如果我错了,但我明白,维护100K并发连接是不同的100K客户端击中套接字服务器在同一时间。

我不太明白。在同一毫秒内进入的100,000个客户端很难处理,而维护在几秒钟内建立的100,000个连接要容易得多。

我的问题是我可以同时建立多少个连接?

测试并期望找到一个大的数字。注意你的内存使用。

这取决于套接字积压变量吗?

表示尚未交给应用程序的未完成连接。它在实践中几乎没有意义,因为应用程序应该有一个快速的接受循环,立即接受任何东西。

如果是,我可以设置的最大积压值是多少?

设置默认