IIS WebLimits не соблюдается
Итак, я настроил IIS8.5 на Win 8.1, вот так:
appcmd.exe set config -section:system.applicationHost/webLimits /connectionTimeout:"00:00:03" /commit:apphost
Я проверил, что настройка кажется примененной.
Я сделал IISRESET (в отчаянии), но настройка, кажется, игнорируется.
Если я подключаюсь к IIS и не отправляю контент, я не отключаюсь через 3 с, как ожидалось.
Я фактически начал все это, пытаясь заставить это работать:
appcmd.exe set config -section:system.applicationHost/webLimits /headerWaitTimeout:"00:00:30" /commit:apphost
то есть, чтобы он отключил меня после того, как не отправил все заголовки после 30 секунд. Это также не сработало - оставайтесь на связи, как мне нравится.
Я прочитал документы ( http://www.iis.net/configreference/system.applicationhost/weblimits) и уверен, что семантика верна.
Почему лимит не применяется?
Благодарю.
1 ответ
Прежде всего, я обнаружил, что вам нужно выполнить HTTP-запрос, чтобы установить время ожидания соединения, например, при входе.
telnet <webserver> 80
GET / HTTP/1.0
Connection: keep-alive
Установив этот параметр, я обнаружил, что system.applicationHost/webLimit/connectionTimeout не работает, но system.applicationHost/sites/[веб-сайт по умолчанию]/limit / connectionTimeout работает нормально. Его можно настроить через консоль IIS или с помощью appcmd.exe следующим образом:
appcmd.exe set config -section:system.applicationHost/sites "/[name='Default Web Site'].limits.connectionTimeout:00:00:03" /commit:apphost
https://docs.microsoft.com/en-us/iis/configuration/system.applicationhost/sites/site/limits
Документация на
http://www.iis.net/configreference/system.applicationhost/weblimits
говорит:
Каждые 60 секунд рабочий процесс проверяет, как долго он простаивает. Если его текущее время простоя превышает значение времени простоя, указанное службой активации процессов Windows (WAS), рабочий процесс инициирует завершение работы.
Теперь, когда процесс проверяет каждые 60 секунд, то - ах - 3 или 30 секундный тайм-аут не имеет смысла, потому что он все равно проверяется только каждые 60 секунд. В любом случае это не имеет особого смысла, так как обходит попытки поддержки активности HTTP 1.1, чтобы избежать затрат на восстановление.