Problemi e limitazioni

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.

Esecuzione duplicata

Cloud Tasks mira a una semantica "execute exactly once" 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 limiti di frequenza forzati

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 al worker di sovraccaricarsi. Nota che le impostazioni specificate dall'utente non vengono modificate.

La limitazione del sistema si verifica nelle seguenti circostanze:

  • Cloud Tasks esegue il backoff per tutti gli errori. Normalmente viene utilizzato il backoff specificato in rate limits. Tuttavia, se il worker restituisce HTTP 429 Too Many Requests, 503 Service Unavailable o la percentuale di errori è elevata, Cloud Tasks utilizza una percentuale di backoff più elevata. Viene considerato il nuovo tentativo specificato nell'intestazione della risposta HTTP Retry-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 nelle velocità di creazione delle attività, della riattivazione della coda o di molte attività pianificate contemporaneamente).

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ò impedire alle code di eseguire le attività alla velocità prevista. L'aumento del max_concurrent_dispatches per le code interessate può essere utile nei casi in cui il valore è stato impostato su un valore troppo basso, introducendo un limite di frequenza artificiale. Tuttavia, l'aumento di 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 console Google 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.