我需要什么样的配置才能让基于 Windows 的服务器同时支持 10K-20K TCP 连接。这些连接中的 99% 将仅以 60 秒的间隔发送保持活动(但将保持活动)信号,其余 1% 将在任何给定时间发送/接收 XML 数据。
任何人都可以建议我为上述要求设置的基础设施类型吗?
我需要什么样的配置才能让基于 Windows 的服务器同时支持 10K-20K TCP 连接。这些连接中的 99% 将仅以 60 秒的间隔发送保持活动(但将保持活动)信号,其余 1% 将在任何给定时间发送/接收 XML 数据。
任何人都可以建议我为上述要求设置的基础设施类型吗?
那是相当多的联系!
假设所有东西都不会在完全相同的时间连接,或者您的应用程序允许排队/有一点延迟,我认为只要您使用一个普通的现代盒子,您就不会在 CPU 或内存方面遇到问题(最低四核,4-8GB 内存),但我想你会想看看严肃的英特尔网络设备和调整 Windows 网络(例如看这里,但这个列表很旧,我不确定有多少仍然适用)。
但是,如果您真的想为大量连接做准备,那么真正需要考虑的是集群您的环境 - 但是,如果这是一个自定义编写的应用程序,您可能会遇到一些麻烦。
此外,对于如此多的连接,您将需要考虑升级整个基础架构 - 例如,更快/更强大的路由器/交换机。
我希望您编写了一个基于事件的服务器,而不是基于线程的服务器,这样您就可以避免每个连接使用 1+ MB 的堆栈。假设,Windows 内核应该能够以最少的配置更改处理该数量的打开套接字。请参阅http://smallvoid.com/article/winnt-tcpip-max-limit.html。
您还需要查看 Windows IO 完成端口,以便比使用 select() 循环更有效地执行异步网络 IO。
您是否打算使用像 IIS 这样的通用线程化 Web 服务器来执行此操作?如果是这样,请再想一想(每个连接一个线程 = 20K 连接的大量失败)。