IOCP接受和保持的最大连接数是多少

时间:2011-03-22 09:43:02

标签: connect max iocp

我做了一些IOCP服务器和客户端测试。 IOCP服务器接受客户端的连接,除了从客户端收集数据包之外什么也不做。 客户端连接服务器并在无限循环中将数据包发送到服务器。

我设置了一个柜台。它在服务器接受客户端时增加,在套接字关闭时减少。

以下是问题: 计数器增加到32261而不再增加。服务器无法接受更多连接,GetLastError()返回10055,WSAENOBUF。

我的操作系统是Windows XP,内存为4GB。我检查了非分页内存。我想我的记忆力已经足够了。

什么限制连接的最大值? 如何扩大最大连接数?

2 个答案:

答案 0 :(得分:1)

如果没有看到您的代码,很难说是什么导致了您的问题。它不太可能是非分页池耗尽;我在Windows Server 2003上运行的测试只有760MB内存,并且使用基于IOCP的服务器实现了超过70,000个并发连接(请参阅here)。它可能是I / O页锁定限制(参见here);但这取决于服务器在接受连接后正在做什么,是否发布读取,如果是,那么缓冲区大小是多少?据我所知,非页面缓冲池耗尽和I / O页锁定限制将导致WSAENOBUF错误。

您是否在更现代和/或服务器级操作系统上尝试过测试? Vista及更高版本可以提供更多非页面缓冲池(详情请参阅here)...

答案 1 :(得分:0)

不可分页内存的限制被击中。 您是否使用Push Framework来测试IOCP?