Direkt zum Inhalt

Wie behebe ich das Problem der Erhöhung meiner DiskQueueDepth in Amazon RDS für PostgreSQL?

Lesedauer: 4 Minute
0

Ich möchte das Problem der Erhöhung meiner DiskQueueDepth in Amazon Relational Database Service (Amazon RDS) für PostgreSQL beheben.

Kurzbeschreibung

DiskQueueDepth ist die Anzahl der Eingabe- und Ausgabe (E/A)-Anfragen, die von der Anwendung eingereicht, aber noch nicht an das Speichergerät gesendet wurden. Die Anfragen stehen noch aus, da die Festplatte oder der Speicher mit anderen Anfragen belegt ist.

Eine hohe DiskQueueDepth weist darauf hin, dass die Anzahl der E/A-Anfragen schneller gestiegen ist, als das Speichersystem verarbeiten kann. Amazon RDS meldet diese Metrik als Durchschnitt über Intervalle von einer Minute. Es hat sich bewährt, eine Warteschlangenlänge von 1 pro 1000 verfügbaren IOPS anzustreben.

Hinweis: Um die E/A-Leistung zu messen, überprüfe den Durchsatz und die Anzahl der E/A-Operationen der Instance.

Lösung

Gehe wie folgt vor, um Probleme der Erhöhung der DiskQueueDepth in Amazon RDS für PostgreSQL zu beheben:

Die hohe DiskQueueDepth identifizieren

Überprüfe Folgendes, um eine hohe DiskQueueDepth zu identifizieren:

  • Überprüfe die Amazon-CloudWatch-Metriken, wenn du Leistungsprobleme hast. Achte auf Spitzen in der DiskQueueDepth-Metrik, die höher als normal sind. Wenn DiskQueueDepth über einen längeren Zeitraum erhöht bleibt, warten Abfragen länger, bevor sie ausgeführt werden.
  • Überprüfe die Instance-Typ-Grenzwerte. Überprüfe, ob die Metriken ReadIOPS, WriteIOPS, ReadThroughput, and WriteThroughput ihre Instance-Typ-Grenzwerte erreichen.
  • Überprüfe die Metriken ReadThroughput und WriteThroughput. CloudWatch präsentiert diese Daten in Byte pro Sekunde. Für eine klarere Interpretation solltest du diese Werte daher in Mbit/s oder Gbit/s umrechnen. Um festzustellen, ob du den zugewiesenen Durchsatzgrenzwert erreicht hast, addiere beide Metriken für denselben Zeitraum. Einzelheiten zum Durchsatz, der deiner Instance zugewiesen ist, findest du in der Dokumentation zu den Amazon-RDS-Instance-Typen.
  • Überprüfe die EBSByteBalance%-Metrik. Wenn EBSByteBalance% bei oder nahe Null ist, verbraucht die Instance einen hohen Durchsatz. Außerdem deutet das Byte-Guthaben von Null auf eine Drosselung der Bandbreite hin.

Den Speichertyp und die Größe überprüfen

Gehe wie folgt vor, um der Speichertyp und die Speichergröße zu überprüfen:

  • Optimiere die Workload. Erkunde die verfügbaren Optionen, um die Effizienz der Workload zu optimieren und zu verbessern.
  • Stelle bei Allzweck-SSDs (gp2) sicher, dass die Speichergröße über ausreichend Basis-IOPS und Durchsatz verfügt.
  • Um mehr IOPS oder bereitgestellte gp3, io1 und io2 zu erhalten, optimiere die Workload oder skaliere auf größere Instances mit erhöhter CPU-, Speicher- und E/A-Kapazität.

Plötzliche Datenverkehrszunahmen überprüfen

Unerwartete Spitzen in der Datenbankaktivität können zu einer erhöhten DiskQueueDepth führen. Gehe wie folgt vor, um Verbindungsspitzen zu erkennen:

  • Prüfe den DatabaseConnections-Graph in den Amazon-CloudWatch-Metriken. Zu viele gleichzeitige Verbindungen können zu umfangreichen Lese- und Schreibvorgängen führen.
  • Erreiche eine Warteschlangenlänge von 1 pro 1000 verfügbaren IOPS. (Dies ist der Basiswert für Allzweck-SSD-Volumes und die bereitgestellte Menge für bereitgestellte IOPS-SSD-Volumes.)
  • Überwache die Leistung der Anwendung und nimm Anpassungen an deinen Anforderungen vor.

Nach Micro-Bursting-Problemen suchen

Wenn die Instance ihren Durchsatz- oder IOPS-Grenzwert nicht erreicht, aber eine hohe Latenz und Warteschlangenlänge aufweist, liegt möglicherweise Micro-Bursting auf der Instance vor. Informationen zur Behebung dieses Problems findest du unter Wie kann ich feststellen, ob auf meinem Amazon EBS-Volume Micro-Bursting auftritt, und wie kann ich das dann verhindern? Stelle außerdem sicher, dass Enhanced Monitoring aktiviert ist, und stelle dann die Granularität auf 1 Sekunde ein, um festzustellen, ob Micro-Bursting ein Problem darstellt.

Schlechte Abfragen optimieren

Gehe wie folgt vor, um schlechte Abfragen zu optimieren:

  • Verwende Performance Insights, um die Abfragetypen zu überprüfen, die in Zeiträumen mit hoher DiskQueueDepth ausgeführt werden.
  • Um Abfragelausführungspläne zu generieren, verwende EXPLAIN, um Optimierungsmöglichkeiten zu identifizieren. Weitere Informationen findest du unter EXPLAIN auf der PostgreSQL-Website.
  • Suche nach vollständigen Tabellenscans, ineffizienten Verknüpfungen oder fehlenden Indizes, die zu übermäßigen E/A-Vorgängen führen könnten.