2013-03-25 3 views
0

Сколько клиентов может подключить к TidTCPServer в то же время? Я использовал Indy10, DelphiXE2, а target os - Windows Server 2003.Макс клиентов Indy?

Есть ли лучший вариант Вместо Indy для delphi?

ответ

3

По умолчанию 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 по умолчанию, но я обычно немного увеличиваю количество по умолчанию.

Нижняя линия - довести до тысячи активных потоков/соединений, и вы, скорее всего, ударитесь о стену раньше, чем позже.

2

Однако многие клиенты ОС могут обрабатывать доступные ресурсы. Имейте в виду, что каждый подключенный клиент использует свой собственный поток, поэтому вы должны иметь фабрику в размере потока по умолчанию по умолчанию.