Share via


Risolvere i problemi comuni di Azure Spring Apps

Nota

Azure Spring Apps è il nuovo nome del servizio Azure Spring Cloud. Anche se il servizio ha un nuovo nome, il nome precedente verrà visualizzato in alcune posizioni per un po' mentre si lavora per aggiornare gli asset, ad esempio screenshot, video e diagrammi.

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".

Le associazioni di servizio possono anche causare errori di 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, passare a dell'istanza server parameters di MySQL e modificare il time_zone valore da SYSTEM a +0:00.

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

Quando si esegue il debug degli arresti anomali dell'applicazione, iniziare controllando lo stato di esecuzione e lo stato di individuazione dell'applicazione. A tale scopo, passare 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, passare alla sezione "Impossibile registrare l'applicazione".

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

    • tomcat.global.error:

      Tutte le eccezioni dell'applicazione Spring vengono 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 è definito, la quantità di memoria usata e di cui è stato eseguito il commit è sempre minore o uguale a max. Tuttavia, un'allocazione di memoria potrebbe non riuscire con un OutOfMemoryError messaggio se l'allocazione tenta di aumentare la memoria usata in modo che sia stato eseguito il commit, anche se usato ><= max è ancora true. In una situazione di questo tipo, provare ad aumentare le dimensioni massime dell'heap usando il -Xmx parametro .

    • jvm.memory.used:

      Quantità di memoria in byte attualmente usata dall'applicazione. Per un'applicazione Java di carico normale, questa serie di metriche costituisce un modello di sawtooth , in cui l'utilizzo della memoria aumenta costantemente e diminuisce in piccoli incrementi e improvvisamente scende molto, quindi il modello si ripete. Questa serie di metriche si verifica a causa di Garbage Collection all'interno della macchina virtuale Java, in cui le azioni di raccolta rappresentano le gocce nel modello sawtooth.

      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 spring-boot-starter-actuator dipendenza. Per altre informazioni, vedere la sezione Aggiungere la dipendenza dell'attuatore dell'app 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 altre informazioni su Azure 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 l'applicazione riscontra un utilizzo elevato della CPU o della memoria, una delle due cose è vera:

  • Tutte le istanze dell'app riscontrano un utilizzo elevato della CPU o della memoria.
  • Alcune istanze dell'app riscontrano un utilizzo elevato della CPU o della memoria.

Per verificare quale situazione si applica, seguire questa procedura:

  1. Passare a Metriche e quindi selezionare Percentuale utilizzo CPU del servizio o Memoria del servizio usata.
  2. Aggiungere un filtro App= per specificare l'applicazione da monitorare.
  3. Suddividere le metriche in base all'istanza.

Se tutte le istanze riscontrano un utilizzo elevato della CPU o della memoria, è necessario aumentare le prestazioni dell'applicazione o aumentare l'utilizzo della CPU o della memoria. Per altre informazioni, vedere Esercitazione: Ridimensionare un'applicazione in Azure Spring Apps.

Se alcune istanze riscontrano un utilizzo elevato della CPU o della memoria, controllare lo stato dell'istanza e il relativo stato di individuazione.

Per altre informazioni, vedere Metriche per App Azure Spring.

Se tutte le istanze sono in esecuzione, passare 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 i log e le metriche con le impostazioni di diagnostica.

Per altre informazioni su Azure 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 i 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 dal pacchetto dell'applicazione i servizi Config Server e Spring Service Registry incorporati.
  • 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 con 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 trattini. Il primo carattere deve essere una lettera. L'ultimo carattere deve essere una lettera o un numero. Il valore deve contenere da 2 a 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. È possibile trovare altri dettagli 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 usando l'interfaccia della riga di comando di Azure, l'interfaccia della riga di comando di Azure esegue periodicamente il polling dello stato di avanzamento della distribuzione e, alla fine, visualizza il risultato della distribuzione.

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 usando l'interfaccia della riga di comando di Azure, l'interfaccia della riga di comando di Azure esegue periodicamente il polling dello stato di avanzamento della distribuzione e, alla fine, visualizza il risultato della distribuzione.

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 l'applicazione sia inserita nel pacchetto 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 distribuire 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 usando l'interfaccia della riga di comando di Azure, l'interfaccia della riga di comando di Azure esegue periodicamente il polling dello stato di avanzamento della distribuzione e, alla fine, visualizza il risultato della distribuzione.

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 le dipendenze obbligatorie e l'individuazione del servizio non sono configurate correttamente nel file POM (Project Object Model). Dopo la configurazione, l'endpoint del server del Registro di sistema dei servizi predefinito viene inserito come variabile di ambiente con l'applicazione. Le applicazioni si registrano quindi con il server del Registro di sistema dei servizi e individuano altre applicazioni dipendenti.

Attendere almeno due minuti prima che un'istanza appena registrata inizi a ricevere il traffico.

Se si esegue la migrazione di una soluzione basata su Spring Cloud esistente in Azure, assicurarsi di rimuovere o disabilitare le istanze del Registro di sistema e del server di configurazione ad hoc per evitare conflitti con le istanze gestite fornite da Azure Spring Apps.

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

Per altre informazioni su Azure 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, assicurandosi che Azure comprenda 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 dell'attuatore Spring Boot abilitato, passare 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. Passare a https://<your-application-test-endpoint>/actuator/env e controllare 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. Passare alla portale di Azure, cercare la pagina di configurazione dell'applicazione ed eliminare questa variabile di ambiente: MANAGEMENT_ENDPOINTS_WEB_EXPOSURE_INCLUDE.

Non è possibile trovare metriche o log per l'applicazione

Passare 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à spring.jmx.enabled=truedi configurazione .

Verificare se la spring-boot-actuator dipendenza è 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 log dell'applicazione possono essere archiviati in un account di archiviazione ma non inviati ad Azure Log Analytics, verificare se l'area di lavoro è 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 prima di creare l'istanza Microsoft.SaaS 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 No plans are available for market '<Location>'.

  • "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.

    Passare 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

Nessun piano disponibile 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 "<Location>" 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, quindi è possibile aprire i ticket di supporto per VMware se si ritiene che il problema si trovi 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