Comment résoudre les erreurs de limitation dans Kinesis Data Streams ?

Date de la dernière mise à jour : 30/03/2020

Mon flux de données Amazon Kinesis est limité. Pourtant, celui-ci ne dépasse pas les limites de données. Comment puis-je détecter les erreurs de type « Rate Exceeded » ou « WriteProvisionedThroughputExceeded » ? 

Brève description

Vous pouvez détecter les erreurs relatives à la limitation dans votre flux de données Kinesis, et remédier à celles-ci, en procédant comme suit :

  • Activez la surveillance améliorée et comparez les valeurs IncomingBytes.
  • Consignez des enregistrements complets pour contrôler la taille et de nombre de flux.
  • Utilisez des clés de partition aléatoires.
  • Vérifiez si certaines métriques semblent anormales ou si des micro-pics se produisent dans Amazon CloudWatch.

Solution

Pour éviter les erreurs de type « Rate Exceeded » ou « WriteProvisionedThroughputExceeded » dans votre flux de données Kinesis, essayez de procéder comme suit :

Activez la surveillance améliorée et comparez les valeurs IncomingBytes

Pour vérifier si vous disposez de partitions à chaud, activez la surveillance améliorée sur votre flux de données Kinesis. Lorsque vous activez la surveillance sur un flux de données Kinesis, vous pouvez examiner les partitions individuellement. Vous pouvez examiner le flux par partition afin d'identifier celles qui réceptionnent le plus de trafic, ou qui dépassent les limites de service.

Remarque : lorsque la surveillance améliorée est désactivée, les partitions à chaud sont souvent exclues des métriques applicables aux flux de données Kinesis. Pour plus d'informations sur les partitions à chaud, consultez la section Stratégies de repartitionnement.

Vous pouvez également comparer les valeurs IncomingBytes moyennes et maximales pour vérifier s'il existe des partitions à chaud dans votre flux. Si la surveillance améliorée est activée, vous pouvez également identifier les partitions non conformes à la moyenne.

Consignez des enregistrements complets pour contrôler la taille et le nombre de flux

Pour identifier les micro-pics ou les métriques anormales qui entraînent un dépassement des limites de flux, consignez des enregistrements complets ou du code personnalisé pour contrôler la taille et le nombre de flux. Ensuite, évaluez le nombre et la taille des enregistrements transmis au flux de données Kinesis. Ceci peut vous permettre d'identifier les pics qui dépassent les limites applicables.

Vous pouvez également diviser par 60 la valeur associée à un point de données d'une minute. Ainsi, vous obtenez une valeur moyenne par seconde via laquelle vous pouvez déterminer si la limitation a lieu pendant la période spécifiée. Si la valeur ne dépasse pas les limites, ajoutez la métrique IncomingRecords à la métrique WriteProvisionedThroughputExceeded, puis procédez à nouveau au calcul. La métrique IncomingRecords signale les enregistrements réussis ou acceptés, alors que la métrique WriteProvisionedThroughputExceeded indique le nombre d'enregistrements ayant été limités.

Remarque : vérifiez la taille et le nombre d'enregistrements transmis par le producteur de données. Si le total combiné des enregistrements entrants et limités est supérieur aux limites de flux, modifiez le nombre d'enregistrements.

La métrique PutRecord.Success constitue également un bon indicateur des opérations qui échouent. Lorsque la métrique relative aux opérations réussies diminue, examinez les journaux du producteur de données pour identifier la cause racine des échecs. Si une limitation se produit, configurez la journalisation au niveau du producteur des données pour déterminer la quantité totale et la taille des enregistrements soumis. Si le nombre total d'enregistrements indiqués par la métrique PutRecord.Success dépasse les limites de flux, votre flux de données Kinesis est soumis à des limites. Pour plus d'informations sur les limites des flux Kinesis, consultez la section Quotas Kinesis Data Streams.

Utilisez des clés de partition aléatoires

Si votre flux de données Kinesis comporte des partitions à chaud, utilisez une clé de partition aléatoire pour réceptionner vos enregistrements. Si une clé de partition aléatoire est déjà utilisée, ajustez-la pour modifier la distribution. Ensuite, surveillez la clé pour détecter les modifications apportées aux métriques IncomingBytes et IncomingRecords, par exemple. Si les valeurs maximales et moyennes sont proches, il n'existe pas de partitions à chaud.

Vérifiez si certaines métriques semblent anormales ou si des micro-pics se produisent dans Amazon CloudWatch

Si des métriques Amazon CloudWatch ne font pas clairement état de failles ou de micro-pics au niveau des données, essayez d'effectuer les opérations suivantes :

  • Augmentez le nombre de partitions, puis fractionnez la taille des enregistrements de journaux.
  • Adaptez votre flux de données Kinesis en fonction de la capacité du producteur de données.
  • Définissez un mécanisme d'arrêt exponentiel et de nouvelle tentative dans la logique du producteur de données.
  • Modifiez les paramètres de configuration de votre producteur de données afin de réduire la vitesse d'écriture.
  • Limitez le taux de requêtes du producteur de données et le nombre d'enregistrements envoyés par seconde en fonction de la capacité du flux.

Pour plus d'informations sur les quotas de flux, consultez la section Quotas Kinesis Data Streams.