Windows Server 2008 的最大 TCP/IP 连接数是多少?

16

我有一个监听TCP协议单个端口的.Net服务。客户端连接后会传输数据一段时间(从几分钟到几个小时不等)。

在Windows 2008服务器上,连接数是否有限制?目前最多有50个用户,我还没有达到任何限制。计划未来会有成千上万的用户,因此我想知道是否会出现问题。

编辑:
正如Cloud所回答的那样,在某些版本的Windows Server 2008中似乎存在一些限制。有没有关于这些限制的参考资料?我尝试使用谷歌搜索,但返回的文章都是关于半连接限制的。

2个回答

20

有多少千个用户?

我曾在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个活动连接所使用的程序。

编辑以添加下面评论中的详细信息...

如果您已经在考虑使用多台服务器,请采取以下方法:

  1. 使用我提供的免费工具,证明您可以在目标操作系统上创建合理数量的连接(注意Windows动态端口限制可能会导致客户端连接失败,请搜索 MAX_USER_PORT)。

  2. 在开发过程中,定期使用测试客户端测试您的实际服务器,以创建连接并在服务器上实际执行任务。这将有助于防止您以限制其可扩展性的方式构建服务器。请参见此处:http://www.serverframework.com/asynchronousevents/2010/10/how-to-support-10000-or-more-concurrent-tcp-connections-part-2-perf-tests-from-day-0.html


感谢提供信息。我们正在开发一款多人游戏,玩家将被分配到不同的房间中,类似于扑克游戏。服务器能够容纳多少千个玩家,我们会尽可能地去实现。希望每台服务器能够服务50,000-100,000个用户。 - zendar
3
既然你已经考虑使用多个服务器,我建议采取以下方法:首先,使用我提供的免费工具验证自己可以创建足够的连接到目标操作系统(注意 Windows 动态端口上的限制可能会导致客户端连接失败,搜索 MAX_USER_PORT)。其次,在开发过程中,定期使用测试客户端测试实际服务器,以便在构建服务器时避免受到可扩展性的限制。 - Len Holgate
1
你能否把你评论中的建议放到回答中?这是非常有价值的信息,真的应该成为回答的一部分。 - zendar

3

半开连接 的数量有限制,但据我所知对于活动连接没有限制。根据这位微软员工的说法,这似乎取决于Windows 2008服务器的类型:

它取决于版本,Web和Foundation版本有连接限制,而标准版、企业版和数据中心版则没有。


1
抱歉我的无知,什么是“半开连接”? - zendar
我添加了一个关于半开连接的链接,应该可以解释清楚它。 - pyrocumulus
为了改善这个答案,若能提供W2K8半开/胚胎连接限制的链接将不胜感激。 - Dereckson

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接