Questa pagina descrive alcuni dei problemi e delle limitazioni che potresti riscontrare quando utilizzi Cloud Tasks.
Ordine di esecuzione
Ad eccezione delle attività pianificate per l'esecuzione futura, le code di attività sono completamente indipendenti dalla piattaforma per quanto riguarda l'ordine di esecuzione. Non vengono fornite garanzie o tentativi di esecuzione delle attività in un ordine particolare. Nello specifico, non è garantito che le attività precedenti vengano eseguite a meno che una coda non venga svuotata completamente. Esistono diversi casi comuni in cui le attività più recenti vengono eseguite prima di quelle meno recenti e i pattern che li riguardano possono cambiare senza preavviso.
Ritardo di esecuzione
Occasionalmente, le esecuzioni di Cloud Tasks potrebbero subire piccoli ritardi, in genere della durata di pochi minuti, a causa di riavvii interni del sistema. Le attività sono in ritardo, ma nessuna è persa. Si tratta di eventi a livello di sistema senza soluzioni alternative. Questi eventi non vengono registrati e la loro occorrenza non ha una cronologia impostata.
Esecuzione duplicata
Cloud Tasks mira a una semantica "esegui esattamente una volta" rigorosa. Tuttavia, nelle situazioni in cui è necessario trovare un compromesso di progettazione tra l'esecuzione garantita e l'esecuzione duplicata, il servizio propende per l'esecuzione garantita. Pertanto, si verifica un numero diverso da zero di esecuzioni duplicate. Gli sviluppatori devono adottare misure per garantire che l'esecuzione duplicata non sia un evento catastrofico. In produzione, più del 99,999% delle attività viene eseguito una sola volta.
Limitazioni delle risorse
La fonte più comune di backlog nelle code di elaborazione immediata è l'esaurimento delle risorse sulle istanze di destinazione. Se un utente tenta di eseguire 100 attività al secondo su istanze frontend che possono elaborare solo 10 richieste al secondo, si creerà un backlog. In genere questo problema si manifesta in due modi, entrambi risolvibili aumentando il numero di istanze che elaborano le richieste.
Errori di backoff e tariffe forzate
I server sovraccarichi possono iniziare a restituire errori di backoff: HTTP 503 (per le destinazioni App Engine) o HTTP 429 o 5xx (per le destinazioni esterne).
Cloud Tasks reagisce a questi errori rallentando l'esecuzione finché
non si interrompono. La limitazione del sistema impedisce il sovraccarico del worker. Nota
che le impostazioni specificate dall'utente non vengono modificate.
La limitazione del sistema si verifica nelle seguenti circostanze:
Cloud Tasks esegue il backoff su tutti gli errori. In genere viene utilizzato il backoff specificato in
rate limits. Tuttavia, se il worker restituisce HTTP429 Too Many Requests,503 Service Unavailableo il tasso di errori è elevato, Cloud Tasks utilizza una velocità di backoff più elevata. Viene considerato il nuovo tentativo specificato nell'intestazione della risposta HTTPRetry-After.Per evitare picchi di traffico e attenuare gli aumenti improvvisi del traffico, le distribuzioni aumentano lentamente quando la coda viene creata o è inattiva e se un numero elevato di attività diventa improvvisamente disponibile per la distribuzione (a causa di picchi di tassi di creazione di attività, della riattivazione della coda o di molte attività pianificate nello stesso momento).
Picchi di latenza e numero massimo di richieste simultanee
I server sovraccarichi possono anche rispondere con un forte aumento della latenza.
In questa situazione, le richieste rimangono aperte più a lungo. Poiché le code vengono eseguite con un numero massimo di attività simultanee, ciò può comportare l'impossibilità di eseguire le attività alla velocità prevista. L'aumento del
max_concurrent_dispatches
per le code interessate può essere utile nelle situazioni in cui il valore è stato impostato su un valore troppo
basso, introducendo un limite di frequenza artificiale. Tuttavia, aumentare
max_concurrent_dispatches difficilmente allevierà la pressione sulle risorse
sottostanti.
Problemi di aumento graduale con attività di lunga durata
Le code Cloud Tasks aumentano la loro produzione in parte in base al numero di attività inviate in precedenza. Se il gestore delle attività impiega un periodo di tempo considerevole, dell'ordine di minuti, per completare un'attività e restituire una risposta di successo, potrebbe verificarsi un ritardo nella velocità di aumento della coda.
Visualizzazione di più di 5000 attività
Se hai più di 5000 attività, alcune non sono visibili nella consoleGoogle Cloud . Utilizza gcloud CLI per visualizzare tutte le attività.
Ricreare una coda con lo stesso nome
Se elimini una coda dalla console Google Cloud , devi attendere 3 giorni prima di ricrearla con lo stesso nome. Questo periodo di attesa impedisce comportamenti imprevisti nelle attività che vengono eseguite al momento dell'eliminazione o che sono in attesa di esecuzione. Inoltre, evita errori di processo interni nel ciclo di eliminazione o ricreazione.
Destinazione non supportata quando utilizzi un perimetro sicuro
Se hai configurato un perimetro sicuro utilizzando i Controlli di servizio VPC, le richieste HTTP provenienti da un'esecuzione di Cloud Tasks vengono bloccate per le destinazioni non supportate e non andranno a buon fine con un codice di errore TARGET_TYPE_NOT_PERMITTED_FOR_VPC. Per saperne di più, consulta Configura un perimetro di servizio utilizzando i Controlli di servizio VPC.