【发布时间】:2013-03-15 11:34:06
【问题描述】:
有多少客户端可以同时连接到TidTCPServer?我用的是 Indy10 , DelphiXE2 和目标操作系统是 windows server 2003。
delphi 有没有更好的选择来代替 Indy?
【问题讨论】:
标签: delphi delphi-xe2 indy10
有多少客户端可以同时连接到TidTCPServer?我用的是 Indy10 , DelphiXE2 和目标操作系统是 windows server 2003。
delphi 有没有更好的选择来代替 Indy?
【问题讨论】:
标签: delphi delphi-xe2 indy10
默认情况下,MaxConnections 设置为 0,因此 Indy 服务器在接受另一个连接之前不会检查活动线程的数量,但这主要取决于客户端在服务器上执行的操作。例如,如果您的服务器接受客户端连接,然后在该客户端线程上下文中计算 pie 到万亿位数,那么与将工作移交给另一个进程相比,您将获得正确处理的连接数显着减少。基本上,您的结果将直接根据执行的任务而有所不同。
对于一个通用的答案...如果您覆盖分配给每个线程的默认堆栈大小,您可以在 32 位服务器应用程序中拥有多达几千个连接,但可能不会更多。请参阅:What's the maximum number of threads in Windows Server 2003? 和 http://www.deltics.co.nz/blog/?p=1330
还要检查 ListenQueue 属性,默认设置为 15。显然操作系统可以自行进一步增加...我不知道当前的 Windows Server 默认监听队列,但我通常会提高默认数量。
底线 - 达到 1000 个活动线程/连接,您很可能迟早会碰壁。
【讨论】:
操作系统可以使用可用资源处理多少客户端。请记住,每个连接的客户端都使用自己的线程,因此您必须使用进程的默认线程大小。
【讨论】: