Можно ли перезапустить IIS в веб-роли Azure без перезапуска процесса? - PullRequest
10 голосов
/ 16 марта 2012

У меня есть сайт, работающий в веб-роли Azure, и я могу принудительно перезапустить приложение, изменив web.config, но если я хочу перезапустить IIS, мне сказали, что я никогда не должен делать это вручную через удаленный рабочий стол, и вместо этогоМне следует перезапустить размещенный в Azure процесс.

Эта статья , похоже, согласна с этим мнением.

Моя проблема в том, что перезапуск процесса может занять около 10-15 минут, чтобызапустить снова.Есть ли более быстрый способ добиться этого?

В настоящее время я использую интерфейс windows.azure.com для всех развертываний и управления.

Ответы [ 4 ]

7 голосов
/ 16 марта 2012

Пара вещей, на которые стоит обратить внимание.Когда ваша роль запускается, она использует нечто, называемое IISConfigurator, для программного вызова IIS и создания приложений, виртуальных папок, пулов приложений и т. Д., Как определено в определении службы.Это делается один раз при запуске.

Помните, что процесс w3wp.exe, на котором размещается ваш сайт, полностью отделен от RoleEntryPoint, который вы можете использовать для запуска кода.Таким образом, вы не можете просто вызвать RoleEntryPoint.RequestRecycle () и ожидать, что IIS перезапустится (не будет).

Одно решение, которое вы можете попробовать, если вам необходимо перезапустить IIS, - это программно сделать это.Вот мое трехстрочное решение для перезапуска IIS в Windows Azure:

var mgr = new ServerManager();
var azurePools = mgr.ApplicationPools.Where(p => Guid.TryParse(p.Name));
azurePools.ToList().ForEach(p => p.Recycle());

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

Теперь вам просто нужен способ запуска этого кода из повышенного состояния по требованию для каждого экземпляра.Это общая проблема с множеством решений.Возможно, каждый экземпляр опрашивает файл или таблицу на наличие сигнала для запуска этого кода всякий раз, когда вам нужно перезапустить IIS.

2 голосов
/ 31 мая 2017

Если вы развертываете свое приложение в качестве службы приложений "YourName", например

Azure App Service

с URL http://yourname.azurewebsites.net Вы должны быть в состоянии подключиться к http://yourname.scm.azurewebsites.net используя те же учетные данные, что и для управления Azure. По этому адресу вы найдете Kudu для соответствующей службы приложений.

Если вы выбрали в меню Сервис> Поддержка, а затем выберите Анализ> Метрики тогда вы сможете нажать «Restart w3wp».

Kudu UI

Время для возобновления работы приложения не было неожиданно долгим для 3 приложений, которые я тестировал.

Если вам нужно только «наблюдать» w3wp, тогда вы можете проверить https://youname.scm.azurewebsites.net/ProcessExplorer/

2 голосов
/ 16 марта 2012

Зачем вам нужно перезапустить экземпляр? Испытываете ли вы утечку памяти или какие-либо другие проблемы в производственном развертывании? В производственной среде единственный действительно безопасный способ перезапустить экземпляр - через портал управления Azure или API REST управления Azure.

Если вы работаете с развертыванием dev / test, вы можете включить RDP и перевести свой экземпляр в автономный режим, используя командлет PowerShell PowerShell. На этом этапе вы можете запустить IISReset, перезапустить службу публикации WWW, изменить файл web.config, скопировать новые dll в папку bin и т. Д. И т. Д. проблема, но мы никогда не вмешиваемся в наши производственные экземпляры через RDP, если только нам не нужно устранять неотложную проблему.

0 голосов
/ 16 марта 2012

вы можете попробовать удаленный рабочий стол к экземпляру и перезапустить IIS таким образом

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...