Comment résoudre les problèmes de latence élevée sur une table DynamoDB ?

Date de la dernière mise à jour : 16/06/2020

Je constate une augmentation du temps de réponse aux demandes Amazon DynamoDB. D'où vient le problème et comment le résoudre ?

Solution

Lors de l'analyse de la métrique Amazon CloudWatch SuccessfulRequestLatency, il est recommandé de vérifier la latence moyenne. Les pics occasionnels de latence ne sont pas une source de préoccupation. Toutefois, si la latence moyenne est élevée, il peut exister un problème sous-jacent que vous devez résoudre.

Pour obtenir la valeur de latence de tous les appels DynamoDB, activez la journalisation des métriques de latence pour le kit SDK AWS. Ces métriques peuvent vous aider à identifier la source de la latence accrue. Notez que les métriques de latence DynamoDB mesurent l'activité au sein de DynamoDB ou Amazon DynamoDB Streams uniquement. Les métriques de latence ne prennent pas en compte la latence réseau ni l'activité côté client.

Remarque : pour la plupart des opérations atomiques, telles que GetItem et PutItem, vous pouvez vous attendre à une latence moyenne de moins de 10 millisecondes. La latence pour les opérations non atomiques, telles que Query et Scan, dépend de nombreux facteurs, y compris de la taille du jeu de résultats et de la complexité des conditions et des filtres de requête.

Prenez en compte une ou plusieurs des politiques suivantes pour réduire la latence :

  • Réduire les paramètres de délai d'attente de la demande : Réglez les paramètres du kit SDK client requestTimeOut et clientExecutionTimeout sur timeout et faites échouer beaucoup plus rapidement (par exemple, après 50 ms). Cela conduit le client à abandonner les demandes de latence élevée après le délai spécifié, puis à envoyer une deuxième demande qui se termine généralement beaucoup plus rapidement que la première. Pour plus d'informations sur les paramètres de délai d'attente, consultez Réglage des paramètres de demande HTTP du kit AWS Java SDK pour les applications Amazon DynamoDB prenant en charge la latence.
  • Réduire la distance entre le client et le point de terminaison DynamoDB : si vous disposez d’utilisateurs dispersés dans le monde entier, pensez à utiliser des tables globales. Avec les tables globales, vous pouvez spécifier les régions AWS dans lesquelles vous souhaitez que la table soit disponible. Cela peut réduire considérablement la latence pour vos utilisateurs.
  • Utiliser la mise en cache : si votre trafic est lourd, pensez à utiliser un service de mise en cache tel que DynamoDB Accelerator (DAX). DAX est un cache en mémoire entièrement géré et hautement disponible pour DynamoDB qui offre des performances jusqu'à 10 fois supérieures (de quelques millisecondes à quelques microsecondes), même pour des millions de requêtes par seconde.
  • Envoyer un trafic constant ou réutiliser des connexions : lorsque vous n'effectuez pas de demandes, pensez à faire en sorte que le client envoie le trafic fictif vers une table DynamoDB. Sinon, vous pouvez réutiliser les connexions client ou utiliser le regroupement de connexions. Toutes ces techniques maintiennent les caches internes réactifs, ce qui permet de maintenir une latence faible.
  • Utiliser des lectures cohérentes à terme (eventually consistent) : si votre application ne nécessite pas de lectures fortement cohérentes, pensez à utiliser des lectures cohérentes à terme (eventually consistent). Les lectures cohérentes à terme (eventually consistent) sont moins coûteuses et sont moins susceptibles de subir une latence élevée. Pour plus d'informations, consultez Cohérence de lecture.

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

Cette page peut-elle être améliorée ?


Vous avez besoin d'aide ?