Polecenie narzędzia do profilowania Firebase Realtime Database
Aby wygenerować raport dotyczący prędkości i wykorzystania przepustowości na potrzeby operacji w instancji Realtime Database, użyj tego polecenia:
firebase database:profile
Opcje zgłaszania | Opis |
---|---|
-h, --help |
Wyjściowe informacje o wykorzystaniu. |
-o, --output FILENAME |
Zapisz dane wyjściowe w określonym pliku. |
-i, --input FILENAME |
Generuj raport na podstawie określonego pliku zamiast logów strumienia z serwera. |
-d, --duration SECONDS |
Zbieraj informacje o wykorzystaniu bazy danych przez określoną liczbę sekund. |
--raw |
Przekazuj na wyjściu nieprzetworzone statystyki zebrane w formacie JSON rozdzielanym znakami nowego wiersza. |
Typy operacji
połączenie równoczesne
Ta operacja odzwierciedla połączenia w czasie rzeczywistym z bazą danych (na przykład gdy a nowy klient łączy się za pomocą pakietu SDK). Połączenia REST nie są odzwierciedlane w operacji połączeń równoczesnych.
{
"name": "concurrent-connect",
"timestamp": 1484776334900
}
równoczesne rozłączanie
Równoczesne rozłączenie odzwierciedla połączenie, które zostało odłączone od w bazie danych (na przykład po rozłączeniu lub wylogowaniu klienta).
{
"name": "concurrent-disconnect",
"timestamp": 1484776341844
}
zapis w czasie rzeczywistym
Żądania zapisu z połączeń w czasie rzeczywistym. Na przykład: set()
i push()
.
dla klientów internetowych. Prośby o usunięcie również są liczone jako realtime-write
i odzwierciedla zapisy o rozmiarze 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 realizowane za pomocą połączeń w czasie rzeczywistym. Powtórne transakcje mogą być wynikiem nieudanych prób.
{
"allowed": true,
"bytes": 20,
"millis": 2,
"name": "realtime-transaction",
"path": [
"foo"
],
"timestamp": 1484776854610
}
aktualizacja w czasie rzeczywistym
Operacje aktualizacji w czasie rzeczywistym odzwierciedlają nadużywanie konkretnych danych,
bardziej ogólne operacje zapisu w funkcji realtime-write
.
{
"allowed": true,
"bytes": 5,
"millis": 2,
"name": "realtime-update",
"path": [
"foo"
],
"timestamp": 1484776538769
}
Słuchaj
Operacje te odzwierciedlają początkową prośbę o dane w konkretnej lokalizacji od
klienta. Na przykład metody on()
lub once()
w przypadku klientów internetowych.
{
"allowed": true,
"bytes": 0,
"millis": 26,
"name": "listener-listen",
"path": [
"foo"
],
"querySet": [],
"timestamp": 1484776335024,
"unIndexed": false
}
detektor-transmisja
Ta operacja obejmuje dane wysyłane z serwera do wszystkich klientów, którzy nasłuchują w danej lokalizacji po każdej operacji zapisu i aktualizacji. do transmisji. Możesz jednak otrzymywać 0 aktualizacji gdy nikt nie słucha.
{
"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
Te operacje dotyczą słuchaczy klientów, którzy podpisują się lub przestają nasłuchiwać
za pomocą metod odłączania (np. off()
w przypadku witryny lub removeAllObservers
w przypadku iOS).
{
"name": "listener-unlisten",
"path": [
"foo"
],
"timestamp": 1484776335044
}
przeczytane w spoczynku
GET
żądań przesyłanych za pomocą REST
API.
{
"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
}
reszta-zapis
PUT
i
Żądania POST
przesyłane za pomocą REST
API.
Pokazują one: DELETE
Operacje: rest-write
po 0 bajtów.
{
"allowed": true,
"bytes": 13,
"millis": 116,
"name": "rest-write",
"path": [],
"timestamp": 1484775917216
}
reszta-transakcja
W przypadku zachowania podobnego do transakcji użyj
Żądania warunkowe.
Operacja rest-transaction
przechwytuje żądania za pomocą Etag
lub if-match
nagłówki.
{
"allowed": true,
"bytes": 13,
"millis": 116,
"name": "rest-transaction",
"path": [],
"timestamp": 1484775917216
}
aktualizacja w spoczynku
Aktualizacje za pomocą interfejsu API REST odzwierciedlają żądania PATCH
.
{
"allowed": true,
"bytes": 5,
"millis": 11,
"name": "rest-update",
"path": [
"baz",
"mar"
],
"timestamp": 1484775969930
}
on-disconnect-put
Te operacje odzwierciedlają dodanie detektorów onDisconnect
do zapisu
operacji. Jeśli na przykład używasz onDisconnect().setValue()
.
{
"allowed": true,
"bytes": 4,
"millis": 2,
"name": "on-disconnect-put",
"path": [
"baz",
"mar"
],
"timestamp": 1484775969930
}
aktualizacja przy rozłączeniu
Te operacje odzwierciedlają dodanie detektorów onDisconnect
do zaktualizowania
operacji. Jeśli na przykład używasz onDisconnect().updateChildren()
.
{
"allowed": true,
"bytes": 4,
"millis": 2,
"name": "on-disconnect-update",
"path": [
"baz",
"mar"
],
"timestamp": 1484775969930
}
anulowanie przy rozłączeniu
Operacje te odzwierciedlają usunięcie detektorów onRozłącz.
Jeśli na przykład używasz onDisconnect().set().cancel()
.
{
"millis": 2,
"name": "on-disconnect-cancel",
"path": [
"baz",
"mar"
],
"timestamp": 1484775969930
}
działanie po rozłączeniu
Te operacje odzwierciedlają aktywowanie detektorów onDisconnect
.
Gdy klient czasu rzeczywistego rozłącza się po dodaniu co najmniej 1 elementu onDisconnect
detektor, program profilujący rejestruje pojedynczą operację run-on-disconnect
aby odzwierciedlać zagregowane bajty i czas wszystkich detektorów onDisconnect
.
{
"bytes": 4,
"millis": 2,
"name": "run-on-disconnect",
"timestamp": 1484775969930
}