我有一个监听TCP协议单个端口的.Net服务。客户端连接后会传输数据一段时间(从几分钟到几个小时不等)。
在Windows 2008服务器上,连接数是否有限制?目前最多有50个用户,我还没有达到任何限制。计划未来会有成千上万的用户,因此我想知道是否会出现问题。
编辑:
正如Cloud所回答的那样,在某些版本的Windows Server 2008中似乎存在一些限制。有没有关于这些限制的参考资料?我尝试使用谷歌搜索,但返回的文章都是关于半连接限制的。
我有一个监听TCP协议单个端口的.Net服务。客户端连接后会传输数据一段时间(从几分钟到几个小时不等)。
在Windows 2008服务器上,连接数是否有限制?目前最多有50个用户,我还没有达到任何限制。计划未来会有成千上万的用户,因此我想知道是否会出现问题。
编辑:
正如Cloud所回答的那样,在某些版本的Windows Server 2008中似乎存在一些限制。有没有关于这些限制的参考资料?我尝试使用谷歌搜索,但返回的文章都是关于半连接限制的。
有多少千个用户?
我曾在Windows 2003服务器上进行过一些TCP/IP客户端/服务器连接测试,并在一个性能较低的虚拟机上管理了超过70,000个连接。(详见这里:http://www.lenholgate.com/blog/2005/10/the-64000-connection-question.html) 我会非常惊讶如果Windows 2008服务器的限制小于2003服务器。我认为Cloud提供的链接太含糊,无法提供太多有用的信息。这种问题经常出现,我在博客中写到为什么我确实不认为这是你应该真正担心的事情:http://www.serverframework.com/asynchronousevents/2010/12/one-million-tcp-connections.html。
就我个人而言,我会进行测试,并查看结果。即使在您打算使用的 Windows 2008 Server 版本中没有固有的限制,也还会有基于内存、处理器速度和服务器设计的实际限制。
如果您想运行一些“通用”测试,可以使用我的多客户端连接测试和相关的回显服务器。详见这里:http://www.lenholgate.com/blog/2005/11/windows-tcpip-server-performance.html 和这里:http://www.lenholgate.com/blog/2005/11/simple-echo-servers.html。这些是我用来为自己的服务器框架运行测试以及在具有760MB内存的Windows 2003 Server VM上创建70,000个活动连接所使用的程序。
编辑以添加下面评论中的详细信息...
如果您已经在考虑使用多台服务器,请采取以下方法:
使用我提供的免费工具,证明您可以在目标操作系统上创建合理数量的连接(注意Windows动态端口限制可能会导致客户端连接失败,请搜索 MAX_USER_PORT
)。
在开发过程中,定期使用测试客户端测试您的实际服务器,以创建连接并在服务器上实际执行任务。这将有助于防止您以限制其可扩展性的方式构建服务器。请参见此处:http://www.serverframework.com/asynchronousevents/2010/10/how-to-support-10000-or-more-concurrent-tcp-connections-part-2-perf-tests-from-day-0.html