Мы регулярно испытываем странные проблемы с сетью на нашем выделенном сервере. Он работает под управлением Windows Server 2012 R2 x64 на Xeon E5620 с 16 ГБ ОЗУ и сетевым адаптером Intel 82575EB.
Обратите внимание, что мы уже настроили HKLM\SYSTEM\CurrentControlSet\Services\Tcpip\Parameters
значения клавиш TcpTimedWaitDelay
и MaxUserPort
на 30 и 65530 соответственно.
В случайный момент времени наши веб-сайты перестают отвечать, поскольку они не могут подключиться к локальной базе данных. Это примерно 2 недели, когда эти проблемы начинают происходить. Системный журнал начинает получать предупреждения TCPIP 4227 и 4231. В нем говорится: «Запрос на выделение эфемерного номера порта из глобального пространства портов TCP не выполнен из-за использования всех таких портов».
Если я бегу
Get-Counter -Counter \TCPv4\*
или
Get-Counter -Counter \TCPv6\*
или
netstat -abn | find /c ":"
Я всегда получаю разумное значение 500-1500 подключений, которое даже не близко к пределу 65К.
Кроме того, «localhost» останавливает локальное разрешение :: 1, возвращаясь к 127.0.0.1.
Только принудительный перезапуск компьютера может разрешить ситуацию.
Может ли быть проблема с сетевым адаптером?
ОБНОВЛЕНИЕ 1
Это случилось снова и, казалось, было решено, когда я перезапустил почтовый сервер. Как ни странно, все счетчики показывали ~ 1000 подключений с ~ 500 активными в данный момент, и все равно ошибка сокета 10055 при попытке подключиться к базе данных, которая не имеет ничего общего с почтовым сервером.
ОБНОВЛЕНИЕ 2 Это странно, но ежедневный перезапуск почтовых служб решает проблему полностью.
источник
Ответы:
У меня была похожая проблема с исчерпанным пулом портов TCP / IP на WinSvr 2012R2 x64 в течение почти 1 месяца, когда сервер перестал получать любые новые и TCP-соединения. Итак, я играл со значениями реестра, и они стабильны для меня:
В результате такой же как твой. Я думаю, что вы должны рассмотреть возможность аудита поведения ваших приложений / скриптов. Если все в порядке и ничего не помогает, то вы можете попробовать поставить прокси-сервер перед вашим сервером веб-приложений, сделать 2 узла с веб-сервером (IIS, Apache, ...), которые будут совместно использовать один и тот же статический контент и получать доступ к одной и той же базе данных одновременно. время (если у вас достаточно ресурсов в вашей компании).
Может быть, эта статья поможет вам в некотором роде: http://blogs.technet.com/b/tristank/archive/2008/03/11/maxuserport-what-it-is-what-it-does-when-it- s-important.aspx
источник
MaxUserPort
все еще работает в 2012 году? Я думал, в 2012 году вы должны сделать это через Netsh. например:netsh int ipv4 set dynamicport tcp start=25535 num=40000
В дополнение к настройкам драйвера Tcpip, диапазон временных портов TCP управляется в Windows Server с помощью команды netsh ( источник ).
Вы можете просмотреть динамический диапазон портов с помощью следующих команд:
netsh int ipv4 show dynamicport tcp
netsh int ipv4 show dynamicport udp
netsh int ipv6 show dynamicport tcp
netsh int ipv6 show dynamicport udp
Чтобы изменить диапазон портов, используйте эту команду:
netsh int <ipv4|ipv6> set dynamic <tcp|udp> start=number num=range
Например:
netsh int ipv4 set dynamicport tcp start=49152 num=16384
Параметр (start = 49152 num = 16384 ) также используется по умолчанию в Windows Server 2008 и более поздних версиях.
источник
Эта же проблема на Windows Server 2016 выполняла большое количество тестов Selenium с использованием chromewebdriver. Этот скрипт PS автоматически настроит настройки @Myke, о которых говорилось выше. Команда
shutdown
была добавлена, поскольку для изменений стека TCP требуется перезагрузка.Увеличение размера пула для эфемерных портов TCP
Это было сообщение об ошибке, которое мы получили при
Webdriver.Quit()
сообщении о том, что используется адрес TCP.источник
Вы удостоверились, что не пропускаете объекты соединения с базой данных? Вы должны закрыть каждое открытое соединение с базой данных либо явно (с помощью try-finally), либо с помощью блока {}. Это распространенная проблема, о которой ASP не скажет вам напрямую.
источник