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:
Vai alla pagina Versioni di App Engine nella console Google Cloud:
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:
Vai alla pagina Servizi di App Engine nella console Google Cloud:
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.