Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > C/C++: Сети > Макс количество TCP соединений для процесса


Автор: nerdy_weirdie 4.7.2009, 16:46
Когда мое серверное приложение достигает 2000 активных входящих TCP подключений, оно перестает принимать новые входящие подключения. Как увеличить лимит?
ОС Windows Server 2003 WebEdition

Автор: REZiaMIX 5.7.2009, 04:49
http://support.microsoft.com/kb/196271/ru
???

Автор: nerdy_weirdie 7.7.2009, 01:14
Цитата(REZiaMIX @ 5.7.2009,  04:49)
http://support.microsoft.com/kb/196271/ru
???

А как порты тут могут влиять? У меня только 2 порта на всё приложение открыто... И проблема возникает при приеме подключений портом с невысоким номером 3000.

Автор: REZiaMIX 14.7.2009, 03:14
В любом случае , как написано 2000 соединений , для соединения берется свободный порт.
2 порта - это для приема подключений только)

Автор: nerdy_weirdie 16.7.2009, 13:24
Цитата(REZiaMIX @ 14.7.2009,  03:14)
В любом случае , как написано 2000 соединений , для соединения берется свободный порт.
2 порта - это для приема подключений только)

Открыто только 2 порта. Подключения только входящие.


Прописывал параметр HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Tcpip\Parameters\TcpNumConnections, устанавливал 0x0000FFFF - не помогло, видимо это глобальное число подключений для системы, а для процесса так и остался лимит 2000.

Автор: nerdy_weirdie 16.7.2009, 14:48
Господа опытные программисты, подскажите пожалуйста, не поленитесь, кто-то ведь обязательно сталкивался, а выгуглить ничего не удается.

Автор: REZiaMIX 17.7.2009, 02:32
Цитата(nerdy_weirdie @ 16.7.2009,  13:24)
Цитата(REZiaMIX @ 14.7.2009,  03:14)
В любом случае , как написано 2000 соединений , для соединения берется свободный порт.
2 порта - это для приема подключений только)

Открыто только 2 порта. Подключения только входящие.


Прописывал параметр HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Tcpip\Parameters\TcpNumConnections, устанавливал 0x0000FFFF - не помогло, видимо это глобальное число подключений для системы, а для процесса так и остался лимит 2000.

2 порта , это только для приема подключений! Для поддержания 2000 подключений к клиентам , без разницы , исходящие или входящие нужен локальный свободный порт , который судя по всему берется от какого-то начального числа , и инкрементируется для новых.
Так же надо иметь ввиду , что после закрытия сокета , http://forum.vingrad.ru/forum/topic-266686.html.

http://img114.imageshack.us/img114/4989/20383289.jpg
И вообще , самое первое что надо сделать - включить дебаг, да и посмотреть - что возвращает WSAGetLastError.

Автор: nerdy_weirdie 17.7.2009, 06:39
REZiaMIX, спасибо за желание помочь! Но ты видимо что-то путаешь.. На сервере создаются сокеты для каждого нового соединения, но порты новые вовсе не резервируются, что явно видно из твоего примера. Там порты новые резервирует браузер для исходящих соединений, а сервер всё принимает восьмидесятым портом. Но я всё равно поднял MaxUserPort до максимума на всякий случай, вот выжидаю 2к подключений.

Автор: jonie 17.7.2009, 08:14
nerdy_weirdie для клиентский станций число соединений прошито в драйвере (tcpip.sys), часом для серверных не прошито (чуток побольше) ?
вот для клиентской станции прога: http://half-open.com/home_ru.htm

хотя вроде пишут что для 2003сервера нет ограничений..

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)