Один из наших хост-серверов сеанса удаленного рабочего стола начал отказывать в подключении каждые несколько дней, и после расследования выяснилось, что он исчерпывает доступные эфемерные порты.
Это было идентифицировано идентификатором события 4231, содержащим текст ошибки:
A request to allocate an ephemeral port number from the global TCP port space has failed due to all such ports being in use
При запуске netstat -anob ничего необычного не вижу. Затем я попытался запустить «Log-EphemeralPortsStats.ps1», который я обнаружил как в сообщении в блоге пользователя, так и в сообщении в блоге MS.
После того, как вы позволите этому поработать в течение некоторого времени, количество используемых эфемерных портов в среднем составит около 10.
Когда я запускаю netstat -aq, я вижу список всех эфемерных портов в диапазоне от 49186 до 55645, отображаемый как состояние - BOUND. Если я немного подожду и запустю снова, то конечный порт увеличится на несколько портов.
Я не знаю, указывает ли это на утечку порта режима ядра, но я подозреваю, что этот конечный номер порта в конечном итоге увеличится до 65535, и это точка, в которой сеть выйдет из строя.
Как я могу определить, к чему привязаны эти порты, как они показывают:
TCP 0.0.0.0:55643 FLX-RDSH-V001:0 BOUND
Netstat, похоже, не помогает мне определить виновника в этом случае.
TCPView - очень полезный инструмент. После загрузки и запуска я мог видеть процесс, использующий высокий номер эфемерного порта. Через несколько секунд линия этого процесса стала красной, затем зеленой (я предполагаю, что это указывает на открытие нового порта), а затем номер порта немного увеличился.
Завершив этот процесс, отключите все используемые порты и предотвратите исчерпание ресурсов.