Problemas e limitações

Esta página descreve alguns dos problemas e limitações que você pode encontrar ao usar o Cloud Tasks.

Ordem de execução

Com exceção das tarefas programadas para serem executadas no futuro, as filas de tarefas não seguem uma ordem de execução. Não há garantias ou melhores tentativas da execução das tarefas em qualquer ordem específica. Especificamente: não há garantias de que tarefas antigas serão executadas, a menos que uma fila está completamente vazio. Há vários casos comuns em que as tarefas mais recentes são executadas antes das tarefas mais antigas, e os padrões em torno delas podem mudar sem aviso prévio.

Execução duplicada

O Cloud Tasks visa uma semântica estrita de "executar exatamente uma vez". No entanto, em situações em que há um conflito entre a garantia de execução e a execução duplicada, o serviço favorece a primeira. Assim, o número de execuções duplicadas não é zero. Os desenvolvedores precisam tomar medidas para garantir que a execução duplicada não seja um evento catastrófico. Na produção, mais de 99,999% das tarefas são executadas apenas uma vez.

Limitações de recursos

A causa mais comum de atrasos em filas de processamento imediato é o esgotamento de recursos nas instâncias de destino. Se um usuário estiver tentando executar 100 tarefas por segundo em instâncias de front-end que só podem processar 10 solicitações por segundo, um backlog será gerado. Isso geralmente se manifesta em dois problemas, que normalmente podem ser resolvidos com o aumento do número de instâncias processando solicitações.

Erros de retirada e taxas impostas

Os servidores sobrecarregados podem começar a retornar erros de espera: HTTP 503 (para destinos do App Engine) ou HTTP 429 ou 5xx (para destinos externos). O Cloud Tasks reage a esses erros diminuindo a velocidade de execução até que os erros parem. Essa limitação do sistema impede a sobrecarga do worker. As configurações especificadas pelo usuário não são alteradas.

A limitação do sistema acontece nas seguintes circunstâncias:

  • O Cloud Tasks retoma todos os erros. Normalmente, a espera especificado em rate limits é usado. No entanto, se o worker retornar HTTP 429 Too Many Requests, 503 Service Unavailable ou a taxa de erros for alta, o Cloud Tasks usará uma taxa de espera mais alta. A nova tentativa especificada no HTTP Retry-After é considerado.

  • Para evitar picos de tráfego e reduzir aumentos repentinos, os envios são aumentados lentamente quando a fila é recém-criada ou está inativa e se um grande número de tarefas de repente fica disponível para envio (devido a picos nas taxas de criação de tarefas, à fila ser despausada ou a muitas tarefas que são programadas ao mesmo tempo).

Picos de latência e número máximo de tarefas concorrentes

Servidores sobrecarregados também podem responder com grandes aumentos de latência. Nessa situação, as solicitações permanecem abertas por mais tempo. As tarefas podem não ser executadas na taxa esperada porque as filas têm um número máximo de tarefas simultâneas. Aumentar o max_concurrent_tasks das filas afetadas pode ajudar em situações em que o valor for definido também baixa, o que introduz um limite de taxa artificial. Mas o aumento de max_concurrent_tasks é pouco provável que alivie a pressão de recursos subjacentes.

Aumento de problemas com tarefas de longa duração

As filas do Cloud Tasks aumentam a saída em parte com base no número de tarefas enviadas anteriormente. Se o gerenciador de tarefas demorar um período considerável (em minutos) para concluir uma tarefa e retornar uma resposta de sucesso, poderá haver um atraso na taxa de ampliação da fila.

Como visualizar mais de 5.000 tarefas

Se você tiver mais de 5.000 tarefas, algumas delas não estarão visíveis no console do Google Cloud. Use a CLI gcloud para conferir todas as tarefas.