Profil für Ihre Datenbank erstellen

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

Profil erstellen

  1. Bevor Sie mit der Profilerstellung für Firebase Realtime Database beginnen, sollten Sie die aktuelle Version der Firebase-Befehlszeile verwenden und sie für die Datenbank und das Projekt initialisiert haben, für die Sie ein Profil erstellen möchten. Beachten Sie, dass Sie Bearbeiter oder Inhaber des Projekts sein müssen, um ein Profil zu erstellen.

  2. Starten Sie die Profilerstellung für Ihre 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 zu vervollständigen und die Ergebnisse anzeigen zu lassen.

Ergebnisse interpretieren

Das Profiler-Tool fasst die Daten zusammen, die es zu den Vorgängen Ihrer Datenbank erfasst hat, und zeigt die Ergebnisse in drei Hauptkategorien an: Geschwindigkeit, Bandbreite und nicht indexierte Abfragen.

Geschwindigkeit

Im Geschwindigkeitsbericht wird die Antwortzeit des Servers (in Millisekunden) für jeden Vorgangstyp gemessen. Die im Geschwindigkeitsbericht gemessene Geschwindigkeit entspricht jedoch möglicherweise nicht der Geschwindigkeit, die Endnutzer tatsächlich erleben. Verschiedene Faktoren, einschließlich Netzwerkbedingungen, können die Latenz auf der Clientseite erhöhen.

Der Geschwindigkeitsbericht enthält die folgenden Properties:

  • Pfad: Der Pfad in Ihrer Datenbank, in dem die Vorgänge aufgetreten sind. Wenn mehr als 25 untergeordnete Knoten vorhanden sind, werden diese vom Profiler-Tool in einem übergeordneten Pfad minimiert und mit der Markierung $wildcard versehen. Möglicherweise wird im Bericht das Stammverzeichnis Ihrer Datenbank angezeigt, das durch einen Schrägstrich / dargestellt wird.
  • Anzahl: Die Anzahl der Vorgänge, die im angegebenen Pfad aufgetreten sind.
  • Durchschnittliche Ausführungsgeschwindigkeit: Die durchschnittliche Zeit, die der Server benötigt, um die Geschäftslogik auszuführen, die für die Verarbeitung des jeweiligen Vorgangstyps in diesem Pfad erforderlich ist. Das hier gemessene Zeitintervall beginnt nach dem Zeitintervall, das durch die unten beschriebene „Durchschnittliche Wartezeit“ gemessen wird.
  • Durchschnittliche Wartezeit: Die durchschnittliche Zeit, die Anfragen in der Warteschlange verbringen, bevor sie ausgeführt werden. Diese Verzögerung tritt bei allen vom Client initiierten Anfragen auf. Die gesamte serverseitige Anfragelatenz entspricht in etwa der Summe aus der Wartezeit und der Ausführungsgeschwindigkeit der Anfrage.
  • 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 Serverantwortzeit für Clientanfragen zum Lesen von Daten aus der Datenbank. Die Ausführungszeit für Lesevorgänge skaliert im Allgemeinen mit der Menge der gelesenen Daten. Einige kleine Lesevorgänge können jedoch auch durch Cache-Prefetching verzögert werden.
Schreibgeschwindigkeit Die Serverantwortzeit für Clientanfragen zum Schreiben von Daten in die Datenbank. Die Schreibausführungszeit skaliert mit der Menge der geschriebenen Daten.
Ausführungsgeschwindigkeit von Connect Die Serverantwortzeit für Anfragen zum Herstellen von Verbindungen zu Datenbankclients. Die Latenz für Verbindungsanfragen wird von der serverseitigen In-Memory-Buchführung im Zusammenhang mit der Verbindungsverwaltung dominiert.
Ausführungsgeschwindigkeit von Übertragungen

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

Das Attribut Anzahl im Bericht zur Übertragungsgeschwindigkeit fasst die Anzahl der Übertragungen zusammen, nicht die Anzahl der Clients, die die Informationen erhalten haben. Wenn beispielsweise 10 Clients auf einen bestimmten Pfad warten und der Server ein Update an alle 10 Clients sendet, wird nur 1 Broadcast gezählt, obwohl 10 Clients die Daten erhalten haben.

Das Attribut Berechtigung verweigert ist nicht im Bericht zur Ü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 zur Schätzung der Abrechnung verwenden, 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 durch Lese-, Schreib- und Broadcastvorgänge zu und von Ihrer Datenbank verbraucht werden. Mit dem Tool wird die Leistung gemessen, nicht die Abrechnung prognostiziert.

Der Bandbreitenbericht enthält die folgenden Attribute:

  • Pfad: Der Pfad in Ihrer Datenbank, in dem die Vorgänge aufgetreten sind. Wenn mehr als 25 untergeordnete Knoten vorhanden sind, werden diese vom Profiler-Tool in einem übergeordneten Pfad minimiert.

  • Gesamt: Die Gesamtzahl der ausgehenden oder eingehenden Byte, die für alle Vorgänge im angegebenen Pfad verwendet wurden.

  • Anzahl: Die Anzahl der Vorgänge, die im angegebenen Pfad aufgetreten sind.

  • Durchschnitt: Die durchschnittliche Anzahl der heruntergeladenen oder hochgeladenen Byte für Vorgänge im angegebenen Pfad (Byte/Schreibvorgang oder Byte/Lesevorgang).

Bandbreitenbericht
Heruntergeladene Byte Daten, die über Lese- und Broadcast-Vorgänge verbraucht werden, die über die Client-SDKs und die REST API gesendet werden.
Hochgeladene Byte Daten, die durch Schreibanfragen an den Datenbankserver verbraucht werden. Löschvorgänge werden unter „Eingehend“ als Schreibvorgänge mit 0 Byte angezeigt.

Nicht indexierte Suchanfragen

Nicht indexierte Abfragen können teuer sein, da Clients alle Daten an einem Speicherort herunterladen und dann Abfragen darauf ausführen. Dadurch wird mehr Bandbreite als nötig verbraucht. Beheben Sie so viele nicht indexierte Abfragen wie möglich, um die Leistung Ihrer Datenbank zu optimieren.

Der Bericht „Nicht indexierte Abfragen“ enthält die folgenden Attribute:

  • Pfad: Der Pfad in Ihrer Datenbank, in dem die nicht indexierten Abfragen aufgetreten sind.
  • Index: Die Regel, die Sie hinzufügen sollten, um die nicht indexierten Abfragen aufzulösen. Weitere Informationen zur Indexierung Ihrer Daten
  • Anzahl: Die Anzahl der nicht indexierten Abfragen, die im angegebenen Pfad aufgetreten sind.

Erweiterte Profilerstellung

Wenn Sie alle Vorgänge sehen möchten, die Ihre Datenbank verarbeitet, verwenden Sie das Flag --raw, wenn Sie ein Profil Ihrer Datenbank erstellen:

firebase database:profile --raw

Die Rohausgabe enthält auch Clientinformationen für jeden Vorgang, z. B. userAgent-Strings und IP-Adressen. Weitere Informationen zu den verschiedenen Vorgängen, die in Ihrem Firebase Realtime Database profiliert werden, finden Sie unter Firebase Realtime Database-Vorgangstypen.

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, damit Sie Vorgänge überwachen und Probleme beheben können. Es ist nicht für die Schätzung der Abrechnung gedacht. Der Netzwerkverkehr wird nicht berücksichtigt, sondern nur eine Schätzung der in Antworten gesendeten Anwendungsdaten.

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: Für das Einrichten und Aufrechterhalten einer Sitzung ist zusätzlicher Traffic zwischen dem Server und den Clients erforderlich. Je nach zugrunde liegendem Protokoll kann dieser Traffic Folgendes umfassen: Overhead des Echtzeitprotokolls der Firebase Realtime Database, WebSocket-Overhead und HTTP-Header-Overhead. Jedes Mal, wenn eine Verbindung hergestellt wird, trägt dieser Overhead zusammen mit dem SSL-Verschlüsselungs-Overhead zu den Verbindungskosten bei. In der Regel ist dies keine große Bandbreite, kann aber erheblich sein, wenn Ihre Nutzlasten sehr klein sind oder Sie häufige, kurze Verbindungen herstellen.
  • SSL-Verschlüsselungsaufwand: Für den SSL-Verschlüsselungsaufwand, der für sichere Verbindungen erforderlich ist, fallen Kosten an. Im Durchschnitt betragen diese Kosten etwa 3,5 KB für den ersten Handshake und etwa 40 B für TLS-Datensatzheader bei jeder ausgehenden Nachricht. Bei den meisten Anwendungen macht dies nur einen kleinen Prozentsatz Ihrer Rechnung aus. Dieser Prozentsatz kann jedoch hoch sein, wenn in Ihrem speziellen Fall viele SSL-Handshakes erforderlich sind. Beispielsweise können Geräte, die keine TLS-Sitzungstickets unterstützen, eine große Anzahl von SSL-Verbindungshandshakes erfordern.

Weitere Informationen zu Rechnungen und Kostenschätzungen