Mierz wydajność Firebase Realtime Database za pomocą narzędzia do profilowania bazy danych wbudowanego w interfejs wiersza poleceń Firebase. Narzędzie do profilowania rejestruje całą aktywność w bazie danych w danym okresie, a następnie generuje szczegółowy raport. Korzystaj ze szczegółowego raportu, aby rozwiązywać problemy z wydajnością bazy danych, wykrywać problematyczne obszary i ograniczać liczbę niezaindeksowanych zapytań.
Tworzenie profilu
Zanim zaczniesz profilować Firebase Realtime Database, upewnij się, że używasz najnowszej wersji interfejsu wiersza poleceń Firebase i że został on zainicjowany w przypadku bazy danych i projektu, które chcesz profilować. Uwaga: aby profilować projekt, musisz być jego edytorem lub właścicielem.
Rozpocznij profilowanie bazy danych za pomocą tego polecenia:
Profiler wyświetla komunikat o stanie podczas rejestrowania operacji z bazy danych i tworzenia profilu.firebase database:profile
Naciśnij Enter, aby dokończyć profil i wyświetlić wyniki.
Interpretowanie wyników
Narzędzie do profilowania agreguje zebrane dane o operacjach w bazie danych i wyświetla wyniki w 3 głównych kategoriach: szybkość, przepustowość i nieindeksowane zapytania.
Szybkość
Raport dotyczący szybkości mierzy czas reakcji serwera (w milisekundach) dla każdego typu operacji. Szybkość mierzona w raporcie o szybkości może jednak nie odzwierciedlać rzeczywistej szybkości, z jaką korzystają użytkownicy. Różne czynniki, w tym warunki sieciowe, mogą powodować opóźnienia po stronie klienta.
Raport o szybkości zawiera te właściwości:
- Ścieżka: ścieżka w bazie danych, w której wystąpiły operacje. Jeśli węzłów podrzędnych jest więcej niż 25, narzędzie do profilowania zwija je w ścieżkę nadrzędną i dodaje znacznik
$wildcard. W raporcie może się pojawić katalog główny bazy danych, oznaczony ukośnikiem/. - Liczba: liczba operacji, które wystąpiły na danej ścieżce.
- Średnia szybkość wykonywania: średni czas, jaki zajmuje serwerowi wykonanie logiki biznesowej potrzebnej do obsługi danego typu operacji na tej ścieżce. Mierzony tu przedział czasu rozpoczyna się po przedziale czasu mierzonym przez „Średni czas oczekiwania” opisanym poniżej.
- Średni czas oczekiwania: średni czas, przez jaki żądania oczekują w kolejce przed wykonaniem. To opóźnienie jest typowe dla wszystkich żądań inicjowanych przez klienta. Całkowity czas oczekiwania na żądanie po stronie serwera jest w przybliżeniu sumą czasu oczekiwania i szybkości wykonania tego żądania.
- Permission Denied (Odmowa uprawnień): liczba operacji w danym ścieżce, które zostały zablokowane przez reguły bazy danych Firebase w Twojej bazie danych.
| Raport dotyczący szybkości według typu operacji | |
|---|---|
| Odczytywanie szybkości wykonywania | Czas odpowiedzi serwera na żądania klientów dotyczące odczytu danych z bazy danych. Czas wykonywania odczytu zwykle zależy od ilości odczytywanych danych, ale nawet niektóre małe odczyty mogą być opóźnione przez wstępne pobieranie z pamięci podręcznej. |
| Szybkość wykonywania zapisu | Czas odpowiedzi serwera na żądania klienta dotyczące zapisywania danych w bazie danych. Zapisz skale czasu wykonywania z ilością zapisywanych danych. |
| Szybkość wykonywania połączenia | Czas reakcji serwera na żądania nawiązania połączenia z klientami bazy danych. Na czas oczekiwania na żądania połączenia największy wpływ ma po stronie serwera zarządzanie połączeniami w pamięci. |
| Szybkość wykonywania transmisji | Czas, jaki serwer potrzebuje na rozpowszechnienie danych wśród klientów nasłuchujących danego ścieżki w celu uzyskania aktualizacji w czasie rzeczywistym. Właściwość Liczba w raporcie Szybkość transmisji zawiera łączną liczbę transmisji, a nie liczbę klientów, którzy otrzymali informacje. Jeśli na przykład 10 klientów nasłuchiwało na danej ścieżce, a serwer rozesłał aktualizację do wszystkich 10 klientów, liczba transmisji odzwierciedla tylko 1 transmisję, mimo że dane otrzymało 10 klientów. Usługa Odmowa uprawnień nie jest uwzględniana w raporcie Szybkość transmisji. |
Przepustowość
Raport dotyczący przepustowości zawiera informacje o tym, ile danych zużywa Twoja baza danych w ramach operacji przychodzących i wychodzących. Nie należy jednak używać raportu Bandwidth do szacowania rozliczeń, ponieważ nie obejmuje on przepustowości używanej do innych operacji, takich jak profilowanie bazy danych. Raport dotyczący przepustowości zawiera przybliżone oszacowanie rozmiaru ładunku danych wykorzystywanych przez operacje odczytu, zapisu i transmisji do i z bazy danych. Jest to narzędzie do pomiaru skuteczności, a nie do prognozowania rozliczeń.
Raport o przepustowości zawiera te właściwości:
Ścieżka: ścieżka w bazie danych, w której wystąpiły operacje. Jeśli węzłów podrzędnych jest więcej niż 25, narzędzie do profilowania zwija je w ścieżkę nadrzędną.
Łącznie: łączna liczba bajtów wychodzących lub przychodzących używanych we wszystkich operacjach w danym ścieżce.
Liczba: liczba operacji, które wystąpiły na danej ścieżce.
Średnia: średnia liczba pobranych lub przesłanych bajtów w operacjach na danej ścieżce (bajty/zapis lub bajty/odczyt).
| Raport przepustowości | |
|---|---|
| Pobrane bajty | Dane wykorzystywane w operacjach odczytu i emisji wysyłanych przez pakiety SDK klienta i interfejs REST API. |
| Przesłane bajty | Dane wykorzystywane przez żądania zapisu przychodzące do serwera bazy danych. Usunięcia są wyświetlane jako zapisy z 0 bajtów w sekcji przychodzących. |
Zapytania nieindeksowane
Zapytania bez indeksu mogą być kosztowne, ponieważ klienci pobierają wszystkie dane w lokalizacji, a następnie wykonują na nich zapytania. Zużywa to więcej przepustowości niż jest to konieczne. Rozwiąż jak najwięcej nieindeksowanych zapytań, aby zoptymalizować wydajność bazy danych.
Raport Nieindeksowane zapytania zawiera te właściwości:
- Ścieżka: ścieżka w bazie danych, w której wystąpiły niezindeksowane zapytania.
- Indeks: reguła, którą należy dodać, aby rozwiązać problem z niezindeksowanymi zapytaniami. Więcej informacji o indeksowaniu znajdziesz w artykule Indeksowanie danych.
- Liczba: liczba niezindeksowanych zapytań, które wystąpiły w danym miejscu.
Zaawansowane profilowanie
Aby zobaczyć wszystkie operacje obsługiwane przez bazę danych, podczas profilowania bazy danych użyj flagi --raw w ten sposób:
firebase database:profile --raw
Surowe dane wyjściowe zawierają też informacje o kliencie dla każdej operacji, np. userAgentciągi znaków i adresy IP. Dowiedz się więcej o różnych operacjachFirebase Realtime Database w profilu Firebase Realtime Database Typy operacji.
Narzędzie do profilowania: nie jest narzędziem do rozliczeń
Nie używaj narzędzia do profilowania do szacowania kosztów przepustowości. Narzędzie do profilowania ma na celu przedstawienie ogólnego obrazu wydajności bazy danych, aby pomóc Ci monitorować operacje i rozwiązywać problemy, a nie szacować rozliczenia. Nie uwzględnia ruchu w sieci, a jedynie szacunkową ilość danych aplikacji wysyłanych w odpowiedziach.
Oto kilka typowych przykładów ruchu w sieci rozliczanego przez Firebase, które nie są uwzględnione w profilu bazy danych:
- Narzucone obciążenie protokołu: do nawiązania i utrzymania sesji konieczny jest dodatkowy ruch między serwerem a klientami. W zależności od protokołu bazowego ten ruch może obejmować: narzut protokołu czasu rzeczywistego Bazy danych czasu rzeczywistego Firebase, narzut protokołu WebSocket i narzut nagłówka HTTP. Za każdym razem, gdy nawiązywane jest połączenie, ten narzut w połączeniu z narzutem szyfrowania SSL wpływa na koszty połączenia. Chociaż zwykle nie jest to duża ilość przepustowości, może być znaczna, jeśli ładunki są małe lub często nawiązujesz krótkie połączenia.
- Obciążenie związane z szyfrowaniem SSL: z szyfrowaniem SSL niezbędnym do bezpiecznych połączeń wiąże się pewien koszt. Średnio koszt ten wynosi około 3,5 KB w przypadku początkowego uzgadniania połączenia i około 40 B w przypadku nagłówków rekordów TLS w każdej wiadomości wychodzącej. W przypadku większości aplikacji jest to niewielki odsetek rachunku. Jeśli jednak w Twoim przypadku wymagana jest duża liczba uzgodnień SSL, może to stanowić duży odsetek. Na przykład urządzenia, które nie obsługują biletów sesji TLS, mogą wymagać dużej liczby uzgodnień połączenia SSL.
Dowiedz się więcej o rozumieniu i szacowaniu rachunku.