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 agendadas para execução futura, as filas de tarefas são que independe da plataforma em relação à 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 se a fila não estiver completamente vazia. Em alguns casos, as tarefas mais recentes são executadas antes das mais antigas, e os padrões relacionados 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 é necessário escolher uma compensação entre design e duplicação, o serviço prefere uma garantia execução. Assim, o número de execuções duplicadas não é zero. Os desenvolvedores devem 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 desacelerando a execução até que os erros são interrompidos. 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, o backoff especificado em rate limits é usado. Mas se o worker retornar HTTP 429 Too Many Requests, 503 Service Unavailable ou a taxa de erros for alta, o Cloud Tasks usa uma taxa de espera maior. A nova tentativa especificada no HTTP Retry-After é considerado.

  • Para evitar picos de tráfego e suavizar 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.