Suivez ce guide pour comprendre les limites et les quotas lorsque vous utilisez l'API Data Manager.
Limites des projets
Vous avez besoin d'un projet Google Cloud pour utiliser l'API Data Manager. Le projet Google Cloud fournit le client OAuth et les identifiants que vous utilisez pour authentifier les requêtes API.
L'API Data Manager applique des limites de débit à chaque projet Google Cloud, séparées par service et par type d'opération (lecture ou mutation) :
| Service | Opération | Requêtes par jour | Requêtes par minute |
|---|---|---|---|
IngestionService |
Mutate (écriture) | 100 000 | 300 |
IngestionService |
Lecture | 100 000 | 300 |
| Tous les autres services combinés | Mutate (écriture) | 50 000 | 300 |
| Tous les autres services combinés | Lecture | 50 000 | 300 |
Les requêtes qui dépassent les limites sont rejetées avec l'erreur RESOURCE_EXHAUSTED et l'état HTTP 429 Too Many Requests.
Vous pouvez prendre le contrôle de votre application et atténuer les limites de débit en réduisant activement le nombre de requêtes et en limitant le nombre de RPS côté client. Vous pouvez également configurer des alertes de quota et une surveillance dans la console Google Cloud pour recevoir des notifications avant que votre application n'atteigne ses limites.
Noms des quotas
Chaque limite correspond à un nom de limite de quota et à une métrique dans Google Cloud. Lorsqu'une requête dépasse une limite, l'API Data Manager renvoie le nom de la limite de quota dans la charge utile de détails standard ErrorInfo sous metadata.quota_limit :
| Nom de la limite de quota | Service | Opération | Fenêtre | Limite |
|---|---|---|---|---|
IngestionMutateRequestsPerDayPerProject |
IngestionService |
Modification | Jour | 100 000 |
IngestionMutateRequestsPerMinutePerProject |
IngestionService |
Modification | Minute | 300 |
IngestionReadRequestsPerDayPerProject |
IngestionService |
Lecture | Jour | 100 000 |
IngestionReadRequestsPerMinutePerProject |
IngestionService |
Lecture | Minute | 300 |
ManagementMutateRequestsPerDayPerProject |
Tous les autres services | Modification | Jour | 50 000 |
ManagementMutateRequestsPerMinutePerProject |
Tous les autres services | Modification | Minute | 300 |
ManagementReadRequestsPerDayPerProject |
Tous les autres services | Lecture | Jour | 50 000 |
ManagementReadRequestsPerMinutePerProject |
Tous les autres services | Lecture | Minute | 300 |
Inspectez metadata.quota_limit dans la charge utile ErrorInfo pour distinguer les erreurs de limite quotidienne des erreurs de limite par minute, et déterminer s'il faut suspendre temporairement l'opération et réessayer avec un intervalle exponentiel, ou la suspendre jusqu'à la réinitialisation du quota quotidien.
Pour en savoir plus, consultez Erreurs de quota et de limitation du débit.
Gérer les limites de débit et la simultanéité
Pour maximiser le débit sans dépasser les quotas du projet, suivez ces consignes :
Regrouper les enregistrements par requête : incluez autant d'enregistrements que possible dans chaque requête, dans la limite des limites de requêtes (jusqu'à 10 000 ressources
AudienceMemberou 2 000 ressourcesEventpar requête).Envoyez jusqu'à 10 requêtes simultanées : pour réduire le temps d'ingestion total sans dépasser la limite de 300 requêtes par minute, envoyez jusqu'à 10 requêtes simultanées à
IngestionService.Réessayez les limites de débit par minute avec intervalle exponentiel entre les tentatives : si une requête échoue avec
RESOURCE_EXHAUSTED(HTTP429) et quemetadata.quota_limitindique une limite par minute (par exemple,IngestionMutateRequestsPerMinutePerProject), réessayez en utilisant un intervalle exponentiel entre les tentatives avec gigue (par exemple, en attendant 1 s, 2 s et 4 s entre les tentatives).Mettre en pause en cas d'épuisement du quota quotidien : si
metadata.quota_limitindique une limite quotidienne (par exemple,IngestionMutateRequestsPerDayPerProject), ne réessayez pas immédiatement. Mettez en pause les requêtes jusqu'à ce que le quota quotidien soit réinitialisé à minuit (heure du Pacifique).
Limites de requêtes
Voici les limites pour des requêtes spécifiques :
IngestAudienceMembersRequestetRemoveAudienceMembersRequest:AudienceMemberressources dans la listeaudience_members10 identifiants utilisateur dans le
UserDatapour unAudienceMember10 ressources
Destinationdans la listedestinations
RemoveAllAudienceMembersRequest:- 10 ressources
Destinationdans la listedestinations
- 10 ressources
-
2 000 ressources
Eventdans la listeevents10 identifiants utilisateur dans le
UserDatapour unEvent10 ressources
Destinationdans la listedestinations