Polecenie profilera bazy danych czasu rzeczywistego Firebase
Aby wygenerować raport dotyczący szybkości i wykorzystania przepustowości dla operacji w instancji bazy danych Realtime Database, użyj następującego polecenia:
firebase database:profile
Opcje flagi | Opis |
---|---|
-h, --help | Wyjście informacji o użyciu. |
-o, --output FILENAME | Zapisz dane wyjściowe w określonym pliku. |
-i, --input FILENAME | Wygeneruj raport na podstawie określonego pliku zamiast logów strumieniowych z serwera. |
-d, --duration SECONDS | Zbieraj informacje o użyciu bazy danych przez określoną liczbę sekund. |
--raw | Wyprowadź zebrane surowe statystyki w formacie JSON rozdzielanym nowymi wierszami. |
Typy operacji
połączenie współbieżne
Ta operacja odzwierciedla połączenia z bazą danych w czasie rzeczywistym (na przykład, gdy nowy klient łączy się za pośrednictwem zestawu SDK). Połączenia RESTful nie są odzwierciedlane w operacjach łączenia współbieżnego.
{ "name": "concurrent-connect", "timestamp": 1484776334900 }
jednoczesne rozłączenie
Równoczesne rozłączenia odzwierciedlają połączenie, które zostało rozłączone z bazą danych (na przykład, gdy klient rozłącza się lub wylogowuje).
{ "name": "concurrent-disconnect", "timestamp": 1484776341844 }
pisz w czasie rzeczywistym
Zapisuj żądania z połączeń w czasie rzeczywistym. Na przykład operacje set()
i push()
dla klientów internetowych. Żądania usunięcia są również liczone jako operacje realtime-write
i odzwierciedlają zapisy o wielkości 0 bajtów.
{ "allowed": true, // If security rules allow the operation "bytes": 1, "millis": 2, "name": "realtime-write", "path": [ "foo" ], "timestamp": 1484776538763 }
transakcja w czasie rzeczywistym
Ten typ operacji obejmuje transakcje przeprowadzane poprzez połączenia w czasie rzeczywistym. Powtarzające się transakcje mogą być wynikiem nieudanych prób i ponownych prób.
{ "allowed": true, "bytes": 20, "millis": 2, "name": "realtime-transaction", "path": [ "foo" ], "timestamp": 1484776854610 }
aktualizacja w czasie rzeczywistym
Te operacje aktualizacji w czasie rzeczywistym odzwierciedlają nadpisywanie określonych danych, a nie bardziej ogólne operacje zapisu w realtime-write
.
{ "allowed": true, "bytes": 5, "millis": 2, "name": "realtime-update", "path": [ "foo" ], "timestamp": 1484776538769 }
słuchacz-słuchaj
Operacje te odzwierciedlają początkowe żądanie danych od klienta w określonej lokalizacji. Na przykład metody on()
lub once()
dla klientów internetowych.
{ "allowed": true, "bytes": 0, "millis": 26, "name": "listener-listen", "path": [ "foo" ], "querySet": [], "timestamp": 1484776335024, "unIndexed": false }
transmisja słuchacza
Ta operacja obejmuje dane wysyłane z serwera do wszystkich klientów nasłuchujących w danej lokalizacji po każdej operacji zapisu i aktualizacji. Zmiana danych prowadzi do operacji rozgłaszania. Jeśli jednak żaden klient nie słucha, możesz zobaczyć 0 aktualizacji.
{ "bytes": 56, // Total bytes sent across clients "clientsUpdated": 3, // This may be 0 if no clients are listening "millis": 17, "name": "listener-broadcast", "path": [ "baz", "mar" ], "timestamp": 1484775969928 }
słuchacz-niesłuchaj
Operacje te odzwierciedlają klientów nasłuchujących, którzy wylogowują się lub przestają nasłuchiwać za pomocą metod odłączania (na przykład off()
w przypadku sieci Web lub removeAllObservers
w przypadku systemu iOS).
{ "name": "listener-unlisten", "path": [ "foo" ], "timestamp": 1484776335044 }
przeczytaj resztę
GET
żądania za pośrednictwem interfejsu API REST.
{ "allowed": true, "bytes": 348, // This would be 0 if the read data was null "millis": 26, "name": "rest-read", "path": [], "querySet": [ { "default": true, "endIndexValue": "[MAX_NAME]", "equality": false, "index": {}, "limit": null, "range": false, "simpleLimit": false, "startIndexValue": "[MIN_NAME]", "viewFrom": null } ], "timestamp": 1484775747416 }
odpoczywaj-pisz
Żądania PUT
i POST
za pośrednictwem interfejsu API REST. Żądania DELETE
odzwierciedlają operacje rest-write
o wielkości 0 bajtów.
{ "allowed": true, "bytes": 13, "millis": 116, "name": "rest-write", "path": [], "timestamp": 1484775917216 }
transakcja reszta
W przypadku zachowania przypominającego transakcję użyj żądań warunkowych . Operacja rest-transaction
przechwytuje żądania przy użyciu nagłówków Etag
lub if-match
.
{ "allowed": true, "bytes": 13, "millis": 116, "name": "rest-transaction", "path": [], "timestamp": 1484775917216 }
aktualizacja reszta
Aktualizacje za pośrednictwem interfejsu API REST odzwierciedlają żądania PATCH
.
{ "allowed": true, "bytes": 5, "millis": 11, "name": "rest-update", "path": [ "baz", "mar" ], "timestamp": 1484775969930 }
przy rozłączaniu
Operacje te odzwierciedlają dodanie odbiorników onDisconnect
do operacji zapisu. Na przykład, gdy używasz onDisconnect().setValue()
.
{ "allowed": true, "bytes": 4, "millis": 2, "name": "on-disconnect-put", "path": [ "baz", "mar" ], "timestamp": 1484775969930 }
aktualizacja po rozłączeniu
Operacje te odzwierciedlają dodanie odbiorników onDisconnect
w celu operacji aktualizacji. Na przykład, jeśli używasz onDisconnect().updateChildren()
.
{ "allowed": true, "bytes": 4, "millis": 2, "name": "on-disconnect-update", "path": [ "baz", "mar" ], "timestamp": 1484775969930 }
on-rozłącz-anuluj
Operacje te odzwierciedlają usunięcie słuchaczy onDisconnect. Na przykład, gdy używasz onDisconnect().set().cancel()
.
{ "millis": 2, "name": "on-disconnect-cancel", "path": [ "baz", "mar" ], "timestamp": 1484775969930 }
działanie po rozłączeniu
Operacje te odzwierciedlają wyzwalanie odbiorników onDisconnect
. Gdy klient czasu rzeczywistego rozłącza się po dodaniu co najmniej jednego odbiornika onDisconnect
, profiler rejestruje pojedynczą operację run-on-disconnect
, aby odzwierciedlić zagregowane bajty i czas wszystkich wyzwolonych odbiorników onDisconnect
.
{ "bytes": 4, "millis": 2, "name": "run-on-disconnect", "timestamp": 1484775969930 }