Modalità di gestione delle istanze

Le istanze sono le unità di calcolo utilizzate da App Engine per scalare automaticamente l'applicazione. In qualsiasi momento, l'applicazione può essere in esecuzione su una o più istanze e le richieste vengono distribuite su tutte.

Le istanze con scalabilità manuale dovrebbero essere eseguite a tempo indeterminato, ma non vi è alcuna garanzia di uptime, in quanto le istanze possono essere arrestate in anticipo a causa di errori o riavviarle per gli aggiornamenti. Gli errori hardware o software che causano una terminazione anticipata o riavvii frequenti possono verificarsi senza avviso e la risoluzione può richiedere molto tempo.

Tutte le istanze flessibili possono essere riavviate su base settimanale, se sono disponibili aggiornamenti. Questa pianificazione non è garantita. Durante i riavvii, gli aggiornamenti critici e compatibili con le versioni precedenti vengono implementati automaticamente nel sistema operativo sottostante. L'immagine dell'applicazione rimarrà la stessa durante 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 completamente avviata e pronta ad accettare le richieste in entrata. Per impostazione predefinita, questi controlli di integrità sono abilitati e sono noti come controlli di integrità suddivisi. Un'istanza che riceve un controllo di integrità deve rispondere al controllo entro un intervallo di tempo specificato.

Se devi estendere alla tua applicazione il comportamento predefinito dei controlli di integrità suddivisi, puoi personalizzare il file app.yaml per configurare due tipi di controlli di integrità:

  • I controlli di attività rilevano che un'istanza VM e il relativo container sono in esecuzione. Quando un'istanza VM non supera il controllo di attività, l'istanza viene riavviata automaticamente. I controlli di attività potrebbero non riuscire a causa delle soglie e degli intervalli di tempo configurati oppure a causa dell'arresto anomalo del container.
  • I controlli di idoneità rilevano che un'istanza VM è pronta per accettare richieste in entrata. Se un'istanza VM non supera il controllo di idoneità, significa che l'istanza VM non ha terminato 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ù sui comportamenti dei controllo di integrità suddivisi nella guida Migrazione ai controlli di integrità suddivisi.

Mentre l'istanza passa attraverso questi controlli di integrità, i log di App Engine possono indicare che si trova in uno dei seguenti stati:

  • Salubre. 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 integro. L'istanza ha rifiutato le richieste di controllo di integrità e non ha risposto 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 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 le chiusure, l'istanza completa le richieste in corso e rifiuta quelle nuove. 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 arresto ha un periodo di tempo limitato per essere eseguito e non può essere configurato per essere più breve o più lungo.
  • 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, diventa integro ed elabora le richieste. Se un'istanza VM non viene avviata in tempo, diventa non integro e viene rimossa.

I comportamenti lameduck e lameduck delle app fanno parte di un normale processo sottoposto all'istanza VM.

Monitoraggio dell'utilizzo delle risorse

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

NTP con l'ambiente flessibile di App Engine

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

Località istanza

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

Scalabilità delle istanze

Mentre un'applicazione è in esecuzione, le richieste in entrata vengono instradate a un'istanza nuova o esistente del servizio/versione appropriata. Ogni versione attiva deve avere almeno un'istanza in esecuzione e il tipo di scalabilità di un servizio/versione controlla il modo in cui vengono create istanze aggiuntive. Puoi specificare il tipo di scalabilità nel app.yaml della tua 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 delle applicazioni. Puoi specificare le soglie per ciascuna di queste metriche, nonché 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 in esecuzione continua indipendentemente dal livello di carico. Ciò consente attività come inizializzazioni complesse e applicazioni che dipendono dallo stato della memoria nel tempo.