Modalità di gestione delle istanze

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

Le istanze con scalabilità manuale e di base dovrebbero essere eseguite a tempo indeterminato, ma non vi è alcuna garanzia di uptime. Gli errori hardware o software che causano la chiusura anticipata o riavvii frequenti possono verificarsi senza avvisi e possono richiedere tempo sufficiente per la risoluzione.

Tutte le istanze flessibili vengono riavviate ogni settimana. 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 per tutti i riavvii.

Controllo di integrità

App Engine invia richieste di controllo di integrità periodiche per confermare che un'istanza è in esecuzione e per verificare che un'istanza sia completamente avviata e pronta per accettare richieste in entrata. Per impostazione predefinita, questi controlli di integrità sono attivi e 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 il comportamento predefinito dei controlli di integrità suddivisi per la tua applicazione, 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 durata, l'istanza viene riavviata automaticamente. I controlli di uptime possono non andare a buon fine a causa delle soglie e degli intervalli di tempo configurati oppure di un 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 preparazione, significa che l'istanza VM non ha terminato l'avvio e non è pronta a ricevere richieste. Quando l'istanza VM supera il controllo di preparazione e ha completato l'avvio, viene aggiunta al pool di istanze disponibili.

Ulteriori informazioni sui comportamenti suddivisi per controllo di integrità sono disponibili nella guida Migrazione a controlli di integrità suddivisi.

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

  • Stato integro. L'istanza ha ricevuto le richieste di controllo di integrità ed è in fase di elaborazione. Un'applicazione integra dovrebbe rispondere a un controllo di integrità con un codice di stato HTTP 200.
  • Stato non integro. L'istanza ha rifiutato le richieste di controllo di integrità e non è riuscita a rispondere a un numero specificato di richieste consecutive di controllo di integrità. 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. L'arresto o il riavvio dell'istanza è pianificato. 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, lo script di arresto ha un periodo di tempo limitato per l'esecuzione e non può essere configurato per essere più breve o più lungo.
  • App Lameduck. L'istanza sta preparando la pubblicazione del 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 intatta e elabora le richieste. Se un'istanza VM non si avvia in tempo, l'istanza passa a uno stato non integro e viene rimossa.

Sia i comportamenti lameduck che lameduck delle app fanno parte di un normale processo passato dall'istanza VM.

Monitoraggio dell'utilizzo delle risorse

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

NTP con 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 si trovano automaticamente per area 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 appropriato. Ogni versione attiva deve avere almeno un'istanza in esecuzione e il tipo di scalabilità di un servizio o una versione controlla la modalità di creazione di istanze aggiuntive. Le impostazioni di scalabilità sono configurate nel file app.yaml. Esistono due tipi di scalabilità:

Scalabilità automatica
La scalabilità automatica crea istanze in base a tasso di richieste, latenze di risposta e altre metriche relative alle applicazioni. Puoi specificare le soglie per ciascuna di queste metriche, nonché un numero minimo di istanze che devono rimanere sempre in esecuzione.
Scalabilità manuale
La scalabilità manuale specifica il numero di istanze che vengono eseguite continuamente, indipendentemente dal livello di carico. Ciò consente attività come inizializzazioni complesse e applicazioni che si basano sullo stato della memoria nel tempo.