Je souhaite résoudre l'erreur ThrottlingException qui se produit lorsque j'écris de grandes quantités de données dans les tables Amazon Timestream pour LiveAnalytics.
Brève description
L'erreur « ThrottlingException » s'affiche lorsque les requêtes suivantes dépassent le quota dans un laps de temps donné :
- Requêtes
- Parameter Store, une fonctionnalité d'AWS Systems Manager, appels d’API
- Écritures actives dans le stockage magnétique
Résolution
Trop grand nombre de demandes de requête
Lorsque vous dépassez le quota de taux de demandes de requête, le message d'erreur suivant s'affiche :
« An error occurred (ThrottlingException) when calling the QueryOperation (reached max retries: 4): Request rate limit exceeded ».
Remarque : le quota de taux de demandes est dynamique et dépend de l'utilisation globale des ressources au niveau du service.
Si vos requêtes analysent plus de données que nécessaire et provoquent plusieurs appels numérotés, utilisez des noms de mesures ou des clés de partitionnement définies par le client pour filtrer les données inutiles. Par exemple, si vos requêtes analysent l'intégralité des données des tables, ajoutez des prédicats de temps afin que le moteur de requêtes supprime les analyses de données inutiles. Il est recommandé de configurer les collections de clés fréquemment utilisées en tant que clés de partition pour la table afin que Timestream pour LiveAnalytics puisse gérer efficacement le partitionnement interne.
Pour optimiser votre modèle de données sous-jacent, consultez la section Modélisation des données. Pour améliorer les performances et réduire la latence, consultez la section Requêtes.
Trop grand nombre de requêtes d'API Parameter Store
Remarque : si des erreurs surviennent lorsque vous exécutez des commandes de l'interface de la ligne de commande AWS (AWS CLI), consultez la section Résoudre des erreurs liées à l’AWS CLI. Vérifiez également que vous utilisez bien la version la plus récente de l'AWS CLI.
Lorsque vous dépassez le quota de requêtes d'API Parameter Store pour chaque compte AWS et chaque région AWS, l'un des messages d'erreur suivants s'affiche :
- « An error occurred (ThrottlingException) when calling the GetParameters operation (reached max retries: 4): Rate exceeded. »
- « An error occurred (ThrottlingException) when calling the GetParametersByPath operation (reached max retries: 4): Rate exceeded. »
- « An error occurred (ThrottlingException) when calling the DescribeParameters operation (reached max retries: 2): Rate exceeded. »
Pour réduire la fréquence des appels d'API Parameter Store, effectuez les opérations suivantes :
- Planifiez des appels d'API à intervalles échelonnés.
- Utilisez des API qui peuvent renvoyer plusieurs valeurs en un seul appel. Par exemple, GetParameters et GetParametersByPath peuvent récupérer jusqu’à 10 paramètres en un seul appel d'API.
- Implémentez de nouvelles tentatives d'erreur et le backoff exponentiel dans vos appels d'API. Pour éviter les appels d'API simultanés, intégrez la gigue dans la logique de nouvelle tentative. Pour répartir plus uniformément les pics de demandes à un rythme constant et réduire les incidents de limitation, ajoutez des intervalles aléatoires au backoff.
Vous pouvez modifier votre code pour inclure une pause d'une seconde entre les appels. L'AWS CLI inclut des paramètres de nouvelle tentative que vous pouvez modifier. Par exemple, vous pouvez régler le paramètre à 50 millisecondes avant la première tentative, 100 millisecondes avant la deuxième et 200 millisecondes avant la troisième.
Si vous utilisez AWS Lambda pour effectuer des appels d'API vers Parameter Store, implémentez la mise en cache des paramètres.
Pour implémenter le traitement par lots, divisez les grands jeux de données historiques en lots de plus petite taille et gérables. Traitez les données par blocs en fonction des quotas de requêtes d'écriture.
Trop grand nombre de requêtes d'écriture active dans le stockage magnétique
Lorsque vous dépassez le quota de 250 requêtes d'écriture active dans le stockage magnétique, le message d'erreur suivant s'affiche :
« An error occurred (ThrottlingException) when calling the WriteRecords operation (reached max retries: 5): Your magnetic store writes to Timestream for LiveAnalytics are throttled for this database. »
Remarque : lorsqu'une partition reçoit des données, elle peut rester active jusqu'à 6 heures après le processus d'ingestion.
Vous ne pouvez pas augmenter le quota 250.
Si la métrique ActiveMagneticStorePartitions dépasse 250, effectuez les opérations suivantes :
- Réduisez le nombre de séries de données différentes que votre application écrit simultanément.
- Réduisez la durée pendant laquelle les partitions magnétiques actives ingèrent simultanément des données. Par exemple, si les partitions ingèrent 24 heures de données en une seule opération, divisez les données en blocs de temps de plus petite taille.
- Utilisez les écritures par lots pour réduire le comportement de limitation potentiel.
Remarque : lorsqu'il existe une grande quantité de données, il est recommandé de créer des tâches de chargement par lots.
Si vous recevez toujours des erreurs de limitation magnétique et que la file d'attente de lettres mortes (DLQ) reçoit de nombreux enregistrements, localisez les tables soumises à cette limitation magnétique. Utilisez le stockage en mémoire pour les charges de travail d'ingestion à haut débit. Pour plus d'informations, consultez la section Gestion des limitations WriteRecords.