По неизвестной причине наш серверный ящик под управлением Windows Server 2008 R2 имеет за соединение ограничение пропускной способности 0,2 МБ / с. Это означает, что в то время как одно TCP-соединение может потреблять максимум 0,2 МБ / с, 60 параллельных соединений могут потреблять 12 МБ / с. Мы впервые заметили это при попытке получить с этого сервера большой репозиторий SVN.
Проблема в том, что я понятия не имею, откуда берется этот предел. У меня очень мало опыта администрирования Windows Server, поэтому я в основном пытался найти что-нибудь в Google. Я проверил следующее:
Мы используем стандартный брандмауэр Windows.
Я использовал простое приложение Java, чтобы проверить это, передавая данные с сервера на рабочую станцию, используя переменное количество потоков (одно соединение на поток). Серверная часть приложения просто 100 раз записывает буфер памяти размером 1 МБ в сокет, поэтому диск не задействуется. Каждое соединение превысило 0,2 МБ / с. То же ограничение на подключение было только для одного, как и для 60 параллельных подключений.
При необходимости я могу обновить этот вопрос, добавив любую дополнительную информацию.
По всей вероятности, это не проблема конфигурации вашего сервера, а конфигурация восходящего маршрутизатора, коммутатора, брандмауэра, прокси-сервера или формирователя пакетов, который находится между вашей рабочей станцией и сервером.
Если у вас есть возможность (т.е. сервер не в производстве), возьмите небольшой неуправляемый коммутатор и настройте ноутбук, чтобы он находился в той же подсети, что и сервер. Подключите оба к коммутатору, чтобы связь между вашей тестовой машиной и сервером проходила только через ваш тупой переключатель. Бьюсь об заклад, вы увидите гораздо лучшую производительность, что указывало бы на сетевое устройство, а не на сам сервер.