In questa pagina viene descritto come creare e personalizzare una coda in modalità push e come per esaminare i contenuti di una coda.
Utilizzo di un file di configurazione delle code per creare code
Per elaborare un'attività, devi aggiungerla a una coda in modalità push. App Engine fornisce
coda in modalità push predefinita, denominata default
, che è configurata e
pronto per l'uso con le impostazioni predefinite. Se vuoi, puoi semplicemente aggiungere tutte le tue attività
alla coda predefinita, senza dover creare e configurare altre code.
Per aggiungere code o cambiare la configurazione predefinita, modifica il file di configurazione delle code per la tua applicazione, che caricherai in App Engine. Puoi creare fino a 100 code. Le code non possono essere create in modo dinamico.
Questo file di configurazione delle code definisce due code:
queue:
- name: queue-blue
target: v2.task-module
rate: 5/s
- name: queue-red
rate: 1/s
Per caricare il file:
gcloud app deploy queue.yaml
Tutte le attività aggiunte a queue-blue
vengono inviate al modulo di destinazione v2.task-module
.
La frequenza di aggiornamento di queue-red
cambia da 5/s a 1/s. Le attività saranno
sono stati rimossi in coda e inviati ai rispettivi obiettivi alla velocità di 1 attività al secondo.
Se elimini una coda, devi attendere circa 7 giorni prima di crearla una nuova coda con lo stesso nome.
Esistono molti altri parametri che possono essere aggiunti al file di configurazione personalizza il comportamento di una coda in modalità push. Per ulteriori informazioni, consulta riferimento al file di configurazione della coda.
Definizione della frequenza di elaborazione delle coda in modalità push
Puoi controllare la frequenza con cui le attività vengono elaborate in ciascuna delle tue code
la definizione di altre direttive, come
rate
,
bucket_size
,
e
max_concurrent_requests
La coda di attività utilizza i bucket token per
controllare la frequenza di esecuzione delle attività. Ogni coda denominata ha un token bucket
contiene token fino al limite massimo specificato da bucket_size
o a un massimo di
5 token se non specifichi la dimensione del bucket.
Ogni volta che l'applicazione esegue un'attività, un token viene rimosso dal bucket.
La tua app continua a elaborare le attività in coda fino all'esecuzione del bucket della coda
di token. App Engine riempie il bucket con nuovi token basati in modo continuo
su rate
che hai specificato per la coda.
Se la coda contiene attività da elaborare e il bucket della coda contiene token, App Engine elabora contemporaneamente tante attività quanti sono i token. Questo può portare a burst di elaborazione, consumo di risorse di sistema e concorrenza con richieste di pubblicazione da parte degli utenti.
Se vuoi impedire l'esecuzione di troppe attività contemporaneamente o impedire
contesa del datastore, utilizza max_concurrent_requests
.
L'esempio seguente mostra come impostare max_concurrent_requests
per limitare
attività e mostra anche come regolare le dimensioni e la frequenza dei bucket in base
le esigenze dell'applicazione e le risorse disponibili:
queue:
- name: queue-blue
rate: 20/s
bucket_size: 40
max_concurrent_requests: 10
Impostazione dei limiti di spazio di archiviazione per tutte le code
Puoi utilizzare il file di configurazione della coda per definire la quantità totale di spazio di archiviazione per i dati dell'attività
può consumare su tutte le code. Per definire il limite di spazio di archiviazione totale, includi una
elemento denominato total_storage_limit
al livello più alto:
# Set the total storage limit for all queues to 120MB
total_storage_limit: 120M
queue:
- name: queue-blue
rate: 35/s
Il valore è un numero seguito da un'unità: B
per byte, K
per kilobyte, M
per megabyte, G
per gigabyte, T
per terabyte. Ad esempio, 100K
specifica un limite di 100 kilobyte. Se l'aggiunta di un'attività
fa sì che la coda
se superi il limite di spazio di archiviazione, la chiamata per aggiungere l'attività non andrà a buon fine. Il limite predefinito
è di 500M
(500 megabyte) per le app gratuite. Per le app fatturate non c'è limite fino al giorno
di impostarne uno in modo esplicito. Puoi utilizzare questo limite per proteggere la tua app da un fork
bomba
errore di programmazione in cui ogni attività aggiunge più altre attività durante
dell'esecuzione.
Se la tua app riceve errori per quota insufficiente durante l'aggiunta attività, aumenta il limite di spazio di archiviazione totale. Se utilizzi questo di archiviazione, consigliamo vivamente di impostare un limite che corrisponda al tempo di archiviazione per diversi giorni diverse attività. In questo modo le code vengono temporaneamente sottoposto a backup e continua ad accettare nuove attività mentre si lavora al carico di lavoro restando al riparo da una forchetta bomba errore di programmazione.
Configurazione del numero massimo di richieste in parallelo
Puoi controllare la frequenza di elaborazione impostando
max_concurrent_requests
, che limita il numero di attività che possono essere eseguite
contemporaneamente.
Se la coda delle applicazioni ha una frequenza di 20/s e una dimensione del bucket di 40, le attività in che vengono eseguite a una velocità di 20/s e possono scoppiare brevemente fino a 40/s. Questi funzionano correttamente se la latenza dell'attività è relativamente bassa; Tuttavia, se la latenza aumenta significativamente, l'elaborazione simultanea in modo significativamente maggiore attività di machine learning. Questo carico di elaborazione aggiuntivo può consumare altre istanze e rallentare un'applicazione.
Ad esempio, supponiamo che la latenza normale delle attività sia di 0,3 secondi. In questo momento
latenza, elaborerai al massimo circa 40 attività contemporaneamente. Ma se la tua attività
la latenza aumenta a 5 secondi, potresti facilmente eseguire l'elaborazione di oltre 100 attività
contemporaneamente. Questo aumento forza l'applicazione a consumare più istanze per
elaborare le attività aggiuntive, causando un potenziale rallentamento dell'intera applicazione
che interferiscono con le richieste degli utenti. Puoi evitare questa possibilità impostando
max_concurrent_requests
a un valore più basso.
Ad esempio, se imposti max_concurrent_requests
su 10, la nostra
di esempio mantiene circa 20 attività al secondo quando la latenza è di 0,3 secondi.
Quando la latenza aumenta dopo 0,5 secondi, questa impostazione limita la
per garantire che non vengano eseguite più di 10 attività contemporaneamente.
queue:
# Set the max number of concurrent requests to 50
- name: optimize-queue
rate: 20/s
bucket_size: 40
max_concurrent_requests: 10
Monitoraggio delle code nella console Google Cloud
Nella console Google Cloud, vai alla pagina Cloud Tasks.
Tieni presente che se vai alla pagina Coda attività di App Engine, troverai saranno le istruzioni per arrivare alla pagina di Cloud Tasks. Questo aggiornamento nella console Google Cloud non modifica il modo in cui le code delle attività personalizzata.
Abilita l'API Cloud Tasks.
Una volta nella pagina Cloud Tasks, vedrai un elenco di tutte delle code nell'applicazione. Facendo clic sul nome di una coda, la pagina Dettagli coda, che mostra tutte le attività nella coda selezionata.
Passaggi successivi
Scopri di più sulla creazione di attività.