1

可以同时连接多少个客户端TidTCPServer?我使用了 Indy10 , DelphiXE2 和目标操作系统是 windows server 2003。

Delphi 有没有更好的选择来代替 Indy?

4

2 回答 2

3

然而,操作系统可以使用可用资源处理许多客户端。请记住,每个连接的客户端都使用自己的线程,因此您必须使用进程的默认线程大小。

于 2013-03-25T20:53:58.153 回答
3

默认情况下,MaxConnections 设置为 0,因此 Indy 服务器在接受另一个连接之前不会检查活动线程的数量,但这主要取决于客户端在服务器上所做的事情。例如,如果您的服务器接受客户端连接,然后在该客户端线程上下文中计算 pie 到万亿位数,那么与将工作移交给另一个进程相比,您将获得正确处理的连接数显着减少。基本上,您的结果将直接根据执行的任务而有所不同。

对于一个通用的答案......如果您覆盖分配给每个线程的默认堆栈大小,您可以在 32 位服务器应用程序中拥有多达几千个连接,但可能不会更多。请参阅:Windows Server 2003 中的最大线程数是多少?http://www.deltics.co.nz/blog/?p=1330

还要检查 ListenQueue 属性,默认设置为 15。显然操作系统可以自行进一步增加它......我不知道当前的 Windows Server 默认侦听队列,但我通常会提高默认数量。

底线 - 达到一千个活动线程/连接,您很可能会早晚碰壁。

于 2013-03-25T21:56:17.433 回答