Profilieren Sie Ihre Datenbank

Mit Sammlungen den Überblick behalten Sie können Inhalte basierend auf Ihren Einstellungen speichern und kategorisieren.

Messen Sie die Leistung Ihrer Firebase-Echtzeitdatenbank mit dem Datenbank-Profiler-Tool, das in die Firebase-Befehlszeilenschnittstelle integriert ist. Das Profiler-Tool protokolliert alle Aktivitäten in Ihrer Datenbank über einen bestimmten Zeitraum und erstellt dann einen detaillierten Bericht. Verwenden Sie den detaillierten Bericht, um Probleme mit Ihrer Datenbankleistung zu beheben, Problembereiche zu erkennen und nicht indizierte Abfragen zu reduzieren.

Erstellen Sie ein Profil

  1. Bevor Sie mit der Profilerstellung Ihrer Firebase-Echtzeitdatenbank beginnen, vergewissern Sie sich, dass Sie die neueste Version der Firebase -Befehlszeilenschnittstelle verwenden und diese für die Datenbank und das Projekt initialisiert haben, die Sie profilieren möchten. Beachten Sie, dass Sie ein Bearbeiter oder Eigentümer dieses Projekts sein müssen, um ein Profil erstellen zu können.

  2. Starten Sie die Profilerstellung Ihrer Datenbank mit dem folgenden Befehl:

    firebase database:profile
    Der Profiler zeigt eine Statusmeldung an, während er Vorgänge aus Ihrer Datenbank aufzeichnet und das Profil erstellt.

  3. Drücken Sie die Eingabetaste , um das Profil abzuschließen und die Ergebnisse anzuzeigen.

Interpretieren Sie Ihre Ergebnisse

Das Profiler-Tool aggregiert die Daten, die es über den Betrieb Ihrer Datenbank gesammelt hat, und zeigt die Ergebnisse in drei Hauptkategorien an: Geschwindigkeit , Bandbreite und nicht indizierte Abfragen .

Geschwindigkeit

Der Geschwindigkeitsbericht misst die Antwortzeit des Servers (in Millisekunden) für jeden Vorgangstyp. Die im Geschwindigkeitsbericht gemessene Geschwindigkeit spiegelt jedoch möglicherweise nicht die Geschwindigkeit wider, die Endbenutzer erleben. Verschiedene Faktoren, einschließlich der Netzwerkbedingungen, können die Latenz auf der Clientseite erhöhen.

Der Geschwindigkeitsbericht enthält die folgenden Eigenschaften:

  • Pfad: Der Pfad in Ihrer Datenbank, in dem die Vorgänge ausgeführt wurden. Wenn es mehr als 25 untergeordnete Knoten gibt, reduziert das Profiler-Tool diese zu einem übergeordneten Pfad und fügt eine $wildcard Markierung hinzu. Möglicherweise sehen Sie im Bericht das Stammverzeichnis Ihrer Datenbank, dargestellt durch einen Schrägstrich / .
  • Count: Die Anzahl der Operationen, die am angegebenen Pfad aufgetreten sind.
  • Durchschnittliche Ausführungsgeschwindigkeit: Die durchschnittliche Zeit, die der Server benötigt, um die Geschäftslogik auszuführen, die zur Verarbeitung des bestimmten Vorgangstyps auf diesem Pfad erforderlich ist. Das hier gemessene Zeitintervall beginnt nach dem durch die unten beschriebene "durchschnittliche Wartezeit" gemessenen.
  • Durchschnittliche Wartezeit: Die durchschnittliche Zeit, die Anforderungen in der Warteschlange verbringen, bevor sie ausgeführt werden. Diese Verzögerung ist allen vom Client initiierten Anforderungen gemeinsam. Die gesamte serverseitige Anforderungslatenz ist ungefähr die Summe aus der Wartezeit dieser Anforderung und der Ausführungsgeschwindigkeit.
  • Berechtigung verweigert: Die Anzahl der Vorgänge im angegebenen Pfad, die durch Firebase-Datenbankregeln in Ihrer Datenbank blockiert wurden.
Geschwindigkeitsbericht nach Vorgangstyp
Ausführungsgeschwindigkeit lesen Die Antwortzeit des Servers für Clientanforderungen zum Lesen von Daten aus der Datenbank. Die Leseausführungszeit skaliert im Allgemeinen mit der Menge der gelesenen Daten, aber selbst einige kleine Lesevorgänge können auch durch Cache-Prefetching verzögert werden.
Ausführungsgeschwindigkeit schreiben Die Antwortzeit des Servers für Clientanforderungen zum Schreiben von Daten in die Datenbank. Die Schreibausführungszeit skaliert mit der Menge der zu schreibenden Daten.
Connect-Ausführungsgeschwindigkeit Die Antwortzeit des Servers für Anforderungen, die an Datenbankclients eingerichtet werden sollen. Die Latenz für Verbindungsanforderungen wird von der serverseitigen In-Memory-Buchhaltung im Zusammenhang mit der Verbindungsverwaltung dominiert.
Broadcast-Ausführungsgeschwindigkeit

Die Zeit, die der Server benötigt, um Daten an Clients zu verteilen, die den angegebenen Pfad für Echtzeitaktualisierungen abhören.

Die Eigenschaft „Anzahl“ im Broadcast-Geschwindigkeitsbericht aggregiert die Anzahl der erfolgten Broadcasts, nicht die Anzahl der Clients, die die Informationen erhalten haben. Wenn beispielsweise 10 Clients einen bestimmten Pfad abhörten und der Server eine Aktualisierung an alle 10 Clients sendete, spiegelt die Broadcast-Zählung nur 1 Broadcast wider, obwohl 10 Clients die Daten empfangen haben.

Die Eigenschaft „ Berechtigung verweigert “ ist nicht im Bericht „Übertragungsgeschwindigkeit“ enthalten.

Bandbreite

Der Bandbreitenbericht gibt Aufschluss darüber, wie viele Daten Ihre Datenbank bei eingehenden und ausgehenden Vorgängen verbraucht. Sie sollten den Bandbreitenbericht jedoch nicht verwenden, um die Abrechnung zu schätzen, da er keine Bandbreite enthält, die für andere Vorgänge wie die Profilerstellung Ihrer Datenbank verwendet wird. Der Bandbreitenbericht schätzt grob die Nutzlastgröße der Daten, die von Lese-, Schreib- und Broadcastvorgängen zu und von Ihrer Datenbank verbraucht werden. Es ist ein Tool, das die Leistung misst, nicht eines, das die Abrechnung prognostiziert.

Der Bandbreitenbericht enthält die folgenden Eigenschaften:

  • Pfad: Der Pfad in Ihrer Datenbank, in dem die Vorgänge ausgeführt wurden. Wenn es mehr als 25 untergeordnete Knoten gibt, reduziert das Profiler-Tool diese zu einem übergeordneten Pfad.

  • Gesamt: Die gesamten ausgehenden oder eingehenden Bytes, die für alle Operationen am angegebenen Pfad verwendet werden.

  • Count: Die Anzahl der Operationen, die am angegebenen Pfad aufgetreten sind.

  • Durchschnitt: Die durchschnittliche Anzahl der heruntergeladenen oder hochgeladenen Bytes über Vorgänge im angegebenen Pfad (Bytes/Schreiben oder Bytes/Lesen).

Bandbreitenbericht
Heruntergeladene Bytes Daten, die durch Lese- und Broadcast-Vorgänge verbraucht werden, die über die Client-SDKs und die REST-API gesendet werden.
Hochgeladene Bytes Daten, die durch Schreibanforderungen verbraucht werden, die beim Datenbankserver eingehen. Löschungen werden als Schreibvorgänge mit 0 Bytes unter Eingehend angezeigt.

Nicht indizierte Abfragen

Nicht indizierte Abfragen können teuer sein, da Clients alle Daten an einem Ort herunterladen und dann Abfragen darauf durchführen. Dies verbraucht mehr Bandbreite als nötig. Lösen Sie so viele nicht indizierte Abfragen wie möglich auf, um die Leistung Ihrer Datenbank zu optimieren.

Der Bericht „Nicht indizierte Abfragen“ zeigt die folgenden Eigenschaften an:

  • Pfad: Der Pfad in Ihrer Datenbank, in dem die nicht indizierten Abfragen aufgetreten sind.
  • Index: Die Regel, die Sie hinzufügen sollten, um die nicht indizierten Abfragen aufzulösen. Weitere Informationen zum Indizieren finden Sie unter Daten indizieren .
  • Anzahl : Die Anzahl der nicht indizierten Abfragen, die am angegebenen Pfad aufgetreten sind.

Erweiterte Profilerstellung

Um alle Vorgänge anzuzeigen, die Ihre Datenbank verarbeitet, verwenden Sie das Flag --raw beim Profilieren Ihrer Datenbank wie folgt:

firebase database:profile --raw

Die Rohausgabe enthält auch Client-Informationen für jeden Vorgang, z. B. userAgent Zeichenfolgen und IP-Adressen. Erfahren Sie mehr über die verschiedenen Vorgänge, die in Ihrer Firebase-Echtzeitdatenbank profiliert sind, unter Vorgangstypen der Firebase- Echtzeitdatenbank .

Das Profiler-Tool: Kein Abrechnungstool

Verwenden Sie das Profiler-Tool nicht zum Schätzen der Bandbreitenkosten. Das Profiler-Tool soll Ihnen einen Gesamtüberblick über die Leistung Ihrer Datenbank geben, Ihnen dabei helfen, den Betrieb zu überwachen und Probleme zu beheben, und nicht, um die Abrechnung zu schätzen. Es berücksichtigt keinen Netzwerkverkehr, sondern zeichnet nur eine Schätzung der als Antworten gesendeten Anwendungsdaten auf.

Im Folgenden finden Sie einige gängige Beispiele für Netzwerkverkehr, der von Firebase in Rechnung gestellt wird und nicht in Ihrem Datenbankprofil enthalten ist:

  • Protokoll-Overhead: Etwas zusätzlicher Datenverkehr zwischen dem Server und den Clients ist erforderlich, um eine Sitzung aufzubauen und aufrechtzuerhalten. Abhängig vom zugrunde liegenden Protokoll kann dieser Datenverkehr Folgendes umfassen: Echtzeitprotokoll-Overhead der Firebase Realtime Database, WebSocket-Overhead und HTTP-Header-Overhead. Jedes Mal, wenn eine Verbindung hergestellt wird, trägt dieser Overhead zusammen mit dem Overhead der SSL-Verschlüsselung zu den Verbindungskosten bei. Obwohl dies in der Regel keine große Bandbreite ist, kann sie erheblich sein, wenn Ihre Nutzlasten winzig sind oder Sie häufige, kurze Verbindungen herstellen.
  • SSL-Verschlüsselungs-Overhead: Der für sichere Verbindungen erforderliche SSL-Verschlüsselungs-Overhead ist mit Kosten verbunden. Im Durchschnitt betragen diese Kosten etwa 3,5 KB für den anfänglichen Handshake und etwa 40 B für TLS-Eintragsheader in jeder ausgehenden Nachricht. Bei den meisten Apps ist dies ein kleiner Prozentsatz Ihrer Rechnung. Dies kann jedoch ein großer Prozentsatz werden, wenn Ihr spezieller Fall viele SSL-Handshakes erfordert. Beispielsweise erfordern Geräte, die TLS-Sitzungstickets nicht unterstützen, möglicherweise eine große Anzahl von SSL-Verbindungshandshakes.

Lesen Sie mehr über das Verstehen und Schätzen Ihrer Rechnung .