Mierz wydajność instancji Firebase Realtime Database za pomocą narzędzia do profilowania bazy danych wbudowane w interfejs wiersza poleceń Firebase. Narzędzie do profilowania rejestruje wszystkie aktywności w bazie danych w danym okresie, a potem generuje szczegółowego raportu. Za pomocą szczegółowego raportu można rozwiązać problemy ze w zakresie wydajności baz danych, wykrywania obszarów problematycznych i zmniejszania liczby zapytań niezindeksowanych.
Utwórz profil
Zanim zaczniesz profilować Firebase Realtime Database, sprawdź, czy korzystasz najnowszą wersję interfejsu wiersza poleceń Firebase oraz została zainicjowana dla bazy danych i projektu, który chcesz profilować. Notatka aby profilować, musisz być edytującym lub właścicielem tego projektu.
Rozpocznij profilowanie bazy danych za pomocą tego polecenia:
Program profilujący wyświetla komunikat o stanie w trakcie rejestrowania operacji do bazy danych i tworzy profil.firebase database:profile
Naciśnij Enter, aby uzupełnić profil i wyświetlić wyniki.
Interpretowanie wyników
Narzędzie do profilowania agreguje zebrane dane o bazie danych i wyświetla wyniki w 3 głównych kategoriach: szybkość, przepustowość i zapytania niezindeksowane.
Szybkość
Raport dotyczący szybkości mierzy czas odpowiedzi serwera (w milisekundach) dla każdego typ operacji. Jednak prędkość zmierzona w raporcie dotyczącym prędkości może nie być jak bardzo wpływają na wygodę użytkowników. Różne czynniki, w tym warunki sieciowe, mogą zwiększyć opóźnienie po stronie klienta.
Raport dotyczący szybkości zawiera te właściwości:
- Ścieżka: ścieżka w bazie danych, na której miały miejsce operacje. Jeśli
jeśli istnieje więcej niż 25 węzłów podrzędnych, narzędzie do profilowania zwija je w
ścieżki nadrzędnej i dodaje znacznik
$wildcard
. Możesz zobaczyć adresy URL bazy danych katalogu głównym w raporcie reprezentowany ukośnikiem/
. - Liczba: liczba operacji, które miały miejsce na danej ścieżce.
- Średnia szybkość wykonywania: średni czas wykonywania działania przez serwer. logikę biznesową niezbędną do obsługi konkretnego typu operacji na tej ścieżce. Przedział czasu mierzony w tym miejscu zaczyna się po tym okresie mierzonym za pomocą opcji „Średnia Czas oczekiwania” opisane poniżej.
- Średni czas oczekiwania:średni czas spędzony w kolejce żądań przed zostanie wykonane. Jest ono wspólne dla wszystkich żądań zainicjowanych przez klienta. łączny czas oczekiwania na żądanie po stronie serwera jest mniej więcej sumą wartości czas oczekiwania i szybkość wykonywania zadań. .
- Odmowa dostępu: liczba operacji na danym ścieżki, które zostały zablokowane przez Reguły bazy danych Firebase w swojej bazie danych.
Raport dotyczący szybkości według typu operacji | |
---|---|
Odczytuj szybkość wykonywania | Czas odpowiedzi serwera na żądania klientów odczytu danych z w bazie danych. Czas wykonywania odczytu zwykle skaluje się odpowiednio do ilości danych odczytywane, ale nawet niektóre niewielkie odczyty mogą być opóźnione przez pamięć podręczną pobierania z wyprzedzeniem. |
Szybkość wykonywania zapisu | Czas odpowiedzi serwera na żądania klientów dotyczące zapisu danych w w bazie danych. Czas wykonywania zapisu skaluje się odpowiednio do ilości przesyłanych danych napisane. |
Szybkość wykonywania połączenia | Czas odpowiedzi serwera na żądania wysyłane do klientów bazy danych. Czas oczekiwania na żądania połączenia jest zdominowany przez pamięć podręczną po stronie serwera księgowość związana z zarządzaniem połączeniami. |
Szybkość wykonywania transmisji | Czas potrzebny serwerowi na rozpowszechnianie danych klientom nasłuchiwanie podanej ścieżki w celu otrzymywania aktualizacji w czasie rzeczywistym. Właściwość Count w parametrze Raport o szybkości transmisji zbiera dane o liczbie przeprowadzonych transmisji, a nie liczbę klientów, którzy otrzymali te informacje. Na przykład, jeśli 10 klientów nasłuchiwały na danej ścieżce i serwer przesłał aktualizację do wszystkich 10 klientów, liczba transmisji odzwierciedla tylko jedną transmisję, mimo że 10 klientów odebrali dane. Właściwość Odmowa dostępu nie jest uwzględniona w Raport Szybkość transmisji |
Przepustowość
Raport dotyczący przepustowości dostarcza informacji o ilości danych zużywanych przez bazę danych w operacjach przychodzących i wychodzących. Nie zalecamy korzystania z parametru Przepustowość Raport, który pozwoli oszacować płatności, ponieważ nie uwzględnia on wykorzystywanej przepustowości do innych operacji, takich jak profilowanie bazy danych. Raport Przepustowość pozwala w przybliżeniu oszacować rozmiar ładunku danych używanych przez operacje odczytu, zapisu i transmisji do i z bazy danych. Jest to narzędzie do pomiaru skuteczności, a nie narzędzia do prognozowania płatności.
Raport dotyczący przepustowości zawiera te właściwości:
Ścieżka: ścieżka w bazie danych, na której miały miejsce operacje. Jeśli jeśli dostępnych jest więcej niż 25 węzłów podrzędnych, narzędzie do profilowania zwija je ścieżki nadrzędnej.
Łącznie: łączna liczba bajtów wychodzących lub przychodzących używanych we wszystkich operacjach na danej ścieżce.
Liczba: liczba operacji, które miały miejsce na danej ścieżce.
Średnia: średnia liczba pobranych lub przesłanych bajtów operacji na danej ścieżce (bajty/zapis lub bajty/odczyt).
Raport dotyczący przepustowości | |
---|---|
Pobrane bajty | Dane wykorzystywane w ramach operacji odczytu i transmisji wysyłanych przez klienta Pakiety SDK i interfejs API typu REST. |
Przesłane bajty | Dane wykorzystywane przez żądania zapisu wysyłane do serwera bazy danych. Usunięcia są wyświetlane jako zapisy z przychodzącym 0 bajtów. |
Zapytania niezindeksowane
Zapytania niezindeksowane mogą być kosztowne, ponieważ klienty pobierają wszystkie dane w i wykonywać na niej zapytania. Zużywa to więcej przepustowości niż niezbędną. Rozwiąż jak najwięcej niezindeksowanych zapytań, aby zoptymalizować i wydajność bazy danych.
Raport Zapytania niezindeksowane zawiera te właściwości:
- Ścieżka: ścieżka w bazie danych, w której pojawiły się niezindeksowane zapytania.
- Indeks:reguła, którą należy dodać, aby rozwiązywać niezindeksowane zapytania. Ucz się więcej informacji o indeksowaniu znajdziesz w artykule Indeksowanie danych.
- Liczba: liczba niezindeksowanych zapytań, które wystąpiły na danej ścieżce.
Profilowanie zaawansowane
Aby wyświetlić wszystkie operacje obsługiwane przez Twoją bazę danych, użyj funkcji --raw
podczas profilowania bazy danych w ten sposób:
firebase database:profile --raw
Nieprzetworzone dane wyjściowe zawierają też informacje o kliencie dotyczące każdej operacji, takie jak:
userAgent
ciągi i adresy IP. Więcej informacji o różnych operacjach
w Firebase Realtime Database w Firebase Realtime Database typach operacji.
Narzędzie do profilowania: nie jest narzędziem rozliczeniowym
Nie używaj narzędzia do profilowania do szacowania kosztów przepustowości. Narzędzie do profilowania ma dać ogólny obraz wydajności bazy danych, monitorować operacje i rozwiązywać problemy, a nie szacować wysokość opłat. it nie uwzględnia ruchu w sieci, ale rejestruje jedynie oraz wysyłanie danych o aplikacji w odpowiedziach.
Oto kilka typowych przykładów ruchu w sieci rozliczanego przez Firebase. , które nie zostały uwzględnione w profilu bazy danych:
- Narzut protokołu: dodatkowy ruch między serwerem a klientami. jest niezbędna do utworzenia i utrzymania sesji. W zależności od źródła , ruch ten może obejmować: Bazę danych czasu rzeczywistego Firebase (Realtime Database) narzut protokołu, narzut WebSocket i nagłówek HTTP. Za każdym razem, gdy nawiązano połączenie, ten narzut połączony z szyfrowaniem SSL wpływa na koszty połączeń. Mimo że zwykle nie jest to przy dużej przepustowości, przy niewielkich ładunkach może to być znaczne lub nawiązujesz częste, krótkie kontakty.
- Narzut szyfrowania SSL: korzystanie z SSL wiąże się z pewnymi kosztami. nakładu szyfrowania wymaganych do obsługi bezpiecznych połączeń. Średni koszt to około 3, 5 KB podczas początkowego uzgadniania połączenia i około 40 B w przypadku Nagłówki rekordów TLS w każdej wiadomości wychodzącej. W przypadku większości aplikacji jest to procent rachunku. Może to być jednak duży odsetek, jeśli Twoja sprawa wymaga wielu uzgadniania połączenia SSL. Na przykład urządzenia , które nie obsługują zgłoszeń na sesję TLS, mogą wymagać dużej liczby połączeń SSL uzgadniania połączenia.
Dowiedz się więcej o interpretowaniu i szacowaniu rachunku.