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