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