Le istanze sono le unità di computing che App Engine utilizza per scalare automaticamente la tua applicazione. In un determinato momento, l'applicazione può essere in esecuzione su una o più istanze, con le richieste distribuite su tutte.
Le istanze con scalabilità manuale devono essere eseguite a tempo indeterminato, ma non è garantita la disponibilità perché le istanze possono essere terminate in anticipo a causa di errori o riavviate per gli aggiornamenti. Gli errori hardware o software che causano la terminazione anticipata o i riavvii frequenti possono verificarsi senza preavviso e la loro risoluzione può richiedere un tempo considerevole.
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 durante i riavvii.
Controllo di integrità
App Engine invia richieste di controllo di integrità periodiche per verificare che un'istanza sia in esecuzione e che sia stata avviata completamente e sia pronta ad accettare le richieste in entrata. Per impostazione predefinita, questi controlli di integrità sono attivati 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à periodici alla tua
applicazione, puoi personalizzare il app.yaml file 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 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ù sui comportamenti dei controllo di integrità periodici nella guida Migrazione a controlli di integrità periodici.
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:
- In stato 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 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 integra continua a non rispondere a un numero predeterminato di controlli di integrità consecutivi.
- In fase di arresto. L'istanza è pianificata per essere arrestata o riavviata.
Durante gli arresti, l'istanza completa le richieste in corso e rifiuta le nuove richieste. L'app restituisce un codice
503per 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. - In fase di arresto dell'app. L'istanza si sta preparando a gestire il traffico. L'app restituisce un codice
503per 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, diventa integra ed elabora le richieste. Se un'istanza VM non si avvia in tempo, passa allo stato non integro e viene rimossa.
I comportamenti in fase di arresto e in fase di arresto dell'app fanno parte di un processo normale che l'istanza VM esegue.
Monitoraggio dell'utilizzo delle risorse
La pagina Istanze della Google Cloud console fornisce visibilità sul rendimento 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 dispone di servizi Network Time Protocol (NTP) 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 secondo le impostazioni progetto.
Scalabilità delle istanze
Durante l'esecuzione di un'applicazione, le richieste in entrata vengono indirizzate 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/di una versione controlla la creazione di istanze aggiuntive.
Specifichi il tipo di scalabilità in
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 dell'applicazione. 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 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 Google Cloud console o Google Cloud CLI.
Arresta una versione
Ogni versione di 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 visualizzare le istruzioni sull'utilizzo dello strumento che preferisci:
Console
Per arrestare o disattivare una versione del servizio:
Vai alla pagina Versioni di App Engine nella Google Cloud console:
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 tuo servizio.
- VERSION con il nome della versione del tuo servizio.
Elimina un servizio
Ogni servizio può essere configurato per utilizzare runtime diversi e per operare con impostazioni delle prestazioni diverse. Non puoi eliminare il servizio predefinito. Se elimini un servizio, vengono eliminate anche tutte le versioni associate nel tuo progetto.
Fai clic sulla scheda per visualizzare le istruzioni sull'utilizzo dello strumento che preferisci:
Console
Per eliminare un servizio:
Vai alla pagina Servizi di App Engine nella Google Cloud console:
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 tuo servizio.