Ist es möglich, IIS in einer Azure-Webrolle neu zu starten, ohne den Prozess neu zu starten?

8

Ich habe eine Site, die auf einer Azure-Webrolle läuft, und ich kann den Neustart der Anwendung erzwingen, indem ich die web.config ändere, aber wenn ich IIS neu starten will, wurde mir gesagt, dass ich das nie manuell über den Remote-Desktop machen sollte Ich sollte den von Azure gehosteten Prozess neu starten.

Dieser Artikel scheint dieser Meinung zuzustimmen .

Mein Problem ist, dass der Neustart eines Prozesses fast 10-15 Minuten dauern kann, um neu zu starten. Gibt es einen schnelleren Weg, dies zu erreichen?

Ich verwende derzeit die Benutzeroberfläche von windows.azure.com, um alle Bereitstellungen und die Verwaltung durchzuführen.

    
Digbyswift 16.03.2012, 09:49
quelle

4 Antworten

7

Ein paar Dinge, auf die ich hier hinweisen soll. Wenn Ihre Rolle gestartet wird, verwendet sie einen sogenannten IISConfigurator, um programmgesteuert IIS aufzurufen und Apps, Vdirs, App-Pools usw. zu erstellen, wie in der Servicedefinition definiert. Das geschieht einmalig beim Start.

Denken Sie daran, dass der Prozess w3wp.exe, der Ihre Website hostet, vollständig vom RoleEntryPoint getrennt ist, den Sie zum Ausführen von Code verwenden könnten. Daher können Sie nicht einfach RoleEntryPoint.RequestRecycle () aufrufen und erwarten, dass IIS neu gestartet wird (wird nicht ausgeführt).

Eine Lösung, die Sie versuchen könnten, wenn Sie IIS neu starten müssen, ist programmgesteuert. Hier ist meine 3-Zeilen-Lösung für den Neustart von IIS auf Windows Azure:

%Vor%

Ich verwende das Wissen, dass Anwendungspools GUIDs in Windows Azure sind, um sie auf diejenigen zu filtern, an denen ich interessiert bin.

Jetzt brauchen Sie nur noch eine Möglichkeit, den Code bei Bedarf in einer erhöhten Bedingung für jede Instanz auszuführen. Das ist ein häufiges Problem mit vielen Lösungen. Vielleicht muss jede Instanz eine Datei oder Tabelle für ein Signal abfragen, um diesen Code auszuführen, wenn Sie IIS neu starten müssen.

    
dunnry 16.03.2012, 18:16
quelle
2

Warum müssen Sie die Instanz neu starten? Tritt in Ihrer Produktionsbereitstellung ein Speicherverlust oder ein anderes Problem auf? In einer Produktionsumgebung ist der einzige wirklich sichere Weg zum Neustarten einer Instanz das Azure-Verwaltungsportal oder die Azure-Management-REST-API.

Wenn Sie mit einer Entwickler- / Testbereitstellung arbeiten, können Sie RDP einbinden und Ihre Instanz mithilfe der Set-RoleInstanceStatus PowerShell-Cmdlet. An diesem Punkt können Sie IISReset ausführen, den WWW-Veröffentlichungsdienst neu starten, die Datei web.config ändern, neue DLLs in den Ordner bin kopieren usw. Wir machen diese Dinge immer mit unseren Entwickler- / Testinstanzen ohne Problem, aber wir basteln nie mit unseren Produktionsinstanzen über RDP, wenn wir nicht ein dringendes Problem beheben müssen.

    
Jonathan McIntire 16.03.2012 11:10
quelle
1

Wenn Sie Ihre Anwendung als App Service "YourName" wie

bereitstellen

mit URL Ссылка Sie sollten sich mit Ссылка verbinden können Verwenden Sie die gleichen Anmeldeinformationen wie für die Azure-Verwaltung. Unter dieser URL finden Sie Kudu für den entsprechenden App-Service.

Wenn Sie im Menü Tools & gt; Support wählen und dann Analyze & gt; Metriken auswählen dann sollten Sie in der Lage sein, auf "Restart w3wp" zu klicken.

Die Zeit für die erneute Verwendung der Anwendung war nicht unerwartet lang für 3 Anwendungen, die ich getestet habe.

Wenn Sie nur w3wp "beobachten" müssen, können Sie Ссылка

überprüfen     
rudolf_franek 31.05.2017 10:28
quelle
0

Sie könnten den Remote-Desktop für die Instanz testen und IIS auf diese Weise recyceln.

    
ryancrawcour 16.03.2012 09:53
quelle

Tags und Links