Behandeln von Problemen mit nicht startenden Rolleninstanzen von Azure Cloud Services (erweiterter Support)
In diesem Artikel wird erläutert, wie Sie Startfehler in Azure Cloud Services (erweiterter Support) Rolleninstanzen beheben.
Checkliste zur Problembehandlung
Wählen Sie aus den folgenden Optionen aus, um Probleme zu diagnostizieren, die in Rolleninstanzen auftreten.
Option 1: Deaktivieren von benutzerdefinierten Fehlern
Um vollständige Fehlerinformationen anzuzeigen, öffnen Sie die Datei "Web.config " für die Webrolle, legen Sie den benutzerdefinierten Fehlermodus fest Off
, und stellen Sie dann den Dienst erneut bereit:
Öffnen Sie die Projektmappe in Visual Studio.
Öffnen Sie in Projektmappen-Explorer die Datei "Web.config".
Fügen Sie im
system.web
Abschnitt den folgenden XML-Code hinzu:<customErrors mode="Off" />
Speichern Sie die Datei .
Packen Sie den Dienst neu, und stellen Sie ihn erneut bereit.
Nachdem der Dienst erneut bereitgestellt wurde, enthalten Fehlermeldungen, die Sie möglicherweise über den Dienst erhalten, die Namen fehlender Assemblys oder DLLs.
Option 2: Verwenden von PowerShell zum Anzeigen des Rolleninstanzstatus
Um Informationen zum Laufzeitstatus der Rolleninstanz abzurufen, führen Sie das Cmdlet Get-AzCloudServiceRoleInstanceView aus:
$roleInstanceView = @{
CloudServiceName = "<cloud-service-name>"
ResourceGroupName = "<resource-group-name>"
RoleInstanceName = "WebRole1_IN_0"
}
Get-AzCloudServiceRoleInstanceView @roleInstanceView
Der Status der Rolleninstanz wird in der ersten Spalte aufgeführt, wie in der folgenden Beispielausgabe dargestellt:
Statuses PlatformFaultDomain PlatformUpdateDomain
-------- ------------------- --------------------
{RoleStateStarting} 0 0
Option 3: Verwenden der Azure-Portal zum Anzeigen des Rolleninstanzstatus
Führen Sie die folgenden Schritte aus, um Statusinformationen zu einer Rolleninstanz im Azure-Portal anzuzeigen:
Suchen Sie im Azure-Portal nach Clouddiensten (erweiterter Support) und wählen Sie sie aus.
Wählen Sie in der Liste der Clouddienste den Namen Ihres Clouddiensts aus.
Suchen Sie im Menübereich unter "Einstellungen", und wählen Sie dann "Rollen und Instanzen" aus.
Wählen Sie den Namen der Rolleninstanz aus.
Notieren Sie sich im Rolleninstanzbereich den Status der Rolleninstanz im Feld "Status ".
Option 4: Verwenden von Remotedesktop zum Anzeigen von Fehlerinformationen
Um auf die Rolle zuzugreifen und vollständige Fehlerinformationen anzuzeigen, verwenden Sie das Remotedesktopprotokoll (RDP), indem Sie die folgenden Schritte ausführen:
Fügen Sie die Remotedesktoperweiterung für Azure Cloud Services (erweiterter Support) hinzu.
Wenn in der Azure-Portal die Clouddienstinstanz den Status "Bereit" anzeigt, verwenden Sie Remotedesktop, um sich beim Clouddienst anzumelden. Weitere Informationen finden Sie unter Herstellen einer Verbindung mit Rolleninstanzen mit aktiviertem Remotedesktop.
Melden Sie sich bei dem virtuellen Computer (VM) mit den Anmeldeinformationen an, die Sie zum Einrichten von Remotedesktop verwendet haben.
Öffnen Sie ein Eingabeaufforderungsfenster.
Führen Sie den Befehl "ipconfig" aus . Kopieren Sie den zurückgegebenen Wert für die IPv4-Adresse.
Öffnen Sie einen Webbrowser.
Fügen Sie in der Adressleiste die IPv4-Adresse ein, und fügen Sie dann einen Schrägstrich und den Namen der Standarddatei der Webanwendung an. Zum Beispiel:
http://<ipv4-address>/default.aspx
.
Wenn Sie nun zu der Website navigieren, werden Fehlermeldungen mit weiteren Informationen angezeigt. Hier sehen Sie ein Beispiel:
Serverfehler in '/'-Anwendung
Datei oder Assembly 'Microsoft.WindowsAzure.StorageClient, Version=1.1.0.0, Culture=neutral, PublicKeyToken=<16-digit-hexadecimal-string>' oder eine ihrer Abhängigkeiten konnte nicht geladen werden. Die angegebene Datei wurde nicht gefunden.
Beschreibung: Während der Ausführung der aktuellen Webanforderung ist eine unbehandelte Ausnahme aufgetreten. Überprüfen Sie die Stapelüberwachung, um weitere Informationen über diesen Fehler anzuzeigen und festzustellen, wo der Fehler im Code verursacht wurde.
Ausnahmedetails: System.IO.FileNotFoundException
Option 5: Verwenden des Computeemulators
Sie können den Azure Compute Emulator verwenden, um Probleme mit fehlenden Abhängigkeiten und Web.config-Fehlern zu diagnostizieren und zu beheben. Um optimale Ergebnisse zu erzielen, wenn Sie diese Methode zum Diagnostizieren von Problemen verwenden, verwenden Sie einen Computer oder einen virtuellen Computer, der über eine Neuinstallation von Windows verfügt.
So diagnostizieren Sie Probleme mithilfe des Azure Compute-Emulators:
Installieren Sie das Azure SDK.
Erstellen Sie auf dem Entwicklungscomputer das Clouddienstprojekt.
Navigieren Sie im Datei-Explorer im Clouddienstprojekt zum Ordner bin\debug.
Kopieren Sie den CSX-Ordner und die CSCFG-Datei auf den Computer, den Sie zum Debuggen von Problemen verwenden.
Öffnen Sie auf dem sauberen Computer ein Azure SDK-Eingabeaufforderungsfenster.
Führen Sie an der Eingabeaufforderung den folgenden
csrun
Befehl aus:csrun.exe /devstore:start
Führen Sie den folgenden Befehl aus:
run csrun <path-to-.csx-folder> <path-to-.cscfg-file> /launchBrowser
Wenn die Rolle gestartet wird, zeigt der Webbrowser detaillierte Fehlerinformationen an.
Sollten weitere Diagnoseschritte erforderlich sein, können Sie standardmäßige Windows-Problembehandlungstools verwenden.
Option 6: Verwenden von IntelliTrace
Notiz
Sie können IntelliTrace in Visual Studio 2022 nicht verwenden. IntelliTrace ist weiterhin verfügbar, wenn Sie Visual Studio 2019, 2017 oder 2015 verwenden.
Für Worker- und Webrollen mit .NET Framework 4 können Sie IntelliTrace verwenden. IntelliTrace steht in Visual Studio Enterprise zur Verfügung.
So stellen Sie Ihren Clouddienst bereit, während IntelliTrace aktiviert ist:
Überprüfen Sie, ob Azure SDK 1.3 oder eine höhere Version installiert ist.
Stellen Sie die Projektmappe in Visual Studio bereit. Aktivieren Sie beim Einrichten der Bereitstellung das Kontrollkästchen IntelliTrace für .NET 4-Rollen aktivieren.
Öffnen Sie nach dem Start der Rolleninstanz den Server-Explorer.
Erweitern Sie den Knoten Azure\Cloud Services.
Erweitern Sie die Bereitstellung, um die Rolleninstanzen aufzulisten. Klicken Sie dann mit der rechten Maustaste auf eine Rolleninstanz.
Wählen Sie IntelliTrace-Protokolle anzeigen aus.
Wechseln Sie in "IntelliTrace Summary" zu "Ausnahmedaten ", und erweitern Sie diesen Knoten.
Suchen Sie in der Liste der Ausnahmen nach einer Zeile, die einen Typspaltenwert von System.IO.FileNotFoundException enthält. Der entsprechende Nachrichtenspaltenwert sollte dem folgenden Text ähneln:
Datei oder Assembly 'Microsoft.WindowsAzure.StorageClient, Version=1.1.0.0, Culture=neutral, PublicKeyToken=<16-digit-hexadecimal-string>' oder eine ihrer Abhängigkeiten konnte nicht geladen werden. Die angegebene Datei wurde nicht gefunden.
Ursache 1: Fehler beim Clouddienstvorgang aufgrund von RoleInstanceStartupTimeoutError
Mindestens eine der Rolleninstanzen in Azure Cloud Services (erweiterter Support) kann langsam gestartet werden. Oder Ihre Rolleninstanz kann wiederverwendbar sein oder in einem ausgelasteten Zustand hängen bleiben und nicht wie erwartet beginnen. In diesem Fall wird die Fehlermeldung der RoleInstanceStartupTimeoutError
Rollenanwendung angezeigt.
Die Rollenanwendung enthält zwei Komponenten, die ggf. zur Wiederverwendung einer Rolle führen:
- Startaufgaben
- Rollencode (Implementierung von RoleEntryPoint)
Wenn die Rolle beendet wird, wird sie vom PaaS-Agent (Platform-as-a-Service) neu gestartet.
Führen Sie die folgenden Schritte aus, um zu ermitteln, ob das Problem durch eine Startaufgabe verursacht wird:
Verwenden Sie Remotedesktop, um eine Verbindung mit der problematischen Rolleninstanz herzustellen.
Nachdem Sie eine Verbindung mit der Rolleninstanz hergestellt haben, wählen Sie "Start" aus, und suchen Sie dann nach "Task-Manager", und wählen Sie dann "Task-Manager" aus.
Wählen Sie im Task-Manager die Registerkarte Details aus, um eine Prozessliste anzuzeigen.
Überprüfen Sie, ob Prozesse für WaIISHost.exe (für ein WebRole) oder WaWorkerHost.exe (für ein WorkerRole) vorhanden sind. Sollten beide Prozesse fehlen, ist wahrscheinlich ein Startvorgang nicht erfolgreich.
Konnten Sie feststellen, dass das Problem durch eine Startaufgabe verursacht wird? Falls ja, können Sie die folgende Lösung verwenden. Die Lösung funktioniert jedoch nur, wenn es sich bei der Startaufgabe um eine einfache Aufgabe oder um eine Vordergrundaufgabe handelt. Für Hintergrund-Startaufgaben ist die Lösung nicht geeignet. Diese werden asynchron parallel zum Start der Rolle ausgeführt.
Lösung: Debuggen des Startaufgabenskripts
Um einen Startaufgabenfehler zu beheben, müssen Sie das Skript debuggen, das beim Start des virtuellen Computers ausgeführt wird. Dieses Startaufgabenskript ist die Datei Startup.cmd. Folgende Optionen unterstützen die Untersuchung der Probleme im Skript:
Sehen Sie sich die Protokolldatei C:\Resources\WaHostBootstrapper.log an. Diese Datei ist das Protokoll für den WaHostBootstrapper.exe Prozess. Dieser Prozess ist für Startaufgaben zuständig. Er wird im Workflow der klassischen Windows-Azure-VM-Architektur beschrieben. Suchen Sie dann nach einem Fehler oder einer Ausnahme, die die Ausführung Startup.cmd umfasst. Überprüfen Sie insbesondere, ob der Beendigungscode 0 ist. Falls nicht, wurde die Startaufgabe mit Fehlern abgeschlossen. Sind keine Protokolle vorhanden, die mit dem Exitcode für das Skript zusammenhängen, wird die Startaufgabe noch ausgeführt.
Wenn das Startaufgabenskript aufgrund der erwarteten geschäftlichen Auswirkungen nicht frei in der Produktionsumgebung ausgeführt werden kann, passen Sie den Protokollierungsmechanismus über die Befehlszeile an. Sie können z. B. die Ausgabe von Schlüsselinformationen in einem Skriptbefehl zu einer Datei umleiten. Eine Möglichkeit hierzu ist das Anfügen
> "%TEMP%\StartupLog.txt"
an das Ende des Befehls.Führen Sie das Startaufgabenskript manuell an der Befehlszeile aus. Die Speicherorte dieses Skripts für die Rollen "WebRole" oder "WorkerRole" werden in der folgenden Tabelle angezeigt.
Role Speicherort des Skripts WebRole E:\approot\bin\Startup.cmd WorkerRole E:\approot\Startup.cmd
Ursache 2: DLLs oder Assemblys fehlen
Nicht reagierende Rolleninstanzen und Rolleninstanzen, die zwischen Zuständen durchlaufen, können durch fehlende DLLs oder Assemblys verursacht werden.
Im Anschluss finden Sie einige Symptome bei fehlenden DLLs oder Assemblys:
Ihre Rolleninstanz durchgibt den Status "Initialisieren", "Beschäftigt" und "Beenden" .
Ihre Rolleninstanz wurde in den Status "Bereit" verschoben, aber die Seite ist in Ihrer Webanwendung nicht sichtbar.
Wenn eine Website in einer Webrolle bereitgestellt wird und aber eine DLL fehlt, wird möglicherweise die folgende Fehlermeldung der Serverlaufzeit angezeigt.
Serverfehler in '/'-Anwendung
Laufzeitfehler
Beschreibung: Auf dem Server ist ein Anwendungsfehler aufgetreten. Die aktuellen benutzerdefinierten Fehlereinstellungen für diese Anwendung verhindern, dass die Details des Anwendungsfehlers remote angezeigt werden (aus Sicherheitsgründen). Er kann jedoch von Browsern, die auf dem lokalen Serverrechner laufen, angezeigt werden.
Details: Um die Details dieser spezifischen Fehlermeldung auf Remotecomputern anzuzeigen, erstellen Sie bitte ein
<customErrors>
Tag mit einer Konfigurationsdatei "web.config", die sich im Stammverzeichnis der aktuellen Webanwendung befindet. Dieses<customErrors>
Tag sollte dann das Attribut "mode
" auf "Off
" festgelegt haben.
Lösung: Auflösen fehlender DLLs und Assemblys
So beheben Sie Fehler aufgrund von fehlenden DLLs und Assemblys:
Öffnen Sie die Projektmappe in Visual Studio.
Öffnen Sie im Projektmappen-Explorer den Ordner Verweise.
Wählen Sie die Assembly aus, die in der Fehlermeldung identifiziert wird.
Legen Sie unter Eigenschaften die Eigenschaft Lokale Kopie auf True fest.
Stellen Sie den Clouddienst erneut bereit.
Vergewissern Sie sich, dass die Fehler nicht mehr auftreten, und stellen Sie den Dienst anschließend erneut bereit. Lassen Sie beim Einrichten der Bereitstellung das Kontrollkästchen IntelliTrace für .NET 4-Rollen aktivieren deaktiviert.
Nächste Schritte
- Erfahren Sie, wie Sie Probleme mit Cloud-Service-Rollen mithilfe von Azure PaaS-Computerdiagnosedaten beheben können.
Weitere Informationen
Informationen zu der anfänglichen Konfiguration, Ausführung und Beispielen für Startaufgaben im klassischen Clouddienst finden Sie in den folgenden Artikeln:
- Konfigurieren und Ausführen von Startaufgaben für einen Azure Cloud Service (klassisch)
- Allgemeine Startaufgaben des Clouddiensts (klassisch)
Kontaktieren Sie uns für Hilfe
Wenn Sie Fragen haben oder Hilfe mit Ihren Azure-Gutschriften benötigen, dann erstellen Sie beim Azure-Support eine Support-Anforderung oder fragen Sie den Azure Community-Support. Sie können auch Produktfeedback an die Azure Feedback Community senden.