Passer au contenu

Comment résoudre les problèmes liés à l'augmentation de mon DiskQueueDepth dans Amazon RDS pour PostgreSQL ?

Lecture de 4 minute(s)
0

Je souhaite résoudre les problèmes liés à l'augmentation de mon DiskQueueDepth dans Amazon Relational Database Service (Amazon RDS) pour PostgreSQL.

Brève description

Le paramètre DiskQueueDepth est le nombre de requêtes d'entrée et de sortie (E/S) qui ont été soumises par l'application, mais qui n'ont pas encore été envoyées au périphérique de stockage. Les requêtes sont en attente car le disque ou le stockage est occupé par d'autres requêtes.

Un paramètre DiskQueueDepth élevé indique que les demandes d'E/S ont augmenté plus rapidement que les capacités de traitement du système de stockage. Amazon RDS rapporte cette métrique en tant que moyenne sur des intervalles d'une minute. Il est recommandé de cibler une longueur de file d'attente de 1 pour 1 000 IOPS disponibles.

Remarque : pour mesurer les performances d'E/S, vérifiez le débit de l'instance et le nombre d'opérations d'E/S.

Résolution

Pour résoudre les problèmes liés à l'augmentation du paramètre DiskQueueDepth dans Amazon RDS pour PostgreSQL, procédez comme suit :

Identifier le paramètre DiskQueueDepth élevé

Pour identifier un paramètre DiskQueueDepth élevé, vérifiez les points suivants :

  • Vérifiez vos métriques Amazon CloudWatch lorsque vous rencontrez des problèmes de performances. Recherchez dans la métrique DiskQueueDepth des pics supérieurs à la normale. Si le paramètre DiskQueueDepth reste élevé pendant une période prolongée, les requêtes attendront plus longtemps avant d'être exécutées.
  • Vérifiez les limites de votre type d'instance. Vérifiez si les métriques ReadIOPS, WriteIOPS, ReadThroughput et WriteThroughput atteignent leurs limites de type d'instance.
  • Vérifiez vos métriques ReadThroughput et WriteThroughput. CloudWatch présente ces données en octets par seconde. Pour une interprétation plus claire, convertissez ces valeurs en Mo/s ou Gb/s. Pour déterminer si vous avez atteint la limite de débit qui vous est allouée, additionnez les deux mesures pour la même période. Pour plus d'informations sur le débit alloué à votre instance, consultez la documentation relative aux types d’instances Amazon RDS.
  • Vérifiez votre métrique EBSByteBalance%. Si EBSByteBalance% est égal ou proche de zéro, l'instance consomme un débit élevé. En outre, un solde d'octets égal à zéro indique une limitation de votre bande passante.

Vérifier votre type et taille de stockage

Pour vérifier le type et la taille de votre espace de stockage, effectuez les actions suivantes :

  • Optimisez votre charge de travail. Explorez les options disponibles pour ajuster et améliorer l'efficacité de votre charge de travail.
  • Pour les SSD à usage général (gp2), assurez-vous que la taille de votre stockage est suffisante pour les IOPS et le débit de base.
  • Pour bénéficier d'un plus grand nombre d'IOPS ou de provisionnement en gp3, io1 et io2, ajustez votre charge de travail ou effectuez une mise à l’échelle vers une instance plus importante avec une capacité de processeur, de mémoire et d'E/S accrue.

Vérifier les augmentations soudaines du trafic

Des pics d'activité inattendus dans la base de données peuvent entraîner une augmentation de DiskQueueDepth. Pour identifier les pics de connexion, effectuez les actions suivantes :

  • Consultez le graphique DatabaseConnections dans vos métriques Amazon CloudWatch. Un trop grand nombre de connexions simultanées peut entraîner de lourdes opérations de lecture et d'écriture.
  • Atteignez une longueur de file d'attente de 1 pour 1 000 IOPS disponibles. (Il s'agit de la référence pour les volumes SSD à usage général et de la quantité provisionnée pour les volumes SSD IOPS provisionnés.)
  • Surveillez les performances de vos applications et effectuez les ajustements nécessaires en fonction de vos besoins.

Vérifier les problèmes de micro-bursting

Si votre instance n'atteint pas son débit ou sa limite d'IOPS, mais présente une latence et une longueur de file d'attente élevées, il se peut que votre instance soit exposée à un micro-bursting. Pour résoudre ce problème, consultez la section Comment puis-je déterminer si mon volume Amazon EBS est exposé à un micro-bursting et empêcher que cela ne se produise ?Assurez-vous également que la surveillance améliorée est activée, puis réglez la granularité sur 1 seconde pour identifier si le micro-bursting pose problème.

Optimiser les requêtes erronées

Pour optimiser les requêtes erronées, effectuez les actions suivantes :

  • Pour vérifier les types de requêtes qui s'exécutent à des périodes DiskQueueDepth élevées, utilisez Performance Insights.
  • Pour générer des plans d'exécution de requêtes, utilisez EXPLAIN pour identifier les opportunités d'optimisation. Pour en savoir plus, consultez la page EXPLAIN sur le site Web de PostgreSQL.
  • Vérifiez l’absence d'analyses de tables complètes, de jointures inefficaces ou d'index manquants susceptibles d'entraîner des E/S excessives.