У нас есть загруженный веб-сервер, обрабатывающий около 1000 запросов asp.net в секунду.
У нас есть сценарий развертывания, который копирует скомпилированный asp.net из нашего модуля разработки.
Сценарий сначала останавливает IIS на рабочем сервере, копирует код, а затем перезапускается.
Мы используем следующую команду, чтобы остановить пул приложений для сайта:
% windir% \ system32 \ inetsrv \ appcmd остановить пул приложений /apppool.name:ourappname
Проблема в том, что он перестает принимать новые запросы, но ждет завершения существующих запросов. Обычно есть несколько запросов, выполнение которых занимает до минуты, в течение которого новые запросы не обслуживаются. Таким образом, ради выполнения примерно дюжины запросов мы упускаем возможность обслуживания 1000 * 60 = 60 000 запросов, поступивших в течение минуты или около того, пока мы ждем завершения 12-20 запросов. Это глупо.
Нам бы очень понравилось принудительно остановить пул приложений в течение x секунд. Кажется, это невозможно. Есть ли лучший способ добиться того, что мы делаем, то есть быстрой остановки iis 7?
Почему вам нужно останавливать и перезапускать пул приложений? Обновление файлов в каталоге bin приведет к перезапуску пула приложений в соответствующих точках. После завершения развертывания сохранение изменений в файле web.config приведет к перезапуску пула приложений, если вы ничего не обновили в bin.
Если вам действительно нужно отключить его, вы можете сделать это на уровне IIS (служба w3wp).
net stop w3wp
#Deploy
net start w3wp