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 een tijdje op sommige plaatsen terwijl we werken aan het bijwerken van assets zoals schermafbeeldingen, video's en diagrammen.

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

Dit artikel bevat instructies voor het oplossen van problemen met azure Spring Apps-ontwikkeling. Zie Veelgestelde vragen over Azure Spring Apps voor meer informatie.

Problemen met beschikbaarheid, prestaties en toepassingen

Mijn toepassing kan niet worden gestart (het eindpunt kan bijvoorbeeld niet worden verbonden of retourneert een 502 na een paar nieuwe pogingen)

Exporteer 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 kan worden 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 beans of een van de afhankelijkheden ontbreekt.
  • Een van de bean-eigenschappen ontbreekt of is ongeldig In dit geval wordt 'java.lang.IllegalArgumentException' waarschijnlijk weergegeven.

Servicebindingen kunnen ook leiden tot fouten 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 die is ingesteld op lokale systeemtijd. Als de toepassing niet kan worden gestart, wordt mogelijk het volgende foutbericht weergegeven in het logboek:

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

Als u deze fout wilt oplossen, gaat u naar de server parameters van uw 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 toepassingen vastloopt, begint u met het controleren van de actieve status en detectiestatus van de toepassing. Ga hiervoor naar App-beheer in de Azure Portal om ervoor te zorgen dat de statussen van alle toepassingen Actief en UP zijn.

  • 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:

    • TomcatErrorCount (tomcat.global.error):

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

    • AppMemoryMax (jvm.memory.max):

      De maximale hoeveelheid geheugen die beschikbaar is voor de toepassing. Het bedrag is mogelijk niet gedefinieerd of het kan in de loop van de tijd veranderen als het is gedefinieerd. Als dit is gedefinieerd, is de hoeveelheid gebruikt en vastgelegd geheugen altijd kleiner dan of gelijk aan het maximum. Een geheugentoewijzing kan echter mislukken met een OutOfMemoryError bericht als de toewijzing probeert het gebruikte geheugen zodanig te verhogen dat is gebruikt > vastgelegd, 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 .

    • AppMemoryUsed (jvm.memory.used):

      De hoeveelheid geheugen in bytes die momenteel door de toepassing wordt gebruikt. Voor een Java-toepassing met normale belasting vormt deze reeks metrische gegevens een zaagtandpatroon , waarbij het geheugengebruik in kleine stappen geleidelijk toe- en afneemt en plotseling veel afneemt, waarna het patroon zich opnieuw voordoet. Deze reeks metrische gegevens treedt op vanwege garbagecollection in de virtuele Java-machine, waarbij verzamelingsacties dalingen op het zaagtandpatroon vertegenwoordigen.

      Deze metrische gegevens zijn belangrijk voor het identificeren van geheugenproblemen, zoals:

      • Een geheugenexplosie aan het begin.
      • De piekgeheugentoewijzing voor een specifiek logicapad.
      • Geleidelijk geheugenlekken.

    Zie Metrische gegevens voor meer informatie.

  • Als de toepassing niet kan worden gestart, controleert u of de toepassing geldige jvm-parameters heeft. Als jvm-geheugen te hoog is ingesteld, kan het volgende foutbericht worden 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 ervaren een hoog CPU- of geheugengebruik.
  • Sommige app-exemplaren ervaren een hoog CPU- of geheugengebruik.

Ga als volgt te werk om te bepalen welke situatie van toepassing is:

  1. Ga naar Metrische gegevens en selecteer vervolgens Service-CPU-gebruikspercentage of Gebruikt servicegeheugen.
  2. Voeg een Filter App= 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 een query uit te voeren op uw toepassingslogboeken en controleert u de codelogica. Op deze manier kunt u zien of een van deze van invloed kan zijn op het partitioneren van de 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. Voer een query uit 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-runtimeversie.
  • 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 instellen voor uw service voor meer informatie. Zie Application Configuration Service gebruiken voor enterprise-lagen.
  • De omgevingsvariabelen hebben de verwachte waarden.
  • De JVM-parameters hebben de 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 de 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:

  • Het abonnement is actief.
  • De locatie wordt ondersteund door Azure Spring Apps.
  • De resourcegroep voor het exemplaar is al gemaakt.
  • De resourcenaam voldoet aan de naamgevingsregel. Het 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 2 tot 32 tekens bevatten.

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

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

Ik kan een .NET Core-app niet implementeren

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

Wanneer u uw toepassingspakket implementeert met behulp van de Azure CLI, controleert Azure CLI regelmatig de implementatievoortgang en wordt uiteindelijk 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 een JAR-pakket niet implementeren

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

Wanneer u uw toepassingspakket implementeert met behulp van de Azure CLI, controleert Azure CLI regelmatig de implementatievoortgang en wordt uiteindelijk 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 niet correct is verpakt, ontvangt u een foutbericht dat er ongeveer als volgt uitziet: Error: Invalid or corrupt jarfile /jar/38bc8ea1-a6bb-4736-8e93-e8f3b52c8714

Ik kan een bronpakket niet implementeren

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

Wanneer u uw toepassingspakket implementeert met behulp van de Azure CLI, controleert Azure CLI regelmatig de implementatievoortgang en wordt uiteindelijk 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>

Houd er echter rekening mee dat één Azure Spring Apps-service-exemplaar slechts één buildtaak voor één bronpakket tegelijk kan 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 juist 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 serviceregisterserver en detecteren andere afhankelijke toepassingen.

Wacht ten minste twee minuten voordat een nieuw geregistreerd exemplaar verkeer begint te ontvangen.

Als u een bestaande oplossing op basis van Spring Cloud naar Azure migreert, moet u ervoor zorgen dat uw ad-hocserviceregister - en configuratieserverexemplaren worden verwijderd (of uitgeschakeld) om conflicten met de beheerde exemplaren van Azure Spring Apps te voorkomen.

U kunt ook de clientlogboeken van het serviceregister 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. Voer een query uit op de logboeken met behulp van de Kusto-querytaal.

Ik wil de omgevingsvariabelen van mijn toepassing controleren

Omgevingsvariabelen informeren het Azure Spring Apps-framework, zodat Azure begrijpt waar en hoe de services waaruit uw toepassing bestaat, moeten worden geconfigureerd. 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

Deze procedure maakt uw omgevingsvariabelen beschikbaar 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 vergelijkbaar is met geeft aan {"status":"UP"} 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 Spring Boot Actuator-eindpunt is ingeschakeld, gaat u naar de 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 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 om te keren voordat u uw toepassing toegankelijk maakt voor het publiek. Ga naar de Azure Portal, zoek de configuratiepagina van uw toepassing en verwijder deze omgevingsvariabele: MANAGEMENT_ENDPOINTS_WEB_EXPOSURE_INCLUDE.

Ik kan geen metrische gegevens of logboeken vinden voor mijn toepassing

Ga naar App-beheer om ervoor te zorgen dat de toepassingsstatussen Actief en UP zijn.

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 kunnen worden verzonden, controleert u of u uw werkruimte correct hebt ingesteld. Als u een gratis laag van Azure Log Analytics gebruikt, moet u er rekening mee houden dat de gratis laag geen SLA (Service Level Agreement) biedt.

Enterprise-laag

Fout 112039: Kan niet kopen op Azure Marketplace

Het maken van een exemplaar van de Azure Spring Apps Enterprise-laag mislukt met foutcode '112039'. Raadpleeg het gedetailleerde foutbericht voor hieronder voor meer informatie:

  • 'Kan niet kopen op Azure Marketplace omdat de Microsoft.SaaS-RP niet is geregistreerd in het Azure-abonnement.' : Azure Spring Apps Enterprise-laag koopt een SaaS-aanbieding van 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 Azure-abonnementsmarkt.': het adres van uw factureringsaccount voor uw Azure-abonnement bevindt zich niet op de ondersteunde locatie.

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

  • 'Aankoop op Azure Marketplace is mislukt vanwege handtekeningverificatie in de juridische overeenkomst van Marketplace. Controleer of het Azure-abonnement akkoord is gegaan 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 aan te schaffen abonnement 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 abonnementen beschikbaar voor 'Locatie>' op de markt<

Wanneer u de SaaS-aanbieding Azure Spring Apps Enterprise-laag in de Azure Marketplace bezoekt, staat er mogelijk 'Er zijn geen plannen beschikbaar voor de markt '<Locatie>'' zoals in de volgende afbeelding.

Foutafbeelding Geen plannen beschikbaar

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

Azure Spring Apps Enterprise-laag ondersteunt nu alle geografische locaties die Azure Marketplace ondersteunt. Zie Door Marketplace ondersteunde geografische locatie.

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

Ik heb ondersteuning voor VMware Spring Runtime nodig (alleen enterprise-laag)

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

Volgende stappen