Problemi e limitazioni

Quando utilizzi Cloud Tasks, potresti riscontrare i seguenti problemi e limitazioni:

Ordine di esecuzione

Ad eccezione delle attività pianificate per l'esecuzione in futuro, le code di attività sono completamente indipendenti dall'ordine di esecuzione. Non ci sono garanzie o tentativi di eseguire attività in un determinato ordine. Nello specifico, non è garantito che le attività precedenti vengano eseguite a meno che una coda non sia completamente vuota. Esistono alcuni casi comuni in cui le attività più recenti vengono eseguite prima delle attività meno recenti e i pattern circostanti possono cambiare senza preavviso.

Esecuzione duplicata

Cloud Tasks punta a una rigorosa semantica "esegui una sola volta". Tuttavia, nelle situazioni in cui è necessario scendere a compromessi tra esecuzione garantita ed esecuzione duplicata, il servizio preferisce l'esecuzione garantita. Di conseguenza, si verifica un numero diverso da zero di esecuzioni duplicate. Gli sviluppatori dovrebbero adottare misure per garantire che l'esecuzione duplicata non sia un evento catastrofico. In produzione, oltre il 99,999% delle attività viene eseguito una sola volta.

Limitazioni delle risorse

L'origine più comune di backlog nelle code di elaborazione immediata è l'esaurimento delle risorse sulle istanze di destinazione. Se un utente sta tentando di eseguire 100 attività al secondo su istanze di frontend che possono elaborare solo 10 richieste al secondo, verrà creato un backlog. In genere questo si manifesta in due modi, uno dei quali può essere generalmente risolto aumentando il numero di istanze che elaborano le richieste.

Errori di backoff e tariffe applicate

I server sovraccaricati possono iniziare a restituire errori di backoff sotto forma di codice di risposta HTTP 503. Cloud Tasks reagirà a questi errori rallentando l'esecuzione fino all'arresto degli errori.

Picchi di latenza e numero massimo di connessioni simultanee

I server sovraccaricati possono anche rispondere con ampi aumenti di latenza. In questa situazione, le richieste rimangono aperte più a lungo. Poiché le code vengono eseguite con il numero massimo di attività simultanee, le code potrebbero non essere in grado di eseguire le attività alla frequenza prevista. Aumentare il valore max_concurrent_tasks per le code interessate può essere utile in situazioni in cui il valore è stato impostato troppo basso, introducendo un limite di frequenza artificiale. È improbabile, però, che l'aumento di max_concurrent_tasks allevia la pressione sulle risorse.

Accelera i problemi con attività di lunga durata

Le code di Cloud Tasks aumentano l'output in parte in base al numero di attività inviate correttamente in precedenza. Se il gestore delle attività impiega molto tempo, nell'ordine dei minuti, per completare un'attività e restituire una risposta riuscita, potrebbe esserci un ritardo nella percentuale di aumento della coda.