Modalità di gestione delle istanze

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

Le istanze con scalabilità manuale dovrebbero essere eseguite all'infinito, ma non esiste alcuna garanzia di uptime poiché le istanze possono essere terminate in anticipo a causa di errori o riavviano per gli aggiornamenti. Errori hardware o software che causano una chiusura anticipata o riavvii frequenti 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 e compatibili con le versioni precedenti vengono implementati automaticamente nel sistema operativo sottostante. L'immagine dell'applicazione rimarrà invariata a tutti i riavvii.

Controllo di integrità

App Engine invia richieste di controllo di integrità periodiche per confermare che un'istanza sia in esecuzione e per verificare che un'istanza 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à divisi. 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à, 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 container.
  • 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 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 viene sottoposta a questi controlli di integrità, i log di App Engine possono indicare che si trova 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 deve 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 ha risposto a un numero specifico di richieste di controllo di integrità consecutive. App Engine continua a inviare richieste di controllo di integrità e riavvia l'istanza se un'istanza in stato non integro continua a non rispondere a un numero predeterminato di controlli di integrità consecutivi.
  • Lameduck. È 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 dell'arresto o del riavvio di un'istanza, l'esecuzione dello script di arresto ha un periodo di tempo limitato e non può essere configurato in modo che sia 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 a gestire il traffico, l'istanza diventa integro ed elaborerà le richieste. Se un'istanza VM non viene avviata in tempo, lo stato diventa non integro e viene rimossa.

I comportamenti Lameduck e App Lameduck fanno parte di un normale processo attraversato dall'istanza VM.

Monitoraggio dell'utilizzo delle risorse

La pagina Istanze della console Google Cloud offre visibilità sulle prestazioni delle istanze. Puoi vedere la memoria e l'utilizzo della CPU per ogni istanza, l'uptime, 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 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 per regione geografica in base alle impostazioni del progetto.

Scalabilità dell'istanza

Mentre un'applicazione è in esecuzione, le richieste in entrata vengono instradate a un'istanza esistente o nuova del servizio/versione appropriati. 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à nella app.yaml dell'app. Per impostazione predefinita, la tua 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 che vengono eseguite in modo continuo indipendentemente dal livello di carico. Ciò permette attività come inizializzazioni complesse e applicazioni che si basano sullo stato della memoria nel tempo.