gpt4 book ai didi

c# - .NET Socketserver 最大并发连接数和积压的最大值

转载 作者:太空宇宙 更新时间:2023-11-03 10:42:54 24 4
gpt4 key购买 nike

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

提前致谢

最佳答案

I am currently working on a .NET c# socket server which should be able to scale upto 100K concurrent connections.

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

I am using the socketasynceventargs class and the pattern mentioned here.

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

每个套接字都有一个未完成的 BeginRead 调用。在读取调用完成之前,分配给它的内存缓冲区将被固定。这会导致 GC 问题。要么使用一个大的预分配缓冲区(64MB 左右),要么一开始只读取一个字节。只有当一个字节读取完成时,您才能使用更大的缓冲区读取其余部分。

correct me if I am wrong but I understand that maintaining 100K concurrent connections is different from 100K client hitting the socket server at the exact same time.

不确定我是否理解。在同一毫秒内有 10 万个客户端进入将很难处理,而维护在几秒钟内建立的 10 万个连接则容易得多。

my question is how many connections can I make simultaneously?

对其进行测试并期望找到一个高数字。注意您的 RAM 使用情况。

is this dependent on the socket backlog variable?

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

if so what is the max backlog value i can set?

设置默认值。

关于c# - .NET Socketserver 最大并发连接数和积压的最大值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24673659/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com