Modalità di gestione delle istanze

Le istanze sono le unità di calcolo utilizzate da App Engine per eseguire automaticamente il scaling della tua applicazione. In qualsiasi momento, l'applicazione può essere in esecuzione su una o più istanze, con le richieste distribuite su tutte.

Le istanze con la scalabilità manuale dovrebbero funzionare a tempo indeterminato, ma non è garantito il tempo di attività poiché le istanze possono essere interrotte in anticipo a causa di errori o riavviate per gli aggiornamenti. Gli arresti anomali o i riavvii frequenti causati da guasti hardware o software possono verificarsi senza preavviso e possono richiedere molto tempo per essere risolti.

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

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 abilitati e sono noti come controlli di integrità periodici. 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 alla tua applicazione, 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à, viene riavviata automaticamente. I controlli di attività possono non riuscire a causa delle soglie e degli intervalli di tempo configurati o a causa dell'arresto anomalo del contenitore.
  • I controlli di idoneità rilevano che un'istanza VM è pronta ad accettare le richieste in entrata. 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 controllo 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:

  • Salutare. 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 su disco disponibile e deve rispondere a un controllo di integrità con un codice di stato HTTP 200.
  • Non salutare. 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à e riavvia l'istanza se un'istanza non integra 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 completa 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, lo script di shutdown ha un periodo di tempo limitato per l'esecuzione e non può essere configurato per essere più breve o più lungo.
  • App inutilizzata. L'istanza è in fase di preparazione per la pubblicazione del traffico. L'app restituisce un codice 503 per indicare che l'istanza non è in grado di gestire le richieste. Quando l'avvio di un'istanza VM è stato completato ed è pronta per gestire il traffico, l'istanza diventa in stato di integrità ed elabora le richieste. Se un'istanza VM non si avvia in tempo, viene impostata come non funzionante e viene rimossa.

Sia i comportamenti di ritiro sia quelli di ritiro delle app fanno parte di un normale processo che viene eseguito dall'istanza VM.

Monitoraggio dell'utilizzo delle risorse

La pagina Istanze della console Google Cloud fornisce visibilità sul rendimento 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 i server NTP di Google. Tuttavia, i servizi NTP nell'ambiente flessibile non sono modificabili.

Località istanza

Le istanze vengono posizionate automaticamente in base alla regione geografica in base alle impostazioni del progetto.

Scalabilità delle istanze

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 almeno un'istanza in esecuzione e il tipo di scalabilità di un servizio/una versione controlla la modalità di creazione di 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 ad altre metriche dell'applicazione. Puoi specificare soglie per ciascuna di queste metriche, nonché un numero minimo di istanze da mantenere in esecuzione in ogni momento, configurando l'elemento automatic_scaling.
Scalabilità manuale
La scalabilità manuale specifica il numero di istanze in esecuzione continua indipendentemente dal livello di carico. Ciò consente 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.

Interrompere una versione

Ogni versione in App Engine viene eseguita in una o più istanze, a seconda della quantità di traffico che hai configurato per la gestione.

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

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

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 servizio comporta anche l'eliminazione di tutte le relative versioni 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 dalla tabella e fai clic su Elimina.

gcloud

Esegui questo comando:

  gcloud app services delete SERVICE

Sostituisci:

  • SERVICE con il nome del servizio.