Limites et quotas

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 AudienceMember ou 2 000 ressources Event par 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 (HTTP 429) et que metadata.quota_limit indique 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_limit indique 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 :