Ce document explique comment résoudre les problèmes liés aux limites d'opérations simultanées dans Compute Engine, qui sont dus aux erreurs rateLimitExceeded
.
Pour identifier la cause d'une erreur rateLimitExceeded
, suivez les étapes de dépannage ci-dessous :
-
Dans la console Google Cloud , accédez à la page Explorateur de journaux.
Accéder à l'explorateur de journaux
Si vous utilisez la barre de recherche pour trouver cette page, sélectionnez le résultat dont le sous-titre est Logging.
Pour filtrer les journaux d'erreurs générés par l'API Compute Engine, saisissez la requête de journalisation suivante dans l'éditeur de requête.
log_id("cloudaudit.googleapis.com/activity") protoPayload.serviceName="compute.googleapis.com" protoPayload.response.error.code=403 protoPayload.status.message="Rate Limit Exceeded"
Les journaux d'erreurs filtrés doivent ressembler à ce qui suit :
"protoPayload":{ "@type": "type.googleapis.com/google.cloud.audit.AuditLog", "status": { "message": "Rate Limit Exceeded" } "serviceName": "compute.googleapis.com", "methodName": "METHOD_NAME", ... ... "response": { "error": { "message": "Rate Limit Exceeded", "code": 403, "errors": [ { "message": "Rate Limit Exceeded", "reason": "rateLimitExceeded", "domain": "usageLimits" } ] }, "@type": "type.googleapis.com/error" }, "resourceLocation": { "currentLocations": [ "LOCATION" ] }, ... ...
Les détails de l'erreur contiennent les valeurs suivantes :
METHOD_NAME
: nom de la méthode ou de l'opération du service. Pour les appels d'API, il s'agit du nom de la méthode API.LOCATION
: emplacement de la ressource. Il peut s'agir d'une région, d'une zone ou d'un emplacement mondial. Par exemple, les entréescurrentLocations: "us-central1"
(régional) oucurrentLocations: "us-central1-a"
indiquent que la région est"us-central1"
oucurrentLocations: "global"
.
Identifiez la valeur
methodName
associée dans le journal des erreurs. Ce nom représente la méthode d'API pour laquelle la limite de débit a été dépassée, par exemplev1.compute.instances.stop
.Identifiez l'emplacement concerné dans les journaux d'audit.
Vérifiez les quotas et les limites de
Concurrent operations per project
.Console
Dans la console Google Cloud , accédez à la page Quotas.
La page Quotas répertorie l'utilisation et les limites de quota de votre projet. Par défaut, la liste est triée de manière à afficher vos quotas les plus utilisés en premier, ce qui vous permet de visualiser les limites qui risquent d'être dépassées.
Pour filtrer la liste et consulter l'utilisation d'un quota spécifique et sa limite, sélectionnez Quota ou Métrique dans le champ Filtre.
Par exemple, sélectionnez le quota par son nom
Concurrent global operations per project operation type
ou sélectionnezService: Compute Engine API
,type: System Limit
et un mot cléconcurrent
pour lister tous les quotas d'opérations simultanées. Le filtrage fournit une liste des quotas simultanés. Dans cette liste, vous pouvez rechercher le quota concerné. Pour filtrer le quota selon une opération spécifique, ajoutez des dimensions à la requête de filtre et sélectionnez le type d'opération (affiché sous le nom methodName dans les journaux d'audit).Par exemple, sélectionnez
instances_stop
pour consulter l'utilisation du quota et sa limite pour l'opérationinstances.stop
.Pour filtrer le quota selon une région spécifique, ajoutez des Dimensions à la requête de filtre et sélectionnez la région (affichée sous le nom currentLocations dans les journaux d'audit).
Par exemple, sélectionnez
us-central1
pour consulter l'utilisation du quota et sa limite pour la régionus-central1
.Les filtres region et operation_type peuvent être utilisés ensemble pour afficher l'utilisation et la limite du quota pour une opération spécifique dans une région donnée.
gcloud
Vous pouvez utiliser la Google Cloud CLI pour consulter l'utilisation des quotas d'opérations simultanées et leurs limites.
Assurez-vous pour ce faire d'avoir installé le composant de commandes alpha. Si vous utilisez Cloud Shell pour interagir avec Google Cloud, Google Cloud CLI est installé automatiquement.
Pour afficher un quota d'opération, utilisez la commande suivante :
gcloud alpha services quota list \ --service=compute.googleapis.com \ --consumer=projects/PROJECT_ID
Remplacez
PROJECT_ID
par l'ID du projet pour lequel vous souhaitez consulter le quota.Ces quotas sont généralement regroupés en deux catégories :
- Global ou régional
- Par projet ou par projet et par type d'opération
Pour en savoir plus, consultez la section Groupes de quotas d'opérations simultanées.
Consultez le graphique d'utilisation du quota. Si l'utilisation est proche ou supérieure à la limite de quota pendant la période des journaux d'erreurs, cela signifie que la limite de quota ou du système est dépassée.
Pour afficher des graphiques indiquant l'utilisation actuelle et maximale, accédez au quota, puis cliquez sur
Surveillance. Vous devrez peut-être faire défiler le tableau jusqu'à la fin.Le graphique de surveillance confirmera la cause de l'erreur
rateLimitExceeded
, avec le quota/la limite spécifique. Si les valeurs actuelles sont supérieures aux valeurs limites, cela signifie que la limite du système est dépassée. Étant donné que les limites du système ne peuvent pas être modifiées, nous vous recommandons de suivre les bonnes pratiques suivantes pour réduire le nombre d'opérations simultanées.Voici quelques bonnes pratiques :
- Attendre la fin des opérations
- S'appuyer sur des codes d'erreur, et non sur des messages d'erreur
Réduire les tentatives côté client pour conserver les limites de débit d'API
Vous pouvez utiliser l'une des méthodes suivantes pour minimiser les tentatives :
- Éviter de recourir à l'attente active de courte durée
- Recourir à l'utilisation intensive avec parcimonie et de manière sélective
- Effectuer toujours vos appels dans une boucle de nouvelle tentative dotée d'un intervalle exponentiel entre les tentatives
- Utiliser un limiteur de débit côté client
- Répartir vos applications sur plusieurs projets