Veelvoorkomende problemen met Azure Spring Apps oplossen

Notitie

Azure Spring Apps is de nieuwe naam voor de Azure Spring Cloud-service. Hoewel de service een nieuwe naam heeft, ziet u de oude naam op sommige plaatsen terwijl we werken aan het bijwerken van assets, zoals schermopnamen, video's en diagrammen.

Dit artikel is van toepassing op: ✔️ Basic/Standard ✔️ Enterprise

Dit artikel bevat instructies voor het oplossen van problemen met het ontwikkelen van Azure Spring Apps. Zie de veelgestelde vragen over Azure Spring Apps voor meer informatie.

Problemen met beschikbaarheid, prestaties en toepassingen

Mijn toepassing kan niet worden gestart

Wanneer uw toepassing niet kan worden gestart, kan het zijn dat het eindpunt niet kan worden verbonden of dat er na een paar nieuwe pogingen een 502 wordt geretourneerd.

Voor het oplossen van problemen exporteert u de logboeken naar Azure Log Analytics. De tabel voor Spring-toepassingslogboeken heet AppPlatformLogsforSpring. Zie Logboeken en metrische gegevens analyseren met diagnostische instellingen voor meer informatie.

Het volgende foutbericht wordt mogelijk weergegeven in uw logboeken: org.springframework.context.ApplicationContextException: Unable to start web server

Het bericht geeft een van de twee waarschijnlijke problemen aan:

  • Een van de bonen of een van de afhankelijkheden ontbreekt.
  • Een van de bean-eigenschappen ontbreekt of is ongeldig In dit geval wordt 'java.lang.IllegalArgumentException' weergegeven.

Servicebindingen kunnen ook fouten veroorzaken bij het starten van toepassingen. Als u een query wilt uitvoeren op de logboeken, gebruikt u trefwoorden die zijn gerelateerd aan de afhankelijke services. Stel dat uw toepassing een binding heeft met een MySQL-exemplaar dat is ingesteld op lokale systeemtijd. Als de toepassing niet kan worden gestart, wordt het volgende foutbericht weergegeven in het logboek:

"java.sql.SQLException: De tijdzonewaarde 'Coordinated Universal Time' van de server wordt niet herkend of vertegenwoordigt meer dan één tijdzone."

Als u deze fout wilt oplossen, gaat u naar het server parameters MySQL-exemplaar en wijzigt u de time_zone waarde van SYSTEM in +0:00.

Mijn toepassing is vastgelopen of heeft een onverwachte fout gegenereerd

Wanneer u fouten in de toepassing vastloopt, controleert u eerst de actieve status en de detectiestatus van de toepassing. Hiervoor gaat u naar Apps in Azure Portal om ervoor te zorgen dat de statussen van alle toepassingen worden uitgevoerd en up.

  • Als de status Actief is, maar de detectiestatus niet UP is, gaat u naar de sectie Mijn toepassing kan niet worden geregistreerd.

  • Als de detectiestatus UP is, gaat u naar Metrische gegevens om de status van de toepassing te controleren. Controleer de volgende metrische gegevens:

    • tomcat.global.error:

      Alle Spring-toepassingsonderzondering worden hier geteld. Als dit aantal groot is, gaat u naar Azure Log Analytics om uw toepassingslogboeken te inspecteren.

    • jvm.memory.max:

      De maximale hoeveelheid geheugen die beschikbaar is voor de toepassing. Het bedrag is mogelijk niet gedefinieerd of kan na verloop van tijd worden gewijzigd als het is gedefinieerd. Als deze is gedefinieerd, is de hoeveelheid gebruikt en vastgelegd geheugen altijd kleiner dan of gelijk aan max. Een geheugentoewijzing kan echter mislukken met een OutOfMemoryError bericht als de toewijzing probeert het gebruikte geheugen te verhogen, zelfs >als gebruikt <= max nog steeds waar is. Probeer in een dergelijke situatie de maximale heap-grootte te verhogen met behulp van de -Xmx parameter.

    • jvm.memory.used:

      De hoeveelheid geheugen in bytes die momenteel door de toepassing worden gebruikt. Voor een normale Load Java-toepassing vormt deze metrische reeks een zaagtoothpatroon , waarbij het geheugengebruik geleidelijk toeneemt en afneemt in kleine stappen en plotseling veel afneemt en vervolgens het patroon terugkeert. Deze metrische reeks vindt plaats vanwege garbagecollection in de virtuele Java-machine, waarbij verzamelingsacties dalingen vertegenwoordigen op het zaagtandpatroon.

      Deze metrische waarde is belangrijk om geheugenproblemen te identificeren, zoals:

      • Een geheugenexplosie aan het begin.
      • De toewijzing van piekgeheugen voor een specifiek logicapad.
      • Geleidelijk geheugenlekken.

    Zie Metrische gegevens voor meer informatie.

    Notitie

    Deze metrische gegevens zijn alleen beschikbaar voor Spring Boot-toepassingen. Als u deze metrische gegevens wilt inschakelen, voegt u de spring-boot-starter-actuator afhankelijkheid toe. Zie de sectie Actuatorafhankelijkheid toevoegen van de app Beheren en bewaken met Spring Boot Actuator voor meer informatie.

  • Als de toepassing niet kan worden gestart, controleert u of de toepassing geldige jvm-parameters heeft. Als het jvm-geheugen te hoog is ingesteld, wordt het volgende foutbericht mogelijk weergegeven in uw logboeken:

    "vereist geheugen 2728741K is groter dan 2000M beschikbaar voor toewijzing"

Zie Aan de slag met Log Analytics in Azure Monitor voor meer informatie over Azure Log Analytics.

Mijn toepassing heeft een hoog CPU-gebruik of een hoog geheugengebruik

Als uw toepassing een hoog CPU- of geheugengebruik ondervindt, is een van de volgende twee dingen waar:

  • Alle app-exemplaren hebben een hoog CPU- of geheugengebruik.
  • Sommige app-exemplaren ervaren een hoog CPU- of geheugengebruik.

Gebruik de volgende stappen om te bepalen welke situatie van toepassing is:

  1. Ga naar Metrische gegevens en selecteer vervolgens Het CPU-gebruikspercentage van de service of het gebruikte servicegeheugen.
  2. Voeg een App= filter toe om op te geven welke toepassing u wilt bewaken.
  3. Splits de metrische gegevens op exemplaar.

Als alle exemplaren een hoog CPU- of geheugengebruik ondervinden , moet u de toepassing uitschalen of het CPU- of geheugengebruik omhoog schalen. Zie Zelfstudie: Een toepassing schalen in Azure Spring Apps voor meer informatie.

Als sommige exemplaren een hoog CPU- of geheugengebruik ondervinden , controleert u de status van het exemplaar en de detectiestatus.

Zie Metrische gegevens voor Azure Spring Apps voor meer informatie.

Als alle exemplaren actief zijn, gaat u naar Azure Log Analytics om query's uit te voeren op uw toepassingslogboeken en de codelogica te controleren. Met deze beoordeling kunt u zien of een van deze van invloed kan zijn op partitionering op schaal. Zie Logboeken en metrische gegevens analyseren met diagnostische instellingen voor meer informatie.

Zie Aan de slag met Log Analytics in Azure Monitor voor meer informatie over Azure Log Analytics. Query's uitvoeren op de logboeken met behulp van de Kusto-querytaal.

Controlelijst voor het implementeren van uw Spring-toepassing in Azure Spring Apps

Voordat u uw toepassing onboardt, moet u ervoor zorgen dat deze voldoet aan de volgende criteria:

  • De toepassing kan lokaal worden uitgevoerd met de opgegeven Java Runtime-versie.
  • De omgevingsconfiguratie (CPU/RAM/exemplaren) voldoet aan de minimale vereiste die is ingesteld door de toepassingsprovider.
  • De configuratie-items hebben hun verwachte waarden. Zie Een Spring Cloud Config Server-exemplaar voor uw service instellen voor meer informatie. Zie Toepassingsconfiguratieservice gebruiken voor het Enterprise-abonnement.
  • De omgevingsvariabelen hebben hun verwachte waarden.
  • De JVM-parameters hebben hun verwachte waarden.
  • We raden u aan de ingesloten Config Server - en Spring Service Registry-services uit het toepassingspakket uit te schakelen of te verwijderen.
  • Als Azure-resources moeten worden gebonden via servicebinding, moet u ervoor zorgen dat de doelresources actief zijn.

Configuratie en beheer

Er is een probleem opgetreden bij het maken van een Azure Spring Apps-service-exemplaar

Wanneer u een Azure Spring Apps-service-exemplaar instelt met behulp van Azure Portal, voert Azure Spring Apps de validatie voor u uit.

Maar als u het Azure Spring Apps-service-exemplaar probeert in te stellen met behulp van de Azure CLI of de Azure Resource Manager-sjabloon, controleert u of u aan de volgende voorwaarden voldoet:

  • Het abonnement is actief.
  • Azure Spring Apps is beschikbaar in de regio die u gebruikt. Zie de veelgestelde vragen over Azure Spring Apps voor meer informatie.
  • De resourcegroep voor het exemplaar is al gemaakt.
  • De resourcenaam voldoet aan de naamgevingsregel. De naam mag alleen kleine letters, cijfers en afbreekstreepjes bevatten. Het eerste teken moet een letter zijn. Het eerste teken moet een letter of cijfer zijn. De waarde moet tussen 2 en 32 tekens bevatten.

Als u het Azure Spring Apps-service-exemplaar wilt instellen met behulp van de Resource Manager-sjabloon, raadpleegt u eerst De structuur en syntaxis van Azure Resource Manager-sjablonen begrijpen.

De naam van het Azure Spring Apps-service-exemplaar wordt gebruikt voor het aanvragen van een subdomeinnaam onder azuremicroservices.io. De installatie mislukt dus als de naam conflicteert met een bestaande. Mogelijk vindt u meer informatie in de activiteitenlogboeken.

Ik kan geen .NET Core-app implementeren

U kunt geen .zip-bestand uploaden voor een .NET Core Steeltoe-app met behulp van Azure Portal of de Resource Manager-sjabloon.

Wanneer u uw toepassingspakket implementeert met behulp van de Azure CLI, controleert de Azure CLI regelmatig de voortgang van de implementatie. Uiteindelijk wordt het implementatieresultaat weergegeven.

Zorg ervoor dat uw toepassing is verpakt in de juiste .zip bestandsindeling. Als het niet correct is verpakt, reageert het proces niet meer of ontvangt u een foutbericht.

Ik kan geen JAR-pakket implementeren

U kunt het Java Archive-bestand (JAR)/bronpakket niet uploaden met behulp van Azure Portal of de Resource Manager-sjabloon.

Wanneer u uw toepassingspakket implementeert met behulp van de Azure CLI, controleert de Azure CLI regelmatig de voortgang van de implementatie. Uiteindelijk wordt het implementatieresultaat weergegeven.

Als de controles worden onderbroken, kunt u nog steeds de volgende opdrachten gebruiken om de implementatielogboeken op te halen:

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

Zorg ervoor dat uw toepassing is verpakt in de juiste uitvoerbare JAR-indeling. Als het pakket niet juist is verpakt, wordt er een foutbericht weergegeven dat lijkt op het volgende voorbeeld: Error: Invalid or corrupt jarfile /jar/38bc8ea1-a6bb-4736-8e93-e8f3b52c8714

Ik kan geen bronpakket implementeren

U kunt het JAR-/bronpakket niet uploaden met behulp van Azure Portal of de Resource Manager-sjabloon.

Wanneer u uw toepassingspakket implementeert met behulp van de Azure CLI, controleert de Azure CLI regelmatig de voortgang van de implementatie. Uiteindelijk wordt het implementatieresultaat weergegeven.

Als de controles worden onderbroken, kunt u nog steeds de volgende opdrachten gebruiken om de compilatie- en implementatielogboeken op te halen:

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

Eén Azure Spring Apps-service-exemplaar kan echter slechts één buildtaak voor één bronpakket tegelijk activeren. Zie Een toepassing implementeren en een faseringsomgeving instellen in Azure Spring Apps voor meer informatie.

Mijn toepassing kan niet worden geregistreerd

In de meeste gevallen treedt deze situatie op wanneer vereiste afhankelijkheden en servicedetectie niet correct zijn geconfigureerd in uw POM-bestand (Project Object Model). Zodra het is geconfigureerd, wordt het ingebouwde serviceregisterservereindpunt geïnjecteerd als een omgevingsvariabele met uw toepassing. Toepassingen registreren zich vervolgens bij de Service Registry-server en detecteren andere afhankelijke toepassingen.

Wacht ten minste twee minuten voordat een nieuw geregistreerd exemplaar verkeer ontvangt.

Als u een bestaande Spring Cloud-oplossing migreert naar Azure, moet u ervoor zorgen dat u uw ad-hocserviceregister en configuratieserverexemplaren verwijdert of uitschakelt om conflicten met de beheerde exemplaren van Azure Spring Apps te voorkomen.

U kunt ook de serviceregisterclientlogboeken controleren in Azure Log Analytics. Zie Logboeken en metrische gegevens analyseren met diagnostische instellingen voor meer informatie

Zie Aan de slag met Log Analytics in Azure Monitor voor meer informatie over Azure Log Analytics. Query's uitvoeren op de logboeken met behulp van de Kusto-querytaal.

Ik wil de omgevingsvariabelen van mijn toepassing inspecteren

Omgevingsvariabelen informeren het Azure Spring Apps-framework, zodat Azure begrijpt waar en hoe u de services configureert waaruit uw toepassing bestaat. Ervoor zorgen dat uw omgevingsvariabelen juist zijn, is een noodzakelijke eerste stap bij het oplossen van mogelijke problemen. U kunt het Spring Boot Actuator-eindpunt gebruiken om uw omgevingsvariabelen te controleren.

Waarschuwing

Met deze procedure worden uw omgevingsvariabelen weergegeven met behulp van uw testeindpunt. Ga niet verder als uw testeindpunt openbaar toegankelijk is of als u een domeinnaam aan uw toepassing hebt toegewezen.

  1. Ga naar https://<your-application-test-endpoint>/actuator/health.

    Een antwoord dat lijkt op {"status":"UP"} geeft aan dat het eindpunt is ingeschakeld. Als het antwoord negatief is, neemt u de volgende afhankelijkheid op in uw POM.xml-bestand :

    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-actuator</artifactId>
    </dependency>
    
  2. Als het Eindpunt van Spring Boot Actuator is ingeschakeld, gaat u naar Azure Portal en zoekt u naar de configuratiepagina van uw toepassing. Voeg een omgevingsvariabele toe met de naam MANAGEMENT_ENDPOINTS_WEB_EXPOSURE_INCLUDE en de waarde *.

  3. Start de toepassing opnieuw op.

  4. Ga naar https://<your-application-test-endpoint>/actuator/env het antwoord en inspecteer het antwoord. Dit ziet er als volgt uit:

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

Zoek naar het onderliggende knooppunt met de naam systemEnvironment. Dit knooppunt bevat de omgevingsvariabelen van uw toepassing.

Belangrijk

Vergeet niet om de blootstelling van uw omgevingsvariabelen ongedaan te maken voordat u uw toepassing toegankelijk maakt voor het publiek. Ga naar Azure Portal, zoek de configuratiepagina van uw toepassing en verwijder deze omgevingsvariabele: MANAGEMENT_ENDPOINTS_WEB_EXPOSURE_INCLUDE

Ik kan geen metrische gegevens of logboeken voor mijn toepassing vinden

Ga naar Apps om ervoor te zorgen dat de statussen van de toepassing actief zijn en UP.

Controleer of JMX is ingeschakeld in uw toepassingspakket. Deze functie kan worden ingeschakeld met de configuratie-eigenschap spring.jmx.enabled=true.

Controleer of de spring-boot-actuator afhankelijkheid is ingeschakeld in uw toepassingspakket en of deze is opgestart.

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

Als uw toepassingslogboeken kunnen worden gearchiveerd in een opslagaccount, maar niet naar Azure Log Analytics worden verzonden, controleert u of u uw werkruimte juist instelt. Zie Een Log Analytics-werkruimte maken voor meer informatie. Houd er ook rekening mee dat het Basic-plan geen SLA (Service Level Agreement) biedt. Zie Service Level Agreements (SLA) voor onlineservices voor meer informatie.

Enterprise-abonnement

Fout 112039: Kan niet aanschaffen op Azure Marketplace

Het maken van een Azure Spring Apps Enterprise-planexemplaren mislukt met foutcode '112039'. Raadpleeg het gedetailleerde foutbericht in de volgende lijst voor meer informatie:

  • 'Kan niet aanschaffen op Azure Marketplace omdat de Microsoft.SaaS-RP niet is geregistreerd in het Azure-abonnement': Azure Spring Apps Enterprise-abonnement koopt een SaaS-aanbieding bij VMware.

    U moet de Microsoft.SaaS resourceprovider registreren voordat u een Azure Spring Apps Enterprise-exemplaar maakt. Zie hoe u een resourceprovider registreert.

  • "Kan catalogusproduct vmware-inc.azure-spring-cloud-vmware-tanzu-2 niet laden in de markt van het Azure-abonnement.": het factuuraccountadres van uw Azure-abonnement bevindt zich niet op de ondersteunde locatie.

    Zie de sectie Geen plannen voor de markt '<Locatie>' voor meer informatie.

  • 'Kan niet aanschaffen op Azure Marketplace vanwege verificatie van handtekeningen in de juridische overeenkomst van Marketplace. Controleer of het Azure-abonnement akkoord gaat met de voorwaarden vmware-inc.azure-spring-cloud-vmware-tanzu-2.asa-ent-hr-mtr": Uw Azure-abonnement heeft de voorwaarden voor de aanbieding en het abonnement dat u wilt kopen niet ondertekend.

    Ga naar uw Azure-abonnement en voer de volgende Azure CLI-opdracht uit om akkoord te gaan met de voorwaarden:

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

    Als dat niet helpt, kunt u contact opnemen met het ondersteuningsteam met de volgende informatie.

    • AZURE_TENANT_ID: de Azure-tenant-id die als host fungeert voor het Azure-abonnement
    • AZURE_SUBSCRIPTION_ID: de Azure-abonnements-id die wordt gebruikt om het Azure Spring Apps-exemplaar te maken
    • SPRING_CLOUD_NAME: de naam van het mislukte exemplaar
    • ERROR_MESSAGE: het waargenomen foutbericht

Er zijn geen plannen beschikbaar voor de markt '<Locatie>'

Wanneer u de SaaS-aanbieding Azure Spring Apps Enterprise bezoekt in De Azure Marketplace, kan dit zeggen: 'Er zijn geen plannen beschikbaar voor de markt '<Locatie>', zoals in de volgende afbeelding.

Schermopname van Azure Portal waarin het foutbericht Geen abonnementen beschikbaar zijn voor marktfout.

Voor het Azure Spring Apps Enterprise-abonnement moeten klanten betalen voor een licentie voor Tanzu-onderdelen via een Azure Marketplace-aanbieding. Als u wilt kopen in Azure Marketplace, moet het land of de regio van het factureringsaccount voor uw Azure-abonnement zich in de ondersteunde geografische locaties van de SaaS-aanbieding bevinden.

Azure Spring Apps Enterprise ondersteunt nu alle geografische locaties die azure Marketplace ondersteunt. Zie ondersteunde geografische locatie van Marketplace.

U kunt de factureringsrekening voor uw abonnement bekijken als u beheerderstoegang hebt. Zie Factureringsaccounts weergeven.

Ik heb VMware Spring Runtime-ondersteuning nodig (alleen Enterprise-abonnement)

Het Enterprise-abonnement heeft ingebouwde VMware Spring Runtime-ondersteuning, zodat u ondersteuningstickets kunt openen voor VMware als u denkt dat uw probleem binnen het bereik van VMware Spring Runtime-ondersteuning valt. Zie de VMware Spring Runtime-ondersteuning voor VMware Voor meer informatie over VMware Spring Runtime zelf. Zie de sectie Ondersteuning in de veelgestelde vragen over ondernemingen van VMware voor meer informatie over het registreren en gebruiken van deze ondersteuningsservice. Open voor andere problemen een ondersteuningsticket bij Microsoft.

Volgende stappen