Condividi tramite


Risolvere i problemi comuni di Azure Spring Apps

Nota

I piani Basic, Standard ed Enterprise saranno deprecati a partire dalla metà di marzo 2025, con un periodo di ritiro di 3 anni. È consigliabile eseguire la transizione ad App Azure Container. Per altre informazioni, vedere l'annuncio di ritiro di Azure Spring Apps.

Il piano Standard a consumo e dedicato sarà deprecato a partire dal 30 settembre 2024, con un arresto completo dopo sei mesi. È consigliabile eseguire la transizione ad App Azure Container. Per altre informazioni, vedere Eseguire la migrazione del consumo di Azure Spring Apps Standard e del piano dedicato alle app Azure Container.

Questo articolo si applica a:✅ Basic/Standard ✅ Enterprise

Questo articolo fornisce istruzioni per la risoluzione dei problemi di sviluppo di Azure Spring Apps. Per altre informazioni, vedere Domande frequenti su Azure Spring Apps.

Problemi di disponibilità, prestazioni e applicazione

Impossibile avviare l'applicazione

Quando l'applicazione non può essere avviata, è possibile che l'endpoint non possa essere connesso o che restituisca un valore 502 dopo alcuni tentativi.

Per la risoluzione dei problemi, esportare i log in Azure Log Analytics. La tabella per i log dell'applicazione Spring è denominata AppPlatformLogsforSpring. Per altre informazioni, vedere Analizzare i log e le metriche con le impostazioni di diagnostica.

Nei log potrebbe essere visualizzato il messaggio di errore seguente: org.springframework.context.ApplicationContextException: Unable to start web server

Il messaggio indica uno dei due problemi probabili:

  • Uno dei bean o una delle relative dipendenze risulta mancante.
  • Una delle proprietà bean risulta mancante o non valida. In questo caso, viene visualizzato "java.lang.IllegalArgumentException".

Anche i binding del servizio potrebbero generare errori nell'avvio dell'applicazione. Per eseguire query sui log, usare parole chiave correlate ai servizi associati. Si supponga, ad esempio, che l'applicazione abbia un'associazione a un'istanza di MySQL impostata su ora di sistema locale. Se l'applicazione non viene avviata, nel log potrebbe essere visualizzato il messaggio di errore seguente:

"java.sql.SQLException: il valore del fuso orario del server 'Coordinated Universal Time' non è riconosciuto o rappresenta più di un fuso orario".

Per correggere questo errore, andare a dell'istanza server parameters di MySQL e modificare il valore time_zone da SYSTEM a +0:00.

L'applicazione si arresta in modo anomalo o presenta un errore imprevisto

Per iniziare il debug degli arresti anomali, controllare lo stato di esecuzione e lo stato di individuazione dell'applicazione. A tale scopo, andare ad App nel portale di Azure per assicurarsi che gli stati di tutte le applicazioni siano In esecuzione e UP.

  • Se lo stato è In esecuzione ma lo stato di individuazione non è UP, andare alla sezione "Impossibile registrare l'applicazione ".

  • Se lo stato di individuazione è UP, andare a Metriche per verificare l'integrità dell'applicazione. Esaminare le metriche seguenti:

    • tomcat.global.error:

      Tutte le eccezioni delle applicazioni Spring sono conteggiate qui. Se questo numero è elevato, passare ad Azure Log Analytics per esaminare i log dell'applicazione.

    • jvm.memory.max:

      la quantità massima di memoria disponibile per l'applicazione. L'importo potrebbe non essere definito oppure potrebbe cambiare nel tempo, se definito. Se definita, la quantità di memoria usata e di cui è stato eseguito il commit è sempre minore o uguale al limite massimo. Tuttavia, un'allocazione di memoria potrebbe non riuscire con un messaggio OutOfMemoryError se l'allocazione tenta di aumentare la memoria usata in modo che usato> eseguito il commit, anche se usato < = max è ancora true. In una situazione di questo tipo, provare ad aumentare le dimensioni massime dell'heap tramite il parametro -Xmx.

    • jvm.memory.used:

      La quantità di memoria in byte attualmente usata dall'applicazione. Per un'applicazione Java di carico normale, questa serie di metriche forma un motivo a denti di sega, in cui l'utilizzo della memoria aumenta costantemente e diminuisce con incrementi di piccole dimensioni, quindi si riduce in modo significativo improvvisamente. Il modello poi si ripete. Questa serie di metriche è dovuta a Garbage Collection all'interno della macchina virtuale Java, in cui le azioni di raccolta rappresentano le depressioni nel motivo a denti di sega.

      Questa metrica è importante per identificare i problemi di memoria, ad esempio:

      • Un'esplosione di memoria all'inizio.
      • Allocazione di memoria di picco per un percorso logico specifico.
      • Perdite di memoria graduali.

    Per altre informazioni, vedere Metriche.

    Nota

    Queste metriche sono disponibili solo per le applicazioni Spring Boot. Per abilitare queste metriche, aggiungere la dipendenza spring-boot-starter-actuator. Per altre informazioni, vedere la sezione Aggiungere la dipendenza dell'attuatore e Gestire e monitorare l'app con l'attuatore Spring Boot.

  • Se l'applicazione non viene avviata, verificare che l'applicazione disponga di parametri jvm validi. Se la memoria jvm è impostata su un valore troppo elevato, nei log potrebbe essere visualizzato il messaggio di errore seguente:

    "La memoria necessaria 2728741K è maggiore di 2000M disponibile per l'allocazione"

Per ulteriori informazioni su Log Analytics, vedere Introduzione a Log Analytics in Monitoraggio di Azure.

Nell'applicazione si verifica un uso elevato della CPU o un uso elevato della memoria

Se per l'applicazione si rileva un utilizzo elevato di CPU o memoria, si è verificata una delle situazioni seguenti:

  • Tutte le istanze dell'app presentano un utilizzo elevato di CPU o memoria.
  • Alcune istanze dell'app presentano un utilizzo elevato di CPU o memoria.

Per verificare quale situazione si applica, seguire questa procedura:

  1. Andare a Metrichee quindi selezionare Percentuale di utilizzo CPU del servizio o Memoria del servizio usata.
  2. Aggiungere un filtro App= per specificare quale applicazione si desidera monitorare.
  3. Suddividere le metriche in base all'istanza.

Se l'utilizzo elevato di CPU o memoria si riscontra in tutte le istanze, è necessario aumentare le istanze dell'applicazione o aumentare la quantità di CPU o memoria utilizzata. Per altre informazioni, vedere Esercitazione: Ridimensionare un'applicazione in Azure Spring Apps.

Se l'utilizzo elevato di CPU o memoria viene riscontrato in alcune istanze, controllare lo stato dell'istanza e il relativo stato di individuazione.

Per altre informazioni, vedere Metriche per Azure Spring Apps.

Se tutte le istanze sono in esecuzione, andare ad Azure Log Analytics per eseguire query sui log applicazioni ed esaminare la logica del codice. Questa verifica consente di verificare se uno di essi potrebbe influire sul partizionamento della scalabilità. Per altre informazioni, vedere Analizzare log e metriche con le impostazioni di diagnostica.

Per ulteriori informazioni su Log Analytics, vedere Introduzione a Log Analytics in Monitoraggio di Azure. Eseguire query sui log usando il linguaggio di query Kusto.

Elenco di controllo per la distribuzione dell'applicazione Spring in Azure Spring Apps

Prima di eseguire l'onboarding dell'applicazione, assicurarsi che soddisfi i criteri seguenti:

  • L'applicazione può essere eseguita localmente con la versione del runtime Java specificata.
  • La configurazione dell'ambiente (CPU/RAM/istanze) soddisfa i requisiti minimi definiti dal provider di applicazioni.
  • Gli elementi di configurazione hanno valori previsti. Per altre informazioni, vedere Configurare un'istanza di Spring Cloud Config Server per il servizio. Per il piano Enterprise, vedere Usare il servizio di configurazione dell'applicazione.
  • Le variabili di ambiente hanno i valori previsti.
  • I parametri JVM hanno i valori previsti.
  • È consigliabile disabilitare o rimuovere l'istanza incorporata di Config Server e i servizi Spring Service Registry dal pacchetto dell'applicazione.
  • Se è necessario associare risorse di Azure tramite l'associazione al servizio, verificare che le risorse di destinazione siano in esecuzione.

Configurazione e gestione

Si è verificato un problema durante la creazione di un'istanza del servizio Azure Spring Apps

Quando si configura un'istanza del servizio Azure Spring Apps usando il portale di Azure, Azure Spring Apps esegue automaticamente la convalida.

Tuttavia, se si tenta di configurare l'istanza del servizio Azure Spring Apps usando l'interfaccia della riga di comando di Azure o il modello di Azure Resource Manager, verificare di soddisfare le condizioni seguenti:

  • La sottoscrizione è attiva.
  • Azure Spring Apps è disponibile nell'area in uso. Per altre informazioni, vedere Domande frequenti su Azure Spring Apps.
  • Il gruppo di risorse per l'istanza è già stato creato.
  • Il nome della risorsa è conforme alla regola di denominazione. Il nome deve contenere solo lettere minuscole, numeri e segni meno. Il primo carattere deve essere una lettera. L'ultimo carattere deve essere una lettera o un numero. Il valore deve avere una lunghezza compresa tra 2 e 32 caratteri.

Se si vuole configurare l'istanza del servizio Azure Spring Apps usando il modello di Resource Manager, vedere comprendere prima la struttura e la sintassi dei modelli di Azure Resource Manager.

Il nome dell'istanza del servizio Azure Spring Apps viene usato per richiedere un nome di sottodominio in azuremicroservices.io, quindi l'installazione non riesce se il nome è in conflitto con uno esistente. Altri dettagli potrebbero essere disponibili nei log attività.

Non è possibile distribuire un'app .NET Core

Non è possibile caricare un file .zip per un'app .NET Core Steeltoe usando il portale di Azure o il modello di Resource Manager.

Quando si distribuisce il pacchetto dell'applicazione tramite l'interfaccia della riga di comando di Azure, la suddetta esegue periodicamente il polling dello stato di avanzamento della distribuzione e al termine visualizza il risultato.

Assicurarsi che l'applicazione sia inserita nel pacchetto nel formato di file .zip corretto. Se il pacchetto non è corretto, il processo smette di rispondere o viene visualizzato un messaggio di errore.

Non è possibile distribuire un pacchetto JAR

Non è possibile caricare il file di archivio Java (JAR)/pacchetto di origine usando il portale di Azure o il modello di Resource Manager.

Quando si distribuisce il pacchetto dell'applicazione tramite l'interfaccia della riga di comando di Azure, la suddetta esegue periodicamente il polling dello stato di avanzamento della distribuzione e al termine visualizza il risultato.

Se il polling viene interrotto, è comunque possibile usare il comando seguente per recuperare i log di distribuzione:

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

Assicurarsi che il pacchetto dell'applicazione sia nel formato JAR eseguibile corretto. Se il pacchetto non è corretto, viene visualizzato un messaggio di errore simile all'esempio seguente: Error: Invalid or corrupt jarfile /jar/11111111-1111-1111-1111-111111111111.

Non è possibile eseguire la distribuzione di un pacchetto di origine

Non è possibile caricare il pacchetto JAR/source usando il portale di Azure o il modello di Resource Manager.

Quando si distribuisce il pacchetto dell'applicazione tramite l'interfaccia della riga di comando di Azure, la suddetta esegue periodicamente il polling dello stato di avanzamento della distribuzione e al termine visualizza il risultato.

Se il polling viene interrotto, è comunque possibile usare il comando seguente per recuperare i log di progettazione e distribuzione:

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

Tuttavia, un'istanza del servizio Azure Spring Apps può attivare un solo processo di compilazione per un pacchetto di origine contemporaneamente. Per altre informazioni, vedere Distribuire un'applicazione e Configurare un ambiente di gestione temporanea in Azure Spring Apps.

Non è possibile registrare l'applicazione

Nella maggior parte dei casi, questa situazione si verifica quando Dipendenze obbligatorie e Individuazione del servizio non sono configurate correttamente nel file Project Object Model (POM). Una volta configurato, l'endpoint del server Service Registry incorporato è inserito come variabile di ambiente con l'applicazione. Le applicazioni possono quindi registrarsi con il server Service Registry e individuare altre applicazioni dipendenti.

Prima che l'istanza appena registrata inizi a ricevere traffico bisognerà attendere almeno due minuti.

Se si esegue la migrazione di una soluzione basata su Spring Cloud esistente ad Azure, verificare di rimuovere o disattivare le istanze ad hoc di Service Registry e Config Server per evitare conflitti con le istanze gestite fornite da Azure Spring Apps.

È anche possibile controllare i log del client Service Registry in Azure Log Analytics. Per altre informazioni, vedere Analizzare log e metriche con le impostazioni di diagnostica

Per ulteriori informazioni su Log Analytics, vedere Introduzione a Log Analytics in Monitoraggio di Azure. Eseguire query sui log usando il linguaggio di query Kusto.

Si vuole esaminare le variabili di ambiente dell'applicazione

Le variabili di ambiente informano il framework di Azure Spring Apps, assicurando che Azure possa comprendere dove e come configurare i servizi che costituiscono l'applicazione. Assicurare la correttezza delle variabili di ambiente è un primo passaggio necessario nella risoluzione dei potenziali problemi. È possibile usare l'endpoint di Spring Boot Actuator per esaminare le variabili di ambiente.

Avviso

Questa procedura espone le variabili di ambiente usando l'endpoint di test. Non continuare se l'endpoint di test è accessibile pubblicamente o se è stato assegnato un nome di dominio all'applicazione.

  1. Vai a https://<your-application-test-endpoint>/actuator/health.

    Una risposta simile a {"status":"UP"} indica che l'endpoint è stato abilitato. Se la risposta è negativa, includere la dipendenza seguente nel file POM.xml:

    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-actuator</artifactId>
    </dependency>
    
  2. Con l'endpoint di Spring Boot Actuator abilitato, andare al portale di Azure e cercare la pagina di configurazione dell'applicazione. Aggiungere una variabile di ambiente con il nome MANAGEMENT_ENDPOINTS_WEB_EXPOSURE_INCLUDE e il valore *.

  3. Riavviare l'applicazione.

  4. Andare a https://<your-application-test-endpoint>/actuator/env ed esaminare la risposta. La cartella dovrebbe avere un aspetto simile a questo:

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

Cercare il nodo figlio denominato systemEnvironment. Questo nodo contiene le variabili di ambiente dell'applicazione.

Importante

Ricordarsi di annullare l'esposizione delle variabili di ambiente prima di rendere l'applicazione accessibile al pubblico. Andare al portale di Azure, cercare la pagina di configurazione dell'applicazione ed eliminare la variabile di ambiente: MANAGEMENT_ENDPOINTS_WEB_EXPOSURE_INCLUDE.

Non è possibile trovare metriche o registri applicazione

Andare ad App per assicurarsi che gli stati dell'applicazione siano In esecuzione e UP.

Verificare se JMX è abilitato nel pacchetto dell'applicazione. Questa funzionalità può essere abilitata con la proprietà di configurazione spring.jmx.enabled=true.

Verificare se la dipendenza spring-boot-actuator è abilitata nel pacchetto dell'applicazione e che venga avviata correttamente.

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

Se i registri applicazioni possono essere archiviati in un account di archiviazione ma non inviati ad Azure Log Analytics, verificare che l'area di lavoro sia stata configurata correttamente. Per altre informazioni, vedere Creare un'area di lavoro Log Analytics. Tenere presente anche che il piano Basic non fornisce un contratto di servizio. Per altre informazioni, vedere Contratti di servizio (SLA) per i servizi online.

Piano Enterprise

Errore 112039: Impossibile acquistare in Azure Marketplace

La creazione di un'istanza del piano Enterprise di Azure Spring Apps ha esito negativo e viene visualizzato il codice di errore "112039". Per altre informazioni, vedere il messaggio di errore dettagliato nell'elenco seguente:

  • "Non è stato possibile acquistare in Azure Marketplace perché il punto di ripristino Microsoft.SaaS non è registrato nella sottoscrizione di Azure.": il piano Enterprise di Azure Spring Apps acquista un'offerta SaaS da VMware.

    È necessario registrare il provider di risorse Microsoft.SaaS prima di creare l'istanza di Azure Spring Apps Enterprise. Vedere come registrare un provider di risorse.

  • "Impossibile caricare il prodotto catalogo vmware-inc.azure-spring-cloud-vmware-tanzu-2 nel mercato delle sottoscrizioni di Azure".: l'indirizzo dell'account di fatturazione della sottoscrizione di Azure non si trova nella posizione supportata.

    Per altre informazioni, vedere la sezione Nessun piano disponibile per il mercato '<Posizione>'.

  • "Non è stato possibile acquistare in Azure Marketplace a causa della verifica della firma nel contratto legale del Marketplace. Controllare che la sottoscrizione di Azure abbia accettato le condizioni vmware-inc.azure-spring-cloud-vmware-tanzu-2.asa-ent-hr-mtr": la sottoscrizione di Azure non ha firmato le condizioni per l'offerta e prevede l'acquisto.

    Andare alla sottoscrizione di Azure ed eseguire il comando seguente dell'interfaccia della riga di comando di Azure per accettare le condizioni:

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

    In caso contrario, è possibile contattare il team di supporto con le informazioni seguenti.

    • AZURE_TENANT_ID: ID tenant di Azure che ospita la sottoscrizione di Azure
    • AZURE_SUBSCRIPTION_ID: ID sottoscrizione di Azure usato per creare l'istanza di Azure Spring Apps
    • SPRING_CLOUD_NAME: nome dell'istanza non riuscita
    • ERROR_MESSAGE: messaggio di errore osservato

Non sono disponibili piani per il mercato '<Location>'

Quando si visita l'offerta SaaS Azure Spring Apps Enterprise in Azure Marketplace, è possibile che "Nessun piano sia disponibile per il mercato "<Posizione>" come illustrato nell'immagine seguente.

Screenshot del portale di Azure che mostra che non sono disponibili piani per il messaggio di errore di mercato.

Il piano Enterprise di Azure Spring Apps richiede ai clienti di pagare una licenza per i componenti Tanzu tramite un'offerta di Azure Marketplace. Per acquistare in Azure Marketplace, il paese o l'area geografica dell'account di fatturazione per la sottoscrizione di Azure deve trovarsi nelle località geografiche supportate dell'offerta SaaS.

Azure Spring Apps Enterprise supporta ora tutte le località geografiche supportate da Azure Marketplace. Vedere la sezione Località geografiche supportate di Disponibilità geografica e supporto valuta per il marketplace commerciale.

Se si ha accesso amministratore, è possibile visualizzare l'account di fatturazione per la sottoscrizione. Vedere visualizzare gli account di fatturazione.

È necessario il supporto di VMware Spring Runtime (solo piano Enterprise)

Il piano Enterprise include il Supporto predefinito di VMware Spring Runtime, per cui è possibile aprire ticket di supporto per VMware se si ritiene che il problema rientri nell'ambito del Supporto di VMware Spring Runtime. Per comprendere meglio il supporto di VMware Spring Runtime, vedere VMware Spring Runtime. Per altre informazioni sulla registrazione e sull'uso di questo servizio di supporto, vedere la sezione Supporto nelle Domande frequenti aziendali da VMware. Per eventuali altri problemi, aprire un ticket di supporto con Microsoft.

Passaggi successivi