SVN UPDATE не работает, потому что в системе не хватает сокетов

1056
Patrick

Я настраиваю терминальный сервер для небольшой группы разработчиков. Все они будут использовать клиент SVN для доступа к центральному хранилищу SVN. Каждый проект в нашем репозитории SVN содержит много внешних элементов (около 180, около 300). Все внешние объекты отправляются в один и тот же репозиторий (так мы делимся кодом между проектами).

SVN UPDATE не работает, потому что Windows сообщает, что у него заканчивается сокет. В окне просмотра событий мы видим следующее сообщение:

TCP/IP failed to establish an outgoing connection because the selected local endpoint was recently used to connect to the same remote endpoint. This error typically occurs when outgoing connections are opened and closed at a high rate, causing all available local ports to be used and forcing TCP/IP to reuse a local port for an outgoing connection. To minimize the risk of data corruption, the TCP/IP standard requires a minimum time period to elapse between successive connections from a given local endpoint to a given remote endpoint.

Согласно документации Windows, терминальный сервер должен использовать сокетные порты, начиная примерно с 50000, и иметь около 16000 доступных портов. Тем не менее, кажется, что SVN получает порты примерно с 21000, при этом доступно только около 200 портов.

Вопросы:

  • Есть ли способ сказать SVN сгруппировать внешние объекты, используя 1 сокет, без закрытия и повторного открытия сокетов?
  • Как вы можете настроить порты, которые Windows будет использовать для сетевого взаимодействия? Правильна ли документация (порты начинаются с 50000, доступно 16000 портов), или наши наблюдения правильны (порты начинаются с 21000, доступно 200 портов)
  • Любые другие предложения о том, как решить эту проблему? (избавиться от внешних факторов в данный момент невозможно).
2
@ Ramhound, проблема не в серверной части. Проблема на стороне клиента. Windows будет раздавать номера портов всем клиентским сокетам, которые подключаются к серверу, но после закрытия сокета ей необходимо на короткое время оставить порт открытым (в случае поступления ожидающих пакетов). В этот короткий момент у него кончаются локальные порты. Таким образом, проблема не в номере порта на стороне сервера SVN. Patrick 11 лет назад 0

1 ответ на вопрос

1
Patrick

Found it.

Apparently, our IT department installed firewall client that limited the sockets to 200 per person. Increasing this to 2000 solved the problem.

Conclusion: if applications run out of sockets, don't only check the Windows configuration, but also check locally installed firewall client software.