Dificuldades e limitações comuns

É possível encontrar os seguintes problemas e limitações 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 da execução das tarefas em qualquer ordem específica. Especificamente, não há garantia 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 antigas, e os padrões relacionados mudam 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 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 retirada na forma do código de resposta HTTP 503. O Cloud Tasks reage diminuindo a velocidade de execução até que os erros parem. Isso pode ser observado no campo "taxa forçada" no Console do Cloud.

Ir para a página do Cloud Tasks

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 max_concurrent_tasks para as filas afetadas pode ajudar nas situações em que o valor foi definido como muito baixo, introduzindo um limite de taxa artificial. No entanto, aumentar o max_concurrent_tasks provavelmente não diminuirá a pressão de recurso subjacente.