У нас есть несколько серверов Windows 2008R2, на которых работают различные коммерческие (например, SQL Server) и собственные приложения. Это различные виртуальные и физические системы, каждая из которых работает уже несколько лет без каких-либо проблем.
Однако за последние несколько недель несколько серверов внезапно перестали устанавливать новое сетевое соединение. Примером этого является одно из наших приложений, которое подключается к SQL через обычное соединение сокета - оно просто зависает. Попытка перейти к общему сетевому ресурсу из затронутый сервер сообщает нам
Превышен предел имени для карты сетевого адаптера локального компьютера
Для меня это выглядело как старомодное исчерпание эфемерных портов, и увеличение количества эфемерных портов временно решает проблему.
Однако даже при этом сервер прослужит всего несколько дней, прежде чем проблема возникнет снова. Более того, я не вижу, что потребляет столько портов - опять же, ничего изменилось на серверах, и проблема возникла на 4 разных ящиках, работающих с разными типами приложений.
Если я посмотрю на самый загруженный сервер, на котором запущен SQL Server 2014, в TCPView мы покажем около 1000 подключений:
Я бегал этот сценарий который регистрирует эфемерное использование портов, и никогда не превышает нескольких десятков портов.
В Process Explorer тоже ничего интересного не показывает:
Я чувствую, что что-то из июльского «вторника с патчем» вызвало это, но я могу ошибаться. Все, что мы знаем, это то, что ранее работавшие серверы перестают работать через несколько дней, все обновлено (как с точки зрения драйверов Microsoft, так и поставщиков), это влияет на несколько серверов, как физических, так и виртуальных, и нет никаких признаков того, что что-то горит через временные порты. Может ли кто-нибудь предложить, как изолировать причину проблем?
Похоже, ваше подозрение, что июльское обновление является источником проблемы, имеет свои основания. Попробуйте удалить накопительный пакет от 11 июля 2017 г. с одного из затронутых серверов. Если проблема исчезнет, обратитесь в службу поддержки MS? Опять же, поскольку это «известная проблема», которая может быть не очень продуктивной ...
Известные проблемы в этом обновлении KB4025341
Симптом: из-за дефекта в WLDAP32.DLL приложения, выполняющие поиск ссылок LDAP, могут использовать слишком много динамических TCP-портов (потенциально израсходовав их)
Временное решение. Чтобы обойти проблему, перезапустите службы или приложения, которые выполняют поиск ссылок LDAP для освобождения динамических портов TCP.
В сценарии упоминается Вот может помочь диагностировать, какой процесс использует порты. В основном он объединяет вывод netsh int ipv4 show dynamicportrange tcp
с участием netstat –ano –p tcp
помочь с диагностикой. В тексте также упоминается, что это только для поиска проблем в процессах режима пользователя, объясняя, как WinDBG должен использоваться для диагностики проблем в процессах режима ядра.
Эта ветка также упоминает событие 4231 как еще один индикатор проблемы.
Это интересно. Привлёк мое внимание, потому что раньше я сталкивался с проблемами при открытии нескольких TCP-соединений с серверами Windows. Вы регистрируете ЦП, пропускную способность сети и замечаете какие-либо аномалии?
Предполагая, что вы делаете вскрытие, вы, вероятно, проверили журналы и не заметили ничего необычного. Растет трафик? Все, что могло бы объяснить рост числа ошибок. Находятся ли 4 бокса в одной подсети? Доступны разные приложения?
Другие вещи, на которые стоит посмотреть, общие связи. Был ли открыт расширенный диапазон эфемерных портов при создании общих ресурсов?
TCP TCB-соединения. Думаю его 2000 на 2k8 R2. Дважды проверьте это. Удачи с этим.