在我的Windows服务器上,我打开一个端口,侦听来自多个客户端的传入TCP连接。在Windows服务器上打开的端口上可以同时建立套接字连接的唯一客户端数量是否有限制?其中一个线程What is the theoretical maximum number of open TCP connections that a modern Linux box can have讨论了在Unix平台上受允许的文件描述符限制的套接字连接数。最新的Windows服务器有这样的限制吗?如果是这样,如何改变这个限制?
答案 0 :(得分:5)
基于an answer by a MSFT employee:
这取决于版本,Web和Foundation版本具有连接限制,而Standard,Enterprise和Datacenter则没有。
虽然正如Harry在另一个答案中提到的那样,有一个开放TCP连接的设置,其限制超过16M。
但从技术上讲,你可能会有大量的连接,但是存在限制数量的实际问题:
每个连接都由服务器地址和端口以及客户端地址和端口标识。从理论上讲,两台机器之间可以拥有的连接数量非常大,但通常服务器使用一个限制数量的端口。也很少有单个客户端会打开数千个连接,但在NAT情况下它可能看起来像
服务器每秒只能处理一定数量的数据和数据包,因此高速数据传输或大量小数据包可能导致数量下降
网络硬件可能无法处理
服务器必须为每个连接分配内存,这再次限制了数量
服务器所做的也是一个重要问题。它是一个实时游戏服务器还是一个系统在人们之间提供国际象棋移动的方式,每次15分钟的移动时间
答案 1 :(得分:2)
除了Sami的答案中概述的许可和实际限制之外,实际上对TcpNumConnections设置确定的同时打开连接数有可配置的限制。默认值也是最大值,仅为16M。
(链接的文档适用于Windows 2003.更高版本的Windows Server的相应文档似乎不存在。但是,我找不到任何暗示该设置已被删除的内容。)
然而,在实践中,你很可能会遇到萨米答案中提到的实际问题。 (当然,除非系统管理员手动更改了设置。)