Windows 服务器上有 10k-20k 个 TCP 连接

Windows 服务器上有 10k-20k 个 TCP 连接

我需要什么样的配置才能让基于 Windows 的服务器同时支持 10K-20K TCP 连接。其中 99% 的连接将仅以 60 秒的间隔发送保持活动(但将保持活动状态)信号,其余 1% 将在任何给定时间发送/接收 XML 数据。

有人能建议我需要设置哪种基础设施来满足上述要求吗?

答案1

连接数相当多!

假设所有东西都不是同时连接的,或者你的应用程序允许排队/一点点延迟,只要你使用一个普通的现代盒子(最低四核,4-8GB 内存),我不认为你会遇到 CPU 或内存方面的问题,但我认为你会想认真考虑一下英特尔网络设备并调整 Windows 网络(例如看这里,但该列表已经很旧了,我不确定有多少仍然适用)。

然而,如果您真的想要为大量的连接做好准备,那么真正需要考虑的是集群您的环境 - 但是,如果这是一个定制编写的应用程序,您可能会遇到一些麻烦。

此外,对于这种数量的连接,您需要考虑升级整个基础设施 - 例如更快/更强大的路由器/交换机。

答案2

我希望您编写了一个基于事件的服务器,而不是基于线程的服务器,这样您就避免了每个连接使用 1+ MB 的堆栈。假设 Windows 内核能够以最少的配置更改来处理该数量的打开套接字。请参阅http://smallvoid.com/article/winnt-tcpip-max-limit.html

您还需要研究 Windows IO 完成端口,以便比使用 select() 循环更有效地执行异步网络 IO。

您是否打算使用 IIS 之类的通用线程 Web 服务器来执行此操作?如果是这样,请再考虑一下(每个连接一个线程 = 20K 个连接导致大规模失败)。

相关内容