Делает редактирование веба.конфигурационный файл запускает перекрывающуюся корзину или запуск + остановка пула приложений?


Я перекрывающихся обработка, настроенный на моем сайте MVC ASP.NET .

Как я понимаю (из этого вопроса SO ), Если я переработаю пул приложений, это приведет к появлению нового w3wp.exe-процесс, чтобы взять на себя нагрузку одного перерабатываемого, и только когда новый процесс инициализируется и принимает нагрузку, старый процесс будет закрыт. И если я останавливаю / запускаю пул приложений, он немедленно убивает, не позволяя процессу завершиться изящно или позволить процесс замены раскручивается первым.

Вопрос: когда я редактирую свой веб.конфигурационный файл, он перезапустит связанный пул приложений IIS. Будет ли это вызывать хорошее перекрывающееся поведение рециркуляции или жестокое поведение остановки / запуска?

Я пытаюсь решить, нужно ли мне вывести сервер из фермы с балансировкой нагрузки и сделать остановку слива трафика сервера для редактирования параметров конфигурации.

2 4

2 ответа:

Я решил использовать науку. Я провел эксперимент с моим сервером под нагрузочным тестированием, где я неоднократно редактировал и сохранял свой веб.конфигурационный файл, в то время как запросы были заполнены.

При сохранении изменений в сети запросы не удалялись.конфигурационный файл.

Я действительно наблюдал короткий всплеск активности процессора во время загрузки новых настроек, но на самом деле едва заметный.

Я смог доказать, что настройки загружаются, создавая веб.конфигурационный файл плохо отформатировать и сохранить его. Это немедленно вызвало сбой запросов.

Что меня удивило, так это то, что process id не изменилось с паутиной.конфиг редактировать. Мое понимание перекрытия перезапуска IIS для служб IIS для запуска нового процесса w3wp.exe процесс, а затем свернуть старый. Что означало бы другой идентификатор процесса. Так что я не думаю, что перекрывание рециркуляции происходит здесь.

Поскольку process id одно и то же, то я полагаю, что это совершенно отдельный механизм, который загружает / выгружает домен приложения. Это, по-видимому, подтверждается этим документом, соответствующий бит воспроизводится ниже:

Изменения конфигурации вызывают перезапуск домена приложения

Изменения параметров конфигурации в Web.файлы конфигурации косвенно вызывают домен приложения для перезапуска. Такое поведение происходит намеренно. Вы можно дополнительно использовать атрибут configSource для ссылки на внешние файлы конфигурации, которые не вызывают перезапуск когда вносятся изменения. Дополнительные сведения см. В разделе configSource in General Attributes Inherited по элементам раздела.

TLDR

Ни перекрывающаяся рециркуляция, ни жестокое поведение stop/start не вызваны сетью.конфиг редактировать. Домен приложения повторно загружается с новыми настройками без прерывания обработки запросов.

Http://msdn.microsoft.com/en-us/library/ackhksh7.aspx

Редактирование (или прикосновение) к сети.конфиг не вызовет хороший перекрывающихся обработка'. Как описано выше, процесс запроса не будет "прерван", но новые входящие запросы должны ждать, пока новый рабочий процесс не завершит свою инициализацию. Таким образом, в зависимости от времени инициализации, будет заметный перерыв. Я заметил, что в приложении WCF-Service, размещенном в IIS7. 5, где я реализовал IProcessHostPreloadClient, чтобы сделать некоторые дорогостоящие вещи предварительной загрузки. На с другой стороны, "утилизация", нажав на пункт контекстного меню пула приложений в диспетчере IIS, сделает приятное наложение: новые входящие запросы обрабатываются старым рабочим процессом, пока новый работает на методе предварительной загрузки.