Behandlung von allgemeinen Problemen mit Azure Spring Apps

Hinweis

Azure Spring Apps ist der neue Name für den Azure Spring Cloud-Dienst. Obwohl der Dienst umbenannt wurde, wird der alte Name noch an einigen Stellen verwendet, solange wir Ressourcen wie Screenshots, Videos und Diagramme aktualisieren.

Dieser Artikel gilt für: ✔️ Basic-/Standard-Dienstebene ✔️ Enterprise-Dienstebene

Dieser Artikel enthält Anweisungen zur Behandlung von Problemen bei der Entwicklung von Azure Spring Apps. Weitere Informationen hierzu finden Sie unter Häufig gestellte Fragen zu Azure Spring Apps.

Verfügbarkeits-, Leistungs- und Anwendungsprobleme

Meine Anwendung kann nicht gestartet werden (z. B. kann für den Endpunkt keine Verbindung hergestellt werden, oder nach einigen Wiederholungsversuchen wird 502 zurückgegeben)

Exportieren Sie die Protokolle nach Azure Log Analytics. Die Tabelle für Spring-Anwendungsprotokolle heißt AppPlatformLogsforSpring. Erfahren Sie mehr unter Analysieren von Protokollen und Metriken mit Diagnoseeinstellungen.

In Ihren Protokollen wird möglicherweise die folgende Fehlermeldung angezeigt: org.springframework.context.ApplicationContextException: Unable to start web server

Die Meldung weist auf eines der beiden wahrscheinlichen Probleme hin:

  • Eins der Beans oder eine seiner Abhängigkeiten fehlt.
  • Eine der Bean-Eigenschaften fehlt oder ist ungültig. In diesem Fall wird wahrscheinlich „java.lang.IllegalArgumentException“ angezeigt.

Dienstbindungen können auch dazu führen, dass beim Starten von Anwendungen Fehler auftreten. Verwenden Sie Schlüsselwörter, die im Zusammenhang mit den gebundenen Diensten stehen, um die Protokolle abzufragen. Angenommen, Ihre Anwendung verfügt beispielsweise über eine Bindung an eine MySQL-Instanz, für die die lokale Systemzeit festgelegt ist. Wenn die Anwendung nicht gestartet werden kann, wird im Protokoll ggf. die folgende Fehlermeldung angezeigt:

„java.sql.SQLException: The server time zone value 'Coordinated Universal Time' is unrecognized or represents more than one time zone.“ (Der Zeitzonenwert des Servers „Koordinierte Weltzeit“ wird nicht erkannt oder repräsentiert mehr als eine Zeitzone.)

Navigieren Sie zum Beheben dieses Fehlers zum server parameters-Element Ihrer MySQL-Instanz, und ändern Sie den Wert time_zone von SYSTEM zu +0:00.

Meine Anwendung stürzt ab oder löst einen unerwarteten Fehler aus

Falls beim Debuggen die Anwendung abstürzt, sollten Sie zunächst den Ausführungsstatus und den Ermittlungsstatus der Anwendung überprüfen. Gehen Sie folgendermaßen vor: Navigieren Sie im Azure-Portal zu App-Verwaltung, um sicherzustellen, dass die Status für alle Anwendungen Wird ausgeführt und UP (AKTIV) angegeben ist.

  • Falls der Status Wird ausgeführt lautet, aber als Ermittlungsstatus nicht UP (AKTIV) angezeigt wird, navigieren Sie zum Abschnitt „Meine Anwendung kann nicht registriert werden“.

  • Wenn der Ermittlungsstatus UP (AKTIV) lautet, können Sie zu „Metriken“ navigieren, um die Integrität der Anwendung zu überprüfen. Untersuchen Sie die folgenden Metriken:

    • TomcatErrorCount (tomcat.global.error):

      Alle Spring-Anwendungsausnahmen werden hier gezählt. Wenn dieser Wert hoch ist, wechseln Sie zu Azure Log Analytics, um Ihre Anwendungsprotokolle zu überprüfen.

    • AppMemoryMax (jvm.memory.max):

      Für die Anwendung steht die maximale Menge an Arbeitsspeicher zur Verfügung. Die Menge kann undefiniert sein oder kann sich mit der Zeit ändern, wenn diese definiert ist. Sofern definiert, ist die Menge des verwendeten und zugesicherten Arbeitsspeichers immer kleiner als der Höchstwert oder entspricht diesem. Eine Speicherzuordnung kann jedoch mit OutOfMemoryError fehlschlagen, wenn versucht wird, den verwendeten Arbeitsspeicher so zu vergrößern, dass used > committed ist, selbst wenn used <= max weiterhin zutrifft („true“). Versuchen Sie in einer solchen Situation, die maximale Heapgröße mithilfe des Parameters -Xmx zu erhöhen.

    • AppMemoryUsed (jvm.memory.used):

      Die derzeit verwendete Arbeitsspeichermenge in Byte, die von der Anwendung verwendet wird. Bei einer normalen Load-Java-Anwendung ergibt diese Metrikreihe ein Sägezahnmuster, bei dem die Speicherauslastung in kleinen Schritten beständig zunimmt und abnimmt und plötzlich massiv abfällt. Dieses Muster wiederholt sich dann. Diese Metrikreihe erscheint aufgrund der Garbage Collection innerhalb eines virtuellen Java-Computers, bei der Sammlungsaktionen bei den „Sägezahnmustern“ einen Abfall darstellen.

      Diese Metrik ist wichtig, um Speicherprobleme zu identifizieren, wie z. B.:

      • eine Arbeitsspeicherexplosion direkt am Anfang
      • die Surge-Arbeitsspeicherzuordnung für einen bestimmten Logikpfad
      • allmähliche Speicherverluste

    Weitere Informationen finden Sie unter Metriken.

  • Wenn die Anwendung nicht gestartet wird, stellen Sie sicher, dass die Anwendung über gültige JVM-Parameter verfügt. Wenn der JVM-Arbeitsspeicher zu hoch festgelegt wird, wird in Ihren Protokollen möglicherweise die folgende Fehlermeldung angezeigt:

    „required memory 2728741K is greater than 2000M available for allocation“ (erforderlicher Arbeitsspeicher 2728741K ist größer als 2000M für die Zuordnung verfügbar)

Weitere Informationen zu Azure Log Analytics finden Sie unter Erste Schritte mit Log Analytics in Azure Monitor.

Meine Anwendung hat eine hohe CPU- oder Speicherauslastung.

Wenn Ihre Anwendung über eine hohe CPU- oder Arbeitsspeicherauslastung verfügt, trifft einer der beiden folgenden Fälle zu:

  • Alle App-Instanzen haben eine hohe CPU- oder Arbeitsspeicherauslastung.
  • Einige der App-Instanzen haben eine hohe CPU- oder Arbeitsspeicherauslastung.

Gehen Sie wie folgt vor, um festzustellen, welche Situation zutrifft:

  1. Navigieren Sie zu Metriken, und wählen Sie dann entweder Service CPU Usage Percentage (CPU-Auslastung des Diensts in Prozent) oder Service Memory Used (Arbeitsspeicherauslastung des Diensts) aus.
  2. Fügen Sie einen App= -Filter hinzu, um anzugeben, welche Anwendung Sie überwachen möchten.
  3. Teilen Sie die Metriken nach Instanz auf.

Falls alle Instanzen eine hohe CPU- oder Arbeitsspeicherauslastung aufweisen, müssen Sie entweder die Anwendung aufskalieren oder die CPU- oder Arbeitsspeicherleistung hochskalieren. Weitere Informationen finden Sie im Tutorial: Skalieren einer Anwendung in Azure Spring Apps.

Wenn nur einige Instanzen eine hohe CPU- oder Arbeitsspeicherauslastung aufweisen, sollten Sie den Instanzstatus und den zugehörigen Ermittlungsstatus überprüfen.

Weitere Informationen finden Sie unter Metriken für Azure Spring Apps.

Wenn alle Instanzen aktiv sind und ausgeführt werden, wechseln Sie zu Azure Log Analytics, um Ihre Anwendungsprotokolle abzufragen und Ihre Codelogik zu überprüfen. Hiermit können Sie feststellen, ob diese sich ggf. auf die Skalierungspartitionierung auswirken. Weitere Informationen finden Sie unter Analysieren von Protokollen und Metriken mit Diagnoseeinstellungen.

Weitere Informationen zu Azure Log Analytics finden Sie unter Erste Schritte mit Log Analytics in Azure Monitor. Fragen Sie die Protokolle mit der Kusto-Abfragesprache ab.

Checkliste für die Bereitstellung Ihrer Spring-Anwendung in Azure Spring Apps

Bevor Sie ein Onboarding Ihrer Anwendung durchführen, vergewissern Sie sich, dass sie die folgenden Kriterien erfüllt:

  • Die Anwendung kann lokal mit der angegebenen Java-Laufzeitversion ausgeführt werden.
  • Die Umgebungskonfiguration (CPU/RAM/Instanzen) erfüllt die vom Anwendungsanbieter festgelegte Mindestanforderung.
  • Die Konfigurationselemente haben ihre erwarteten Werte. Weitere Informationen finden Sie unter Einrichten einer Spring Cloud-Konfigurationsserverinstanz für Ihren Dienst. Informationen zur Enterprise-Dienstebene finden Sie unter Verwenden des Anwendungskonfigurationsdiensts.
  • Die Umgebungsvariablen verfügen über ihre erwarteten Werte.
  • Die JVM-Parameter verfügen über ihre erwarteten Werte.
  • Es wird empfohlen, den eingebetteten Konfigurationsserver und die Spring-Dienstregistrierung zu deaktivieren oder aus dem Anwendungspaket zu entfernen.
  • Wenn Azure-Ressourcen mittels Dienstbindung gebunden werden sollen, stellen Sie sicher, dass die Zielressourcen in Betrieb sind und ausgeführt werden.

Konfiguration und Verwaltung

Beim Erstellen einer Azure Spring Apps-Dienstinstanz ist ein Problem aufgetreten

Wenn Sie eine Instanz eines Azure Spring Apps-Diensts über das Azure-Portal bereitstellen, führt Azure Spring Apps die Überprüfung für Sie durch.

Wenn Sie jedoch versuchen, eine Azure Spring Apps-Dienstinstanz mithilfe der Azure CLI oder einer Azure Resource Manager-Vorlage einzurichten, überprüfen Sie Folgendes:

  • Das Abonnement ist aktiv.
  • Der Standort wird von Azure Spring Apps unterstützt.
  • Die Ressourcengruppe für die Instanz wurde bereits erstellt.
  • Der Ressourcenname entspricht der Benennungsregel. die Instanz nur Kleinbuchstaben, Zahlen und Bindestriche enthält. Das erste Zeichen muss ein Buchstabe sein. Das letzte Zeichen muss ein Buchstabe oder eine Zahl sein. Der Wert muss zwischen 2 und 32 Zeichen lang sein.

Wenn Sie die Azure Spring Apps-Dienstinstanz mithilfe einer Resource Manager-Vorlage einrichten möchten, lesen Sie zunächst den Artikel Verstehen der Struktur und Syntax von Azure Resource Manager-Vorlagen.

Der Name der Azure Spring Apps-Dienstinstanz wird verwendet, um den Namen der Unterdomäne unter azureapps.io anzufordern. Die Einrichtung ist daher nicht erfolgreich, wenn ein Konflikt mit einem bereits vorhandenen Namen besteht. Sie werden möglicherweise weitere Informationen in den Aktivitätsprotokollen finden.

Ich kann keine .NET Core-App bereitstellen

Sie können keine ZIP-Datei für eine .NET Core-Steeltoe-App über das Azure-Portal oder die Resource Manager-Vorlage hochladen.

Wenn Sie Ihr Anwendungspaket über die Azure CLI bereitstellen, wird in regelmäßigen Abständen der Bereitstellungsfortschritt durch die Azure CLI abgerufen und am Ende das Bereitstellungsergebnis angezeigt.

Stellen Sie sicher, dass Ihre Anwendung im richtigen ZIP-Dateiformat gepackt ist. Wenn die Anwendung nicht ordnungsgemäß gepackt ist, reagiert der Prozess nicht mehr, oder Sie erhalten eine Fehlermeldung.

Ich kann ein JAR-Paket nicht bereitstellen

Sie können keine JAR-Datei (Java Archive) oder kein Quellpaket über das Azure-Portal oder die Resource Manager-Vorlage hochladen.

Wenn Sie Ihr Anwendungspaket über die Azure CLI bereitstellen, wird in regelmäßigen Abständen der Bereitstellungsfortschritt durch die Azure CLI abgerufen und am Ende das Bereitstellungsergebnis angezeigt.

Sollte der Abruf unterbrochen werden, können Sie mithilfe des folgenden Befehls die Bereitstellungsprotokolle abrufen:

az spring app show-deploy-log --name <app-name>

Stellen Sie sicher, dass Ihre Anwendung im richtigen ausführbaren JAR-Format gepackt ist. Wenn die Anwendung nicht korrekt gepackt ist, erhalten Sie eine Fehlermeldung, die wie folgt aussehen kann: Error: Invalid or corrupt jarfile /jar/38bc8ea1-a6bb-4736-8e93-e8f3b52c8714

Ich kann ein Quellpaket nicht bereitstellen

Sie können keine JAR-Datei oder kein Quellpaket über das Azure-Portal oder die Resource Manager-Vorlage hochladen.

Wenn Sie Ihr Anwendungspaket über die Azure CLI bereitstellen, wird in regelmäßigen Abständen der Bereitstellungsfortschritt durch die Azure CLI abgerufen und am Ende das Bereitstellungsergebnis angezeigt.

Sollte der Abruf unterbrochen werden, können Sie mithilfe des folgenden Befehls die Build- und Bereitstellungsprotokolle abrufen:

az spring app show-deploy-log --name <app-name>

Beachten Sie jedoch, dass die Azure Spring Apps-Dienstinstanz nur jeweils einen Buildauftrag für ein Quellpaket auslösen kann. Weitere Informationen finden Sie unter Bereitstellen einer Anwendung und Einrichten einer Stagingumgebung in Azure Spring Apps.

Meine Anwendung kann nicht registriert werden

In den meisten Fällen tritt diese Situation auf, wenn Erforderliche Abhängigkeiten und Suchdienst in Ihrer POM-Datei (Project Object Model) nicht ordnungsgemäß konfiguriert sind. Nach der Konfiguration wird der integrierte Serverendpunkt der Dienstregistrierung als Umgebungsvariable für Ihre Anwendung eingefügt. Anwendungen können sich dann selbst beim Dienstregistrierungsserver registrieren und andere abhängige Anwendungen ermitteln.

Die Wartezeit, bis eine neu registrierte Instanz mit dem Empfang von Datenverkehr beginnen kann, beträgt mindestens zwei Minuten.

Stellen Sie beim Migrieren einer vorhandenen Spring Cloud-basierten Lösung zu Azure sicher, dass Ihre Ad-hoc-Instanzen der Dienstregistrierung und des Konfigurationsservers entfernt (oder deaktiviert) wurden. So können Sie einen Konflikt mit den von Azure Spring Apps bereitgestellten verwalteten Instanzen vermeiden.

Sie können die Clientprotokolle der Dienstregistrierung auch in Azure Log Analytics überprüfen. Weitere Informationen finden Sie unter Analysieren von Protokollen und Metriken mit Diagnoseeinstellungen.

Weitere Informationen zu Azure Log Analytics finden Sie unter Erste Schritte mit Log Analytics in Azure Monitor. Fragen Sie die Protokolle mit der Kusto-Abfragesprache ab.

Ich möchte die Umgebungsvariablen meiner Anwendung überprüfen.

Umgebungsvariablen bieten Informationen für das Azure Spring Apps-Framework und stellen sicher, dass Azure versteht, wo und wie die Dienste konfiguriert werden, aus denen Ihre Anwendung besteht. Bei der Behebung potenzieller Probleme muss zunächst sichergestellt werden, dass Ihre Umgebungsvariablen richtig sind. Sie können die Umgebungsvariablen mithilfe des Endpunkts für den Spring Boot-Aktor überprüfen.

Warnung

Mit dieser Prozedur werden die Umgebungsvariablen unter Verwendung Ihres Testendpunkts verfügbar gemacht. Setzen Sie den Vorgang nicht fort, wenn der Testendpunkt öffentlich zugänglich ist oder Sie Ihrer Anwendung einen Domänennamen zugewiesen haben.

  1. Gehe zu https://<your application test endpoint>/actuator/health.

    • Eine Antwort ähnlich wie {"status":"UP"} gibt an, dass der Endpunkt aktiviert wurde.

    • Ist die Antwort negativ, nehmen Sie die folgende Abhängigkeit in die Datei POM.xml auf:

      <dependency>
          <groupId>org.springframework.boot</groupId>
          <artifactId>spring-boot-starter-actuator</artifactId>
      </dependency>
      
  2. Wenn Sie den Endpunkt für den Spring Boot-Aktor aktiviert haben, navigieren Sie im Azure-Portal zur Konfigurationsseite Ihrer Anwendung. Fügen Sie eine Umgebungsvariable mit dem Namen MANAGEMENT_ENDPOINTS_WEB_EXPOSURE_INCLUDE und dem Wert * hinzu.

  3. Starten Sie Ihre Anwendung neu.

  4. Navigieren Sie zu https://<your application test endpoint>/actuator/env, und überprüfen Sie die Antwort. Diese sollte wie folgt aussehen:

    {
        "activeProfiles": [],
        "propertySources": {,
            "name": "server.ports",
            "properties": {
                "local.server.port": {
                    "value": 1025
                }
            }
        }
    }
    

Suchen Sie den untergeordneten Knoten mit dem Namen systemEnvironment. Dieser Knoten enthält die Umgebungsvariablen Ihrer Anwendung.

Wichtig

Denken Sie daran, das Verfügbarmachen Ihrer Umgebungsvariablen rückgängig zu machen, bevor Sie die Anwendung öffentlich zugänglich machen. Wechseln Sie zum Azure-Portal, navigieren Sie zur Konfigurationsseite Ihrer Anwendung, und löschen Sie die folgende Umgebungsvariable: MANAGEMENT_ENDPOINTS_WEB_EXPOSURE_INCLUDE.

Ich kann keine Metriken oder Protokolle für meine Anwendung finden

Navigieren Sie zu App-Verwaltung, um sicherzustellen, dass für die Anwendung die Status Wird ausgeführt und UP (AKTIV) festgelegt ist.

Überprüfen Sie, ob JMX in Ihrem Anwendungspaket aktiviert ist. Diese Funktion kann mit der-Konfigurationseigenschaft spring.jmx.enabled=true aktiviert werden.

Überprüfen Sie, ob die Abhängigkeit spring-boot-actuator in Ihrem Anwendungspaket aktiviert ist und der Startvorgang erfolgreich ausgeführt werden kann.

<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-actuator</artifactId>
</dependency>

Wenn Ihre Anwendungsprotokolle in einem Speicherkonto archiviert, aber nicht an Azure Log Analytics gesendet werden können, überprüfen Sie, ob Sie Ihren Arbeitsbereich ordnungsgemäß eingerichtet haben. Falls Sie einen kostenlosen Tarif von Azure Log Analytics verwenden, sollten Sie beachten, dass für den kostenlosen Tarif keine SLA gilt.

Enterprise-Tarif

Fehler 112039: Fehler beim Kauf auf Azure Marketplace

Beim Erstellen einer Azure Spring Apps-Instanz der Dienstebene „Enterprise“ tritt der Fehlercode „112039“ auf. Weitere Informationen finden Sie in der detaillierten Fehlermeldung unten:

  • „Fehler beim Kauf auf Azure Marketplace, da der Microsoft.SaaS-RP nicht für das Azure-Abonnement registriert ist“: Kauf eines SaaS-Angebots von VMware auf Azure Spring Apps Enterprise-Dienstebene.

    Sie müssen den Microsoft.SaaS-Ressourcenanbieter registrieren, bevor Sie eine Azure Spring Apps Enterprise-Instanz erstellen. Erfahren Sie, wie Sie einen Ressourcenanbieter registrieren.

  • „Fehler beim Laden des Katalogprodukts vmware-inc.azure-spring-cloud-vmware-tanzu-2 im Azure-Abonnementmarkt“: Die Abrechnungskontoadresse Ihres Azure-Abonnements befindet sich nicht am unterstützten Standort.

    Weitere Informationen finden Sie im Abschnitt Für den Markt '<Standort>' sind keine Pläne verfügbar.

  • „Der Kauf auf Azure Marketplace ist aufgrund Überprüfung der Unterschrift der Marketplace-Vereinbarung fehlgeschlagen. Überprüfen Sie, ob das Azure-Abonnement den Bedingungen von vmware-inc.azure-spring-cloud-vmware-tanzu-2.tanzu-asc-ent-mtr zugestimmt hat“: Ihr Azure-Abonnement hat die Bedingungen für das Angebot und den zu erwerbenden Plan nicht unterzeichnet.

    Wechseln Sie zu Ihrem Azure-Abonnement, und führen Sie den folgenden Azure CLI-Befehl aus, um den Bedingungen zuzustimmen:

    az term accept \
        --publisher vmware-inc \
        --product azure-spring-cloud-vmware-tanzu-2 \
        --plan tanzu-asc-ent-mtr
    

    Wenn das nicht funktioniert, können Sie sich mit den folgenden Informationen an das Supportteam wenden.

    • AZURE_TENANT_ID: Die Azure-Mandanten-ID, die das Azure-Abonnement hostet.
    • AZURE_SUBSCRIPTION_ID: die Azure-Abonnement-ID, die zum Erstellen der Spring Apps-Instanz verwendet wird.
    • SPRING_CLOUD_NAME: Der Name der fehlerhaften Instanz.
    • ERROR_MESSAGE: Die beobachtete Fehlermeldung.

Für den Markt <Standort> sind keine Pläne verfügbar.

Wenn Sie das SaaS-Angebot Azure Spring Apps Enterprise-Dienstebene in Azure Marketplace besuchen, wird möglicherweise Folgendes angezeigt: „Für den Markt <Standort> sind keine Pläne verfügbar“, wie in der folgenden Abbildung dargestellt.

No plans available error image

Für die Azure Spring Apps Enterprise-Dienstebene müssen Kunden eine Lizenz für Tanzu-Komponenten über ein Azure Marketplace-Angebot erwerben. Um einen Kauf in Azure Marketplace zu tätigen, sollte sich das Land oder die Region des Abrechnungskontos für Ihr Azure-Abonnement an den unterstützten geografischen Standorten des SaaS-Angebots befinden.

Die Azure Spring Apps Enterprise-Dienstebene unterstützt jetzt alle geografischen Standorte, die Azure Marketplace unterstützt. Weitere Informationen finden Sie unter Unterstützter geografischer Standort in Marketplace.

Sie können das Abrechnungskonto für Ihr Abonnement anzeigen, wenn Sie über Administratorzugriff verfügen. Weitere Informationen finden Sie unter Anzeigen der Abrechnungskonten.

Ich benötige VMware Spring Runtime-Unterstützung (nur Enterprise-Dienstebene)

Die Enterprise-Dienstebene verfügt über integrierten VMware Spring Runtime-Support, sodass Sie Supporttickets bei VMware erstellen können, wenn Sie der Meinung sind, dass Ihr Problem in den Zuständigkeitsbereich des VMware Spring Runtime-Supports fällt. Weitere Informationen zum VMware Spring Runtime-Support selbst finden Sie unter VMware Spring Runtime. Weitere Informationen zum Registrieren und Verwenden dieses Supportdiensts finden Sie im Abschnitt „Support“ in den FAQ zur Enterprise-Ebene von VMware. Erstellen Sie bei anderen Problemen ein Supportticket bei Microsoft.

Nächste Schritte