IOCP 可以接受并保持的最大连接数是多少

问题描述 投票:0回答:2

我做了一些 IOCP 服务器和客户端测试。 IOCP 服务器接受客户端的连接,除了接收来自客户端的数据包外什么都不做。 客户端连接服务器并向服务器发送数据包,无限循环。

我设置了一个计数器。当服务器接受客户端时它会增加,当套接字关闭时它会减少。

问题来了: 计数器增加到 32261,并且不再增加。服务器无法接受更多连接,GetLastError() 返回 10055,WSAENOBUF。

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

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

max iocp
2个回答
1
投票

在不查看代码的情况下很难说出导致问题的原因。不太可能是非分页池耗尽;我在仅具有 760MB RAM 的 Windows Server 2003 上运行了测试,并与基于 IOCP 的服务器实现了超过 70,000 个并发连接(请参阅此处)。这可能是 I/O 页锁定限制(请参阅此处);但这取决于您的服务器在接受连接后正在做什么,是否发布读取,如果是的话缓冲区大小是多少?据我所知,非分页池耗尽和 I/O 页面锁定限制都会产生

WSAENOBUF
错误。

您是否在更现代和/或服务器级操作系统上尝试过测试? Vista 及更高版本提供了更多的非分页池(有关详细信息,请参阅此处)...


0
投票

已达到不可分页内存的限制。 您是否使用Push Framework来测试IOCP?

© www.soinside.com 2019 - 2024. All rights reserved.