2010-05-08 58 views
4

如果您在C#中使用异步服务器套接字,那么套接字上的正确backlog是什么?例如:什么是异步服务器套接字的正确积压?

server = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp); 
IPEndPoint iep = new IPEndPoint(IPAddress.Any, port); 
server.Bind(iep); 
server.Listen(10); 
+1

我总是倾向于使用'5',但我没有针对'为什么'的明确推理解释 - 这只是我一直用于所有侦听套接字的默认值,异步或不行;-) – 2010-05-08 04:55:11

回答

3

在大多数应用程序中,侦听器本身可能不是瓶颈。更常见的情况是,您需要通过做某种工作来响应这些TCP请求,同时您的应用程序可以有效使用的工作人员数量将小于理论上可以维持的连接数量。

这可能解释了亚历克斯·马尔泰利在评论“经验法则”:

我总是倾向于使用5,但我已经没有理由大幅解释原因。

在四核服务器上,如果客户端启动CPU密集型任务,这是有意义的; 4个工人/线程/核心的连接,以及一个在负载很重时保持服务响应的服务。

但是,如果你的工作不是CPU密集型的,那么上面的限制/解释对你来说是无关紧要的,你可能能够管理10或50个连接,或者你可能需要使用一些机器独有的资源,一。我基本上同意Hans,因为对此没有硬性和快速的“正确答案”,您需要查看您的应用程序的功能,估计您认为它可以实际处理多少个连接,并对其进行调整通过测试获得最大效率

相关问题