Siga este guia para entender os limites e as cotas ao trabalhar com a API Data Manager.
Limites de projetos
Você precisa de um projeto do Google Cloud para usar a API Data Manager. O projeto do Google Cloud fornece o cliente OAuth e as credenciais que você usa para autenticar solicitações de API.
A API Data Manager aplica limites de taxa em cada projeto do Google Cloud, separados por serviço e tipo de operação (leitura versus mutação):
| Serviço | Operação | Solicitações por dia | Solicitações por minuto |
|---|---|---|---|
IngestionService |
Modificar (gravação) | 100.000 | 300 |
IngestionService |
Ler | 100.000 | 300 |
| Todos os outros serviços combinados | Modificar (gravação) | 50.000 | 300 |
| Todos os outros serviços combinados | Ler | 50.000 | 300 |
As solicitações que excedem os limites são rejeitadas com o erro RESOURCE_EXHAUSTED
e o status HTTP 429 Too Many Requests.
É possível assumir o controle do app e mitigar a limitação de taxa reduzindo o número de solicitações e limitando as QPS do lado do cliente. Também é possível configurar alertas de cota e monitoramento no console do Google Cloud para receber notificações antes que o aplicativo atinja os limites.
Nomes de cotas
Cada limite corresponde a um nome de limite de cota e uma métrica no
Google Cloud. Quando uma solicitação excede um limite, a API Data Manager
retorna o nome do limite de cota no payload de detalhes padrão
ErrorInfo em metadata.quota_limit:
| Nome do limite de cota | Serviço | Operação | Janela | Limite |
|---|---|---|---|---|
IngestionMutateRequestsPerDayPerProject |
IngestionService |
Modificar | Dia | 100.000 |
IngestionMutateRequestsPerMinutePerProject |
IngestionService |
Modificar | Minuto | 300 |
IngestionReadRequestsPerDayPerProject |
IngestionService |
Ler | Dia | 100.000 |
IngestionReadRequestsPerMinutePerProject |
IngestionService |
Ler | Minuto | 300 |
ManagementMutateRequestsPerDayPerProject |
Todos os outros serviços | Modificar | Dia | 50.000 |
ManagementMutateRequestsPerMinutePerProject |
Todos os outros serviços | Modificar | Minuto | 300 |
ManagementReadRequestsPerDayPerProject |
Todos os outros serviços | Ler | Dia | 50.000 |
ManagementReadRequestsPerMinutePerProject |
Todos os outros serviços | Ler | Minuto | 300 |
Inspecione metadata.quota_limit no payload ErrorInfo para
distinguir entre erros de limite diário e por minuto e determinar se é necessário
pausar temporariamente e tentar novamente com espera ou pausar até que a cota diária seja redefinida.
Para mais detalhes, consulte Erros de cota e limite de taxa.
Lidar com limites de taxa e simultaneidade
Para maximizar a capacidade de processamento sem exceder as cotas do projeto, siga estas diretrizes:
Agrupar registros por solicitação: inclua o máximo de registros possível em cada solicitação até os limites de solicitação (até 10.000 recursos
AudienceMemberou 2.000 recursosEventpor solicitação).Envie até 10 solicitações simultâneas: para reduzir o tempo total de ingestão sem exceder o limite de 300 solicitações por minuto, envie até 10 solicitações simultâneas para
IngestionService.Tente novamente os limites de taxa por minuto com espera: se uma solicitação falhar com
RESOURCE_EXHAUSTED(HTTP429) emetadata.quota_limitindicar um limite por minuto (comoIngestionMutateRequestsPerMinutePerProject), tente novamente usando a espera exponencial com jitter (por exemplo, aguardando 1s, 2s e 4s entre as tentativas).Pausa ao esgotar a cota diária: se
metadata.quota_limitindicar um limite diário (comoIngestionMutateRequestsPerDayPerProject), não tente novamente de imediato. Pause as solicitações até que a cota diária seja redefinida à meia-noite, horário do Pacífico.
Limites de solicitações
Confira os limites para solicitações específicas:
IngestAudienceMembersRequesteRemoveAudienceMembersRequest:10.000 recursos
AudienceMemberna listaaudience_members10 identificadores de usuário no
UserDatapara umAudienceMember10 recursos de
Destinationna listadestinations
RemoveAllAudienceMembersRequest:- 10 recursos de
Destinationna listadestinations
- 10 recursos de
-
2.000 recursos
Eventna listaevents10 identificadores de usuário no
UserDatapara umEvent10 recursos de
Destinationna listadestinations