У моей компании есть часто используемый веб-сервер с IIS 8.5 на Server 2012 R2.
В любой момент времени имеется 34 000 подключений к IIS и 200 запросов в секунду. У нас также есть служба SFTP, работающая на машине, к которой подключено в среднем 100 пользователей. Все время от времени наша система мониторинга отключает тайм-аут, и пользователи FTP не могут подключиться. Я провел много исследований по исчерпанию портов, однако я не могу найти какой-либо определенной документации по эфемерному исчерпанию портов с IIS.
Насколько я понимаю, когда устанавливается соединение с HTTP-службой, ответ по-прежнему приходит с порта 80, то же самое с FTP-службой. Мы действительно запускаем сайты ASP.NET, которые подключают службы REST к одному и тому же устройству, я знаю, что эти подключения будут использовать временный порт, но я не уверен, что он использует все 16 384.
Я использовал несколько онлайн-скриптов для обнаружения исчерпания портов http://blogs.technet.com/b/clinth/archive/2013/08/09/detecting-ephemeral-port-exhauration.aspx - Скрипт редко показывает использование эфемерного порта выше 2% http://blogs.msdn.com/b/debuggingtoolbox/archive/2010/10/11/powershell-script-troubleshooting-for-port-exhauration-using-netstat.aspx Этот скрипт покажет некоторые соединения, ожидающие портов.
Ports Used: 35,084
Ports Waiting: 654
Из соединений, ожидающих порта, следующие с локальной машины
127.0.0.1 44 waiting of 110 total (40%)
У меня вопрос: на сервере исчерпаны порты? Когда я экспортирую netstat -n и фильтрую по эфемерным портам, я вижу только 286 используемых. На веб-сервер (80 и 443) приходится 32 300 подключений, а на FTP - 450.
Есть ли ограничение на количество подключений в IIS 8.5?
[править] Ниже приводится разбивка используемых портов по состоянию
ESTABLISHED 32,394
TIME_WAIT 710
CLOSING 16
FIN_WAIT_1 2
FIN_WAIT_2 3
LAST_ACK 14
SYN_RECEIVED 238
Любой тип сетевых проблем с тайм-аутами или компьютер, который необходимо перезагружать каждые несколько дней, вероятно, имеют проблемы с портом. Используйте следующие команды, чтобы получить 60 000 портов. Мне пришлось сделать это на своих контроллерах домена, DNS требует много портов.
netsh int ipv4 set dynamicport tcp start = 10001 num = 50000
netsh int ipv4 установить динамический порт udp start = 10001 число = 50000
netsh int ipv6 set dynamicport tcp start = 10001 num = 50000
netsh int ipv6 установить динамический порт udp start = 10001 num = 50000
netsh int ipv4 показать динамический порт tcp