Comment empêcher les erreurs ThrottlingException « rate exceeded » (taux dépassé) lorsque j'exécute des scripts de surveillance dans Amazon EMR ?

Dernière mise à jour : 07/10/2020

Pour surveiller mes clusters Amazon EMR, j'exécute des scripts qui lancent des appels API. Les scripts renvoient des erreurs semblables aux suivantes :

« Rate exceeded (Service: AmazonElasticMapReduce; Status Code: 400; Error Code: ThrottlingException; Request ID: e2b6191c-gkl5-269r-u735-cryyz251a837) » (Taux dépassé [Service : AmazonElasticmapReduce ; Code d'état : 400 ; Code d'erreur : ThrottlingException ; ID de la demande : e2b6191c-gkl5-269r-u735-cryyz251a837]) »

Brève description

Amazon EMR limite les appels API afin de maintenir la stabilité du système. Les exceptions de limitation se produisent généralement lorsque vous exécutez des scripts de surveillance à intervalles réguliers pour vérifier un paramètre des clusters. Voici un exemple : appeler DescribeCluster toutes les 60 secondes pour vérifier si le cluster a atteint l'état WAITING. Plus vous avez de clusters et plus vous exécutez de scripts de monitoring, plus vous serez susceptibles d'avoir des erreurs de limitation.

Résolution

Pour éviter les erreurs de limitation :

  • Réduisez la fréquence des appels API.
  • Échelonnez les intervalles des appels API pour qu'ils ne s'exécutent pas tous simultanément.
  • Implémentez un backoff exponentiel lorsque vous exécutez des appels API.

Cet article vous a-t-il été utile ?


Besoin d'aide pour une question technique ou de facturation ?