Join us for Firebase Summit on November 10, 2021. Tune in to learn how Firebase can help you accelerate app development, release with confidence, and scale with ease. Register

Profilieren Sie Ihre Datenbank

Messen Sie die Leistung Ihrer Datenbank mit Firebase Realtime der Datenbank Profiler - Tool, eingebaut in die Firebase CLI . 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 Ihre Firebase Realtime - Datenbank starten Profilieren, stellen Sie sicher sind Sie die neueste Version der mit Firebase CLI und haben Sie es für die Datenbank initialisiert und projizieren Sie ein Profil erstellen 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 Datenbank mit dem folgenden Befehl Profilierungs:

    firebase database:profile
    Der Profiler zeigt eine Statusmeldung , wie es Operationen aus Ihrer Datenbank und baut das Profil aufzeichnet.

  3. Drücken Sie die Eingabetaste um das Profil und zeigen die Ergebnisse zu vervollständigen.

Interpretiere deine Ergebnisse

Der Profiler - Tool aggregiert die Daten , die sie über Ihre Datenbank-Operationen und zeigt die Ergebnisse in drei Hauptkategorien gesammelt hat: 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 der Endbenutzer wider. 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 der die Operationen aufgetreten. Wenn es mehr als 25 Kinderknoten ist, kollabiert das Profiler - Tool diese in einen übergeordneten Pfad und fügt einen $wildcard - Marker. Sie können Ihre Datenbank Stammverzeichnis in dem Bericht, vertreten durch einen Schrägstrich sehen / .
  • Count: Die Anzahl der Operationen , die bei dem gegebenen Weg aufgetreten ist .
  • Durchschnittliche Ausführungsgeschwindigkeit: Die durchschnittliche Zeit, die den Server übernimmt die Geschäftslogik auszuführen benötigt , um den besonderen Operationstyp auf diesem Weg zu handhaben . Das hier gemessene Zeitintervall beginnt nach dem, das durch die unten beschriebene "Average Pending Time" gemessen wird.
  • Durchschnittliche Pending Zeit: Die durchschnittliche Zeit , Anfragen verbringt Warteschlange vor ausgeführt zu werden . Diese Verzögerung gilt für alle vom Client initiierten Anforderungen. Die gesamte serverseitige Anforderungslatenz ist ungefähr die Summe aus der ausstehenden Zeit und der Ausführungsgeschwindigkeit dieser Anforderung.
  • Zugriff verweigert: Die Anzahl der Operationen auf dem angegebenen Pfad, der durch blockiert wurden Firebase Datenbank - Regeln auf Ihrer Datenbank.
Geschwindigkeitsbericht nach Operationstyp
Ausführungsgeschwindigkeit lesen Die Server-Antwortzeit für Client-Anfragen 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 Server-Antwortzeit für Client-Anfragen zum Schreiben von Daten in die Datenbank. Die Schreibausführungszeit skaliert mit der zu schreibenden Datenmenge.
Ausführungsgeschwindigkeit verbinden Die Serverantwortzeit für Anforderungen, die an Datenbankclients erstellt werden sollen. Die Latenz für Verbindungsanfragen wird von der serverseitigen Buchführung im Arbeitsspeicher im Zusammenhang mit der Verbindungsverwaltung dominiert.
Übertragungsgeschwindigkeit

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

Die Count - Eigenschaft in dem Broadcast - Speed - Bericht aggregiert die Anzahl der Sendungen , die, nicht die Anzahl der Kunden geschehen, die die Informationen erhalten hat . Wenn beispielsweise 10 Clients auf einem bestimmten Pfad lauschen und der Server eine Aktualisierung an alle 10 Clients sendet, spiegelt die Broadcast-Zählung nur 1 Broadcast wider, obwohl 10 Clients die Daten empfangen haben.

Die Berechtigung verweigert Eigenschaft nicht in der Broadcast - Speed - Bericht enthalten.

Bandbreite

Der Bandbreitenbericht gibt Aufschluss darüber, wie viel 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 verwendet wird, z. B. für die Profilerstellung Ihrer Datenbank. Der Bandbreitenbericht schätzt grob die Nutzlastgröße der Daten, die von Lese-, Schreib- und Broadcast-Vorgä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 der die Operationen aufgetreten. Wenn mehr als 25 untergeordnete Knoten vorhanden sind, reduziert das Profiler-Tool diese in einen übergeordneten Pfad.

  • Gesamt: Die Gesamt für abgehende oder ankommende Bytes über alle Vorgänge auf dem angegebenen Pfad verwendet.

  • Count: Die Anzahl der Operationen , die bei dem gegebenen Weg aufgetreten ist .

  • Durchschnitt: Die durchschnittliche Anzahl der herunter- oder hochgeladen Bytes über Operationen an den angegebenen Pfad (Bytes / Schreib- oder Bytes / Lese).

Bandbreitenbericht
Heruntergeladene Bytes Daten, die durch Lese- und Broadcast-Operationen verbraucht werden, die über die Client-SDKs und die REST-API gesendet werden.
Hochgeladene Bytes Daten, die durch Schreibanforderungen verbraucht werden, die in den Datenbankserver eingehen. Löschvorgänge werden als Schreibvorgänge mit 0 Byte unter eingehend angezeigt.

Nicht indizierte Abfragen

Nicht indizierte Abfragen können teuer sein, da Clients alle Daten an einem Speicherort herunterladen und dann Abfragen darauf ausfü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 der Datenbank , wo die nicht indizierte Abfragen aufgetreten.
  • Index: Die Regel sollte man hinzufügen , die nicht indizierte Abfragen zu lösen. Erfahren Sie mehr über die Indizierung in Index Ihrer Daten .
  • Count: Die Anzahl der nicht indizierte Abfragen , die in dem angegebenen Pfad aufgetreten.

Erweiterte Profilerstellung

Um alle Vorgänge Ihre Datenbank Umgang, die --raw Flag , wenn Sie Ihre Datenbank - Profil wie folgt:

firebase database:profile --raw

Die Rohausgangssignal enthält auch Kundeninformationen für jede Operation, wie userAgent - Strings und IP - Adressen. Erfahren Sie mehr über die verschiedenen Operationen profiliert in Ihrer Datenbank in Echtzeit Firebase Firebase Realtime Datenbankbetrieb Typen .

Das Profiler-Tool: Kein Abrechnungstool

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

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

  • Protokoll - Overhead: Einige zusätzliche Datenverkehr zwischen dem Server und den Clients erforderlich ist , eine Sitzung aufzubauen und zu pflegen. Abhängig vom zugrunde liegenden Protokoll kann dieser Datenverkehr Folgendes umfassen: Echtzeitprotokoll-Overhead der Firebase Realtime Database, WebSocket-Overhead und HTTP-Header-Overhead. Bei jedem Verbindungsaufbau trägt dieser Overhead zusammen mit dem Overhead der SSL-Verschlüsselung zu den Verbindungskosten bei. Obwohl dies normalerweise keine große Bandbreite ist, kann sie beträchtlich sein, wenn Ihre Nutzlasten winzig sind oder Sie häufige, kurze Verbindungen herstellen.
  • SSL - Verschlüsselung Aufwand: Es gibt eine Kosten mit der SSL - Verschlüsselung Aufwand notwendig für sichere Verbindungen verbunden. Im Durchschnitt betragen diese Kosten etwa 3,5 KB für den ersten Handshake und etwa 40 KB für TLS-Datensatzheader für jede ausgehende Nachricht. Bei den meisten Apps ist dies ein kleiner Prozentsatz Ihrer Rechnung. Dies kann jedoch zu einem großen Prozentsatz werden, wenn Ihr spezifischer Fall viele SSL-Handshakes erfordert. Geräte, die TLS-Sitzungstickets nicht unterstützen, können beispielsweise eine große Anzahl von SSL-Verbindungs-Handshakes erfordern.

Lesen Sie mehr über das Verständnis und Schätzen Sie Ihre Rechnung .