View a markdown version of this page

Säule der Leistungseffizienz - AWS Prescriptive Guidance

Die vorliegende Übersetzung wurde maschinell erstellt. Im Falle eines Konflikts oder eines Widerspruchs zwischen dieser übersetzten Fassung und der englischen Fassung (einschließlich infolge von Verzögerungen bei der Übersetzung) ist die englische Fassung maßgeblich.

Säule der Leistungseffizienz

Die Säule der Leistungseffizienz des AWS Well-Architected Framework konzentriert sich darauf, wie die Leistung beim Einlesen oder Abfragen von Daten optimiert werden kann. Die Leistungsoptimierung ist ein inkrementeller und kontinuierlicher Prozess, der Folgendes umfasst:

  • Bestätigung der Geschäftsanforderungen

  • Messung der Workload-Leistung

  • Identifizierung leistungsschwacher Komponenten

  • Abstimmung der Komponenten auf Ihre Geschäftsanforderungen

Der Schwerpunkt Leistungseffizienz enthält Richtlinien, die Ihnen bei der Auswahl eines leistungsstarken Datenmodells helfen können. Die Säule Leistungseffizienz umfasst bewährte Methoden zur Abfrage- und Schreiboptimierung.

Der Pfeiler Leistungseffizienz konzentriert sich auf die folgenden Schlüsselbereiche:

  • Modellierung von Eingangsdaten und Optimierung von Abfragen

  • Optimierung schreiben

Modellierung von Eingangsdaten und Optimierung von Abfragen

Der Entwurf eines effektiven Schemas ist entscheidend für die Optimierung der Leistung und der Abfragefunktionen von Zeitreihendaten in InfluxDB. Wählen Sie zunächst die richtigen Tags und Felder aus. InfluxDB indexiert Tags, sodass die Abfrage-Engine nicht jeden Datensatz in einer Messung scannen muss, um einen Tag-Wert zu finden. Das bedeutet, dass das Abfragen von Tags effizienter ist als das Abfragen von Feldern. Um Daten zu komprimieren und zu speichern, gruppiert die Speicher-Engine Feldwerte nach Serienschlüsseln und ordnet diese Feldwerte dann nach Zeit. Ein Serienschlüssel wird durch Messung, Tagschlüssel und -wert sowie Feldschlüssel definiert. Weitere Informationen zum Datendesign finden Sie in der InfluxDB-Dokumentation.

Die Speicher-Engine verwendet ein TSM-Datenformat (Time-Structured Merge Tree). Weitere Informationen zum TSM-Datenformat finden Sie in der InfluxDB-Dokumentation.

Stellen Sie sich vor, Sie sammeln Daten (timestamphost_id,region,,cpu,memory, network_in_bytesnetwork_out_bytes,disk_io) als Teil eines DevOps Anwendungsfalls. Tags, einschließlich des Zeitstempels des Datensatzes, bieten Kontext, anhand dessen identifiziert werden kann, wer, was, wann und wo eines Datensatzes ist. Tags werden verwendet, um Daten zu organisieren und zu kategorisieren und um Daten als Teil einer Abfrage zu filtern.

Die region Tags host_id und sind ideale Tags für die Organisation und Kategorisierung des DevOps Anwendungsfalls. Diese Spalten helfen dabei, die Daten nach einem bestimmten Host zu filtern oder Analysen auf der Grundlage der Regionsspalte durchzuführen.

Kennzahlen bilden die Grundlage für mathematische Berechnungen (wie die Berechnung von Gesamtwerten, Durchschnittswerten und Unterschieden in der Änderungsrate) und für quantitative Analysen Ihrer Daten. Daher,, cpu memorynetwork_in_bytes, und disk_io erfassen wichtige Kennzahlennetwork_out_bytes, die sich auf DevOps diese Daten beziehen und sich im Laufe der Zeit ändern. Sie können diese Metriken verwenden, um verschiedene Analysen durchzuführen, wie z. B. die Berechnung von CPU und Arbeitsspeicher auf verschiedenen Hosts. Sie können diese Metrikwerte verwenden, um datengestützte Entscheidungen zu treffen, die dazu beitragen, Produktionsausfälle zu vermeiden und die Infrastruktur zu planen.

Kardinalität ist die Kombination von eindeutigen Tag-Werten. Versuchen Sie, die Kardinalität so gering wie möglich zu halten. Wenn Ihre Anwendung eine eindeutige Kennung für jeden Datenpunkt benötigt, verwenden Sie Feldwerte anstelle von Tagwerten. Dies wird zu einer deutlich besseren Abfragelatenz führen. Ein gutes Schemadesign kann eine hohe Serienkardinalität verhindern, was zu einer besseren Leistung von Abfragen führt. Wenn Sie feststellen, dass sich das Lesen und Schreiben von Daten verlangsamt, oder wenn Sie erfahren möchten, wie sich die Kardinalität auf die Leistung auswirkt, lesen Sie die Timestream for InfluxDB-Dokumentation.

Wenn Ihre Anwendung JSON-Objekte ausgibt, konvertieren Sie sie in einzelne Spalten (Tags oder Felder) und laden Sie die Spalten in InfluxDB. InfluxDB ist für Zeitreihendaten konzipiert. Daher ist die Organisation Ihrer Daten mit einzelnen Spalten eine bewährte Methode, um die Funktionen des Dienstes voll auszuschöpfen.

Eine einzelne InfluxDB v2.7 OSS-Instanz unterstützt ungefähr 20 InfluxDB-Buckets, die in allen Organisationen aktiv geschrieben oder abgefragt werden. Mehr als 20 Buckets können die Leistung beeinträchtigen. Bei einigen InfluxDB-Konfigurationsoptionen gibt es Einschränkungen, und es gibt einige Optionen, die Sie je nach Anwendungsfall konfigurieren können. Validieren Sie die Konfiguration anhand der Anwendungsauslastung während der Testphase. Datenaufbewahrungen werden auf Bucket-Ebene konfiguriert, sodass Daten mit unterschiedlichen Datenaufbewahrungsanforderungen in verschiedenen Buckets gespeichert werden sollten. Weitere Informationen zu Konfigurationsoptionen finden Sie in der Timestream for InfluxDB-Dokumentation.

Speichern Sie Daten in Tag-Werten oder Feldwerten, nicht in Tag-Schlüsseln, Feldschlüsseln oder Messungen. Wenn Sie Ihr Schema so entwerfen, dass Daten in Tag- und Feldwerten gespeichert werden, sind Ihre Abfragen einfacher zu schreiben und effizienter. Weitere bewährte Methoden zur Datenmodellierung finden Sie unter Leistungsorientiertes Design.

Verwenden Sie InfluxDB-Aufgaben, um Daten vorab zu aggregieren, die Daten in verschiedene Messungen oder Buckets zu laden und daraus Daten für Dashboards und Visualisierungen zu generieren.

InfluxDB OSS macht einen /metrics Endpunkt verfügbar, der Leistungs-, Ressourcen- und Nutzungsmetriken zurückgibt, die im Prometheus-Klartext-Expositionsformat formatiert sind. Verwenden Sie InfluxDB-Vorlagen, um Überwachungs- und Warnmeldungen einzurichten, um Probleme wie hohe Abfragelatenz, Verschlechterung des Schreibdurchsatzes oder Spitzen bei der Ressourcennutzung proaktiv zu erkennen.

Timestream for InfluxDB bietet Influx I/O-Speicher inklusive. Die Auswahl der geeigneten IOPS-Größe kann die Abfrageausführung erheblich beschleunigen. Dies ist besonders hilfreich bei Abfragen, bei denen große Datenmengen gescannt oder eine Vielzahl von Anfragen bearbeitet werden müssen. In einigen Situationen kann eine Kombination aus Skalierung der Instanz und Erhöhung der IOPS erforderlich sein, um die gewünschten Leistungsverbesserungen zu erzielen.

Wir empfehlen, die Entwicklungs- und Produktionsumgebungen aufeinander abzustimmen (Instanzklasse, Speichertyp, Konfigurationen). Testen Sie die Änderungen in der unteren Umgebung für jede Version, bevor Sie zur Produktion übergehen. Auf Influx IO Include-Speichervolumes bietet Timestream for InfluxDB drei Speicherstufen, die mit optimalen IOPS (3.000, 12.000, 16.000) und dem für verschiedene Arten von Workloads erforderlichen Durchsatz vorkonfiguriert sind. Die meisten Anwendungsfälle erfordern weniger als 3.000 IOPS. Wählen Sie 12.000 oder 16.000 nur, wenn Leistungstests darauf hindeuten, dass hohe IOPS erforderlich sind. Weitere Informationen finden Sie im Abschnitt Einrichtung in der Timestream for InfluxDB-Dokumentation.

Schreibvorgänge optimieren

Um Schreibvorgänge in InfluxDB zu optimieren, empfehlen wir, Daten in Stapeln von 5.000 Zeilen Leitungsprotokoll pro Anfrage zu schreiben, um den Netzwerkaufwand zu minimieren. Um eine bessere Leistung zu erzielen, sortieren Sie Tags nach Schlüsseln in lexikografischer Reihenfolge, bevor Sie Datenpunkte schreiben. Auch die Verwendung der größtmöglichen Zeitgenauigkeit für Zeitstempel anstelle von Nanosekunden kann die Leistung verbessern. Die Aktivierung der Gzip-Komprimierung ist eine weitere Möglichkeit, Schreibvorgänge zu beschleunigen und die Netzwerkbandbreite zu reduzieren. Stellen Sie in der Konfiguration des influxdb_v2 Ausgabe-Plug-ins in Ihrer telegraf.conf Datei die content_encoding Option auf gzip ein. Die Implementierung dieser Optimierungen kann die Leistung und Effizienz beim Schreiben von Daten in InfluxDB erheblich verbessern. Weitere bewährte Methoden zum Schreiben von InfluxDB finden Sie unter Optimize Writes to InfluxDB.

Die Schreibleistung von InfluxDB ist oft eng mit den verfügbaren IOPS verknüpft. Beim Schreiben von Daten muss InfluxDB eine beträchtliche Anzahl von I/O-Operationen ausführen, um die Daten zu speichern. Wenn Sie die IOPS erhöhen, kann InfluxDB mehr Schreibvorgänge pro Sekunde verarbeiten.