我需要什么样的配置才能让基于 Windows 的服务器同时支持 10K-20K TCP 连接。其中 99% 的连接将仅以 60 秒的间隔发送保持活动(但将保持活动状态)信号,其余 1% 将在任何给定时间发送/接收 XML 数据。
有人能建议我需要设置哪种基础设施来满足上述要求吗?
答案1
答案2
我希望您编写了一个基于事件的服务器,而不是基于线程的服务器,这样您就避免了每个连接使用 1+ MB 的堆栈。假设 Windows 内核能够以最少的配置更改来处理该数量的打开套接字。请参阅http://smallvoid.com/article/winnt-tcpip-max-limit.html。
您还需要研究 Windows IO 完成端口,以便比使用 select() 循环更有效地执行异步网络 IO。
您是否打算使用 IIS 之类的通用线程 Web 服务器来执行此操作?如果是这样,请再考虑一下(每个连接一个线程 = 20K 个连接导致大规模失败)。