Modalità di gestione delle istanze

Le istanze sono le unità di calcolo che App Engine utilizza per eseguire scalare applicazione. In qualsiasi momento, l'applicazione può essere in esecuzione su una o più istanze, con le richieste distribuite su tutte.

Le istanze con scalabilità manuale dovrebbero essere eseguite a tempo indeterminato, ma non c'è alcuna garanzia di uptime, in quanto le istanze possono essere arrestate in anticipo a causa di errori o riavviate per gli aggiornamenti. Errori hardware o software che causano precoci interruzioni o riavvii frequenti possono avvenire senza preavviso e possono richiedere per la risoluzione.

Tutte le istanze flessibili possono essere riavviate su base settimanale se ci sono aggiornamenti disponibili. Questa pianificazione non è garantita. Durante i riavvii, gli aggiornamenti critici e compatibili con le versioni precedenti vengono implementati automaticamente il sistema operativo sottostante. L'immagine dell'applicazione rimarrà invariata tra i riavvii.

Controllo di integrità

App Engine invia richieste di controllo di integrità periodici per confermare che un'istanza sia in esecuzione e per verificare che sia stata avviata completamente e sia pronta ad accettare le richieste in arrivo. Per impostazione predefinita, questi controlli di integrità sono abilitate e sono note come controlli di integrità di suddivisione. Un'istanza che riceve un controllo di integrità deve rispondere entro un intervallo di tempo specificato.

Se devi estendere il comportamento predefinito dei controlli di integrità suddivisi al tuo puoi personalizzare il file app.yaml per configurare due tipi di controlli di integrità:

  • I controlli di attività rilevano se un'istanza VM e il relativo contenitore sono in esecuzione. Quando un'istanza VM non supera il controllo di attività, l'istanza viene è stato riavviato automaticamente. I controlli di attività potrebbero non riuscire a causa della configurazione soglie e intervalli di tempo oppure a causa dell'arresto anomalo del container.
  • I controlli di idoneità rilevano che un'istanza VM è pronta per accettare i messaggi in entrata richieste. Se un'istanza VM non supera il controllo di idoneità, significa che l'istanza VM non ha completato l'avvio e non è pronta a ricevere richieste. Quando l'istanza VM supera il controllo di idoneità e ha completato l'avvio, viene aggiunta al pool di istanze disponibili.

Scopri di più sul comportamento dei controlli di integrità periodici nella guida Migrazione a controlli di integrità periodici.

Quando l'istanza esegue questi controlli di integrità, i log di App Engine possono indicare che l'istanza è in uno dei seguenti stati:

  • Integro. L'istanza ha ricevuto le richieste di controllo di integrità e le sta elaborando. Uno stato integro indica che l'istanza ha più di 820 MB di spazio disponibile su disco e dovrebbe rispondere a un controllo di integrità con un codice di stato HTTP 200.
  • Insalubre. L'istanza ha rifiutato le richieste di controllo di integrità e non è riuscita a rispondere a un numero specificato di richieste di controllo di integrità consecutive. App Engine continua a inviare richieste di controllo di integrità riavvia l'istanza se un'istanza in stato non integro continua a non rispondere a un numero predeterminato di controlli di integrità consecutivi.
  • Lameduck. È stato pianificato l'arresto o il riavvio dell'istanza. Durante gli arresti, l'istanza termina le richieste in corso e rifiuta le nuove richieste. L'app restituisce un codice 503 per indicare che l'istanza è non è in grado di gestire le richieste. Prima che un'istanza venga arrestata o riavviata, l'esecuzione dello script di chiusura ha un periodo di tempo limitato e non può essere configurato più breve o più lunga.
  • App Lameduck. L'istanza è in fase di preparazione per gestire il traffico. L'app restituisce un codice 503 per indicare che l'istanza non è in grado di gestire le richieste. Quando un'istanza VM ha completato l'avvio ed è pronta per gestire il traffico, l'istanza diventerà integro ed elaborerà le richieste. Se un'istanza VM non si avvia in tempo, viene impostata come non funzionante e viene rimossa.

I comportamenti "Lameduck" e "app lameduck" fanno parte di un processo normale che a un'istanza VM.

Monitoraggio dell'utilizzo delle risorse

La pagina Istanze della console Google Cloud offre visibilità sulle prestazioni delle istanze. Puoi vedere l'utilizzo della memoria e della CPU di ogni istanza, il tempo di attività, il numero di richieste e altre statistiche. Puoi anche avviare manualmente la procedura di arresto di qualsiasi istanza.

NTP con l'ambiente flessibile di App Engine

L'ambiente flessibile di App Engine dispone di servizi NTP (Network Time Protocol) che utilizzano Google NTP server web. Tuttavia, i servizi NTP nell'ambiente flessibile non sono modificabili.

Località istanza

Le istanze vengono posizionate automaticamente per regione geografica in base impostazioni progetto.

Scalabilità dell'istanza

Quando un'applicazione è in esecuzione, le richieste in entrata vengono inoltrate a un'istanza esistente o nuova del servizio/della versione appropriata. Ogni versione attiva deve avere è in esecuzione almeno un'istanza e il tipo di scalabilità di un servizio/versione controlla il modo in cui vengono create istanze aggiuntive. Specifica il tipo di scalabilità nel file app.yaml dell'app. Per impostazione predefinita, l'app utilizza la scalabilità automatica, il che significa che App Engine gestirà il numero di istanze inattive.

Scalabilità automatica
La scalabilità automatica crea istanze in base al tasso di richieste, alle latenze di risposta e altre metriche dell'applicazione. Puoi specificare le soglie per ciascuno di questi e un numero minimo di istanze da mantenere sempre in esecuzione configurando l'elemento automatic_scaling.
Scalabilità manuale
La scalabilità manuale specifica il numero di istanze che vengono eseguite continuamente a prescindere dal livello di carico. Ciò permette attività come inizializzazioni complesse e applicazioni che si basano sullo stato della memoria nel tempo.

Gestisci servizi

A seconda del tipo di scalabilità dell'istanza, puoi gestire i servizi e le versioni nella console Google Cloud o in Google Cloud CLI.

Arresta una versione

Ogni versione in App Engine viene eseguita all'interno di una o più istanze, a seconda per gestire il volume di traffico che l'hai configurato.

Fai clic sulla scheda per istruzioni sull'utilizzo dello strumento di tua scelta:

Console

Per interrompere o disattivare una versione per il tuo servizio:

  1. Vai alla pagina Versioni di App Engine nella console Google Cloud:

    Vai a Versioni

  2. Seleziona una versione dalla tabella e fai clic su Interrompi.

gcloud

Esegui questo comando:

  gcloud app versions stop --service=SERVICE VERSION

Sostituisci:

  • SERVICE con il nome del servizio.
  • VERSION con il nome della versione del servizio.

Elimina un servizio

Ogni servizio può essere configurato per utilizzare runtime diversi e operare con impostazioni di prestazioni diverse. Non puoi eliminare il servizio predefinito. L'eliminazione di un elimina anche tutte le versioni correlate nel progetto.

Fai clic sulla scheda per istruzioni sull'utilizzo dello strumento che preferisci:

Console

Per eliminare un servizio:

  1. Vai alla pagina Servizi di App Engine nella console Google Cloud:

    Vai a Servizi

  2. Seleziona un servizio nella tabella e fai clic su Elimina.

gcloud

Esegui questo comando:

  gcloud app services delete SERVICE

Sostituisci:

  • SERVICE con il nome del servizio.