Mierz wydajność bazy danych czasu rzeczywistego Firebase za pomocą narzędzia do profilowania bazy danych wbudowanego w Firebase CLI . Narzędzie profilujące rejestruje całą aktywność w Twojej bazie danych w danym okresie, a następnie generuje szczegółowy raport. Skorzystaj ze szczegółowego raportu, aby rozwiązać problemy z wydajnością bazy danych, wykryć obszary problemowe i ograniczyć liczbę nieindeksowanych zapytań.
Zbuduj profil
Zanim rozpoczniesz profilowanie bazy danych czasu rzeczywistego Firebase, upewnij się, że używasz najnowszej wersji interfejsu wiersza polecenia Firebase oraz że zainicjowałeś ją dla bazy danych i projektu, który chcesz profilować. Pamiętaj, że aby móc tworzyć profile, musisz być redaktorem lub właścicielem tego projektu.
Rozpocznij profilowanie bazy danych za pomocą następującego polecenia:
firebase database:profile
Profiler wyświetla komunikat o stanie podczas rejestrowania operacji z bazy danych i tworzenia profilu.Naciśnij Enter , aby zakończyć profil i wyświetlić wyniki.
Zinterpretuj swoje wyniki
Narzędzie profilujące agreguje zebrane dane dotyczące operacji bazy danych i wyświetla wyniki w trzech głównych kategoriach: szybkość , przepustowość i zapytania nieindeksowane .
Prędkość
Raport prędkości mierzy czas odpowiedzi serwera (w milisekundach) dla każdego typu operacji. Jednak prędkość zmierzona w raporcie prędkości może w rzeczywistości nie odzwierciedlać prędkości, jaką odczuwają użytkownicy końcowi. Różne czynniki, w tym warunki sieciowe, mogą zwiększać opóźnienia po stronie klienta.
Raport prędkości zawiera następujące właściwości:
- Ścieżka: Ścieżka w bazie danych, w której wystąpiły operacje. Jeśli istnieje więcej niż 25 węzłów podrzędnych, narzędzie profilujące zwija je w ścieżkę nadrzędną i dodaje znacznik
$wildcard
. W raporcie możesz zobaczyć katalog główny bazy danych, reprezentowany przez ukośnik/
. - Liczba: liczba operacji, które wystąpiły na danej ścieżce.
- Średnia szybkość wykonania: Średni czas potrzebny serwerowi do wykonania logiki biznesowej potrzebnej do obsługi określonego typu operacji na tej ścieżce. Zmierzony tutaj przedział czasu rozpoczyna się po okresie mierzonym przez „Średni czas oczekiwania” opisany poniżej.
- Średni czas oczekiwania: Średni czas, jaki żądania spędzają w kolejce przed wykonaniem. To opóźnienie jest wspólne dla wszystkich żądań inicjowanych przez klienta. Całkowite opóźnienie żądania po stronie serwera jest w przybliżeniu sumą czasu oczekiwania na żądanie i szybkości wykonania.
- Odmowa uprawnień: liczba operacji w danej ścieżce, które zostały zablokowane przez reguły bazy danych Firebase w Twojej bazie danych.
Raport prędkości według typu operacji | |
---|---|
Przeczytaj Szybkość wykonania | Czas odpowiedzi serwera na żądania klientów dotyczące odczytu danych z bazy danych. Czas wykonania odczytu generalnie skaluje się wraz z ilością odczytywanych danych, ale nawet niektóre małe odczyty mogą być również opóźniane przez wstępne pobieranie pamięci podręcznej. |
Szybkość wykonywania zapisu | Czas odpowiedzi serwera na żądania klientów dotyczące zapisu danych w bazie danych. Czas wykonania zapisu skaluje się wraz z ilością zapisywanych danych. | Szybkość wykonywania połączeń | Czas odpowiedzi serwera na żądania ustanowienia do klientów bazy danych. Opóźnienia żądań połączeń są zdominowane przez księgowanie po stronie serwera w pamięci związane z zarządzaniem połączeniami. |
Szybkość wykonywania transmisji | Czas potrzebny serwerowi na dystrybucję danych do klientów nasłuchujących danej ścieżki w celu aktualizacji w czasie rzeczywistym. Właściwość Count w raporcie szybkości transmisji agreguje liczbę emisji, które miały miejsce, a nie liczbę klientów, którzy otrzymali informacje. Na przykład, jeśli 10 klientów nasłuchiwało na danej ścieżce, a serwer rozesłał aktualizację do wszystkich 10 klientów, liczba rozgłoszeń odzwierciedla tylko 1 rozgłoszenie, mimo że dane otrzymało 10 klientów. Właściwość Odmowa uprawnień nie jest uwzględniana w raporcie Szybkość transmisji. |
Przepustowość łącza
Raport o przepustowości zapewnia wgląd w to, ile danych zużywa baza danych w operacjach przychodzących i wychodzących. Nie należy jednak używać raportu przepustowości do szacowania rozliczeń, ponieważ nie obejmuje on przepustowości używanej do innych operacji, takich jak profilowanie bazy danych. Raport o przepustowości z grubsza szacuje rozmiar ładunku danych zużywanych przez operacje odczytu, zapisu i rozgłaszania do iz bazy danych. Jest to narzędzie, które mierzy wydajność, a nie takie, które prognozuje rozliczenia.
Raport o przepustowości zawiera następujące właściwości:
Ścieżka: Ścieżka w bazie danych, w której wystąpiły operacje. Jeśli istnieje więcej niż 25 węzłów podrzędnych, narzędzie profilujące zwija je w ścieżkę nadrzędną.
Łącznie: łączna liczba bajtów wychodzących lub przychodzących wykorzystanych we wszystkich operacjach na danej ścieżce.
Liczba: liczba operacji, które wystąpiły na danej ścieżce.
Średnia: Średnia liczba pobranych lub przesłanych bajtów w ramach operacji na danej ścieżce (bajty/zapis lub bajty/odczyt).
Raport przepustowości | |
---|---|
Pobrane bajty | Dane używane przez operacje odczytu i emisji wysyłane za pośrednictwem klienckich zestawów SDK i interfejsu API REST. |
Przesłane bajty | Dane zużywane przez żądania zapisu przychodzące do serwera bazy danych. Usunięcia pojawiają się jako zapisy z 0 bajtami poniżej przychodzących. |
Nieindeksowane zapytania
Zapytania nieindeksowane mogą być kosztowne, ponieważ klienci pobierają wszystkie dane w lokalizacji, a następnie wykonują na nich zapytania. To zużywa więcej przepustowości niż to konieczne. Rozwiąż jak najwięcej nieindeksowanych zapytań, aby zoptymalizować wydajność bazy danych.
Raport Nieindeksowane zapytania zawiera następujące 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ć zapytania nieindeksowane. Dowiedz się więcej o indeksowaniu w artykule Indeksuj swoje dane .
- Liczba: liczba nieindeksowanych zapytań, które wystąpiły w danej ścieżce.
Zaawansowane profilowanie
Aby zobaczyć wszystkie operacje obsługiwane przez bazę danych, podczas profilowania bazy danych użyj flagi --raw
w następujący sposób:
firebase database:profile --raw
Surowe dane wyjściowe zawierają również informacje o kliencie dla każdej operacji, takie jak ciągi userAgent
i adresy IP. Dowiedz się więcej o różnych operacjach profilowanych w Bazie danych czasu rzeczywistego Firebase w artykule Typy operacji bazy danych czasu rzeczywistego Firebase .
Narzędzie profilujące: nie jest narzędziem rozliczeniowym
Nie używaj narzędzia profilującego do szacowania kosztu przepustowości. Narzędzie profilujące ma na celu zapewnienie ogólnego obrazu wydajności bazy danych, pomoc w monitorowaniu operacji i rozwiązywaniu problemów, a nie w szacowaniu rozliczeń. Nie uwzględnia ruchu sieciowego, rejestruje jedynie szacunkowe dane aplikacji przesłane w odpowiedziach.
Oto kilka typowych przykładów ruchu sieciowego rozliczanego przez Firebase, który nie jest uwzględniony w Twoim profilu bazy danych:
- Narzut protokołu: Do ustanowienia i utrzymania sesji niezbędny jest dodatkowy ruch między serwerem a klientami. W zależności od bazowego protokołu ruch ten może obejmować: obciążenie protokołu czasu rzeczywistego Firebase Realtime Database, obciążenie protokołu WebSocket i obciążenie nagłówka HTTP. Za każdym razem, gdy ustanawiane jest połączenie, ten narzut, w połączeniu z narzutem związanym z szyfrowaniem SSL, przyczynia się do kosztów połączenia. Chociaż zwykle nie jest to duża przepustowość, może być znaczna, jeśli Twoje ładunki są niewielkie lub wykonujesz częste, krótkie połączenia.
- Narzut szyfrowania SSL: Z narzutem szyfrowania SSL niezbędnym do bezpiecznych połączeń wiąże się koszt. Średnio koszt ten wynosi około 3,5 KB dla początkowego uzgadniania i około 40 KB dla nagłówków rekordów TLS w każdej wiadomości wychodzącej. W przypadku większości aplikacji jest to niewielki procent rachunku. Może to jednak stanowić duży odsetek, jeśli konkretny przypadek wymaga wielu uzgadniania SSL. Na przykład urządzenia, które nie obsługują biletów sesji TLS, mogą wymagać dużej liczby uzgadniania połączenia SSL.
Przeczytaj więcej o zrozumieniu i oszacowaniu rachunku .