Zmierz wydajność Firebase Realtime Database za pomocą narzędzia do profilowania baz danych wbudowanego w interfejs wiersza poleceń Firebase. Narzędzie do profilowania rejestruje całą aktywność w Twojej bazie danych w danym przedziale czasu, a potem generuje szczegółowy raport. Korzystaj z szczegółowego raportu, aby rozwiązywać problemy z wydajnością bazy danych, wykrywać obszary problemowe i zmniejszać 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ła ona zainicjalizowana dla bazy danych i projektu, które chcesz profilować. Pamiętaj, że musisz być edytorem lub właścicielem projektu, aby go wyświetlić.
Uruchom profilowanie bazy danych za pomocą tego polecenia:
Profilator wyświetla komunikat o stanie, gdy rejestruje operacje z Twojej bazy danych i tworzy profil.firebase database:profile
Naciśnij Enter, aby wypełnić profil i wyświetlić wyniki.
Interpretowanie wyników
Narzędzie do profilowania agreguje zebrane dane o działaniu bazy danych i wyświetla wyniki w 3 głównych kategoriach: szybkość, przepustowość i zapytania niezindeksowane.
Szybkość
Raport dotyczący szybkości mierzy czas reakcji serwera (w milisekundach) dla każdego typu operacji. Szybkość zmierzona w raporcie dotyczącym szybkości może jednak nie odzwierciedlać rzeczywistej szybkości, z jaką użytkownicy korzystają z witryny. Różne czynniki, w tym stan sieci, mogą zwiększać opóźnienia po stronie klienta.
Raport Szybkość zawiera te usługi:
- Ścieżka: ścieżka w Twojej bazie danych, w której wystąpiły operacje. Jeśli jest ich więcej niż 25, narzędzie do profilowania łączy je w ścieżkę nadrzędną i dodaje znacznik
$wildcard
. W raporcie możesz zobaczyć katalog główny bazy danych, który jest reprezentowany przez ukośnik/
. - Liczba: liczba operacji wykonanych na danej ścieżce.
- Średnia szybkość wykonywania: średni czas potrzebny serwerowi na wykonanie logiki biznesowej niezbędnej do obsługi konkretnego typu operacji na danej ścieżce. Przedział czasu mierzony w tym miejscu zaczyna się po tym czasie mierzonym jako „Średni czas oczekiwania” opisany poniżej.
- Średni czas oczekiwania: średni czas oczekiwania żądań w kolejce przed ich wykonaniem. To opóźnienie dotyczy wszystkich żądań inicjowanych przez klienta. Łączny czas oczekiwania na żądanie po stronie serwera jest przybliżoną sumą czasu oczekiwania na żądanie i szybkości jego wykonywania.
- Odmowa dostępu: liczba operacji na podanej ś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 | |
---|---|
Szybkość odczytu | Czas odpowiedzi serwera na żądania klienta dotyczące odczytu danych z bazy danych. Czas wykonania odczytu jest zwykle proporcjonalny do ilości odczytywanych danych, ale nawet niewielkie odczyty mogą być opóźnione przez wstępny odczyt z pamięci podręcznej. |
Zapisuj dane o szybkości wykonania | Czas odpowiedzi serwera na żądanie klienta dotyczące zapisania danych do bazy danych. Czas wykonywania zapisu skaluje się odpowiednio do ilości zapisywanych danych. |
Szybkość wykonania połączenia | Czas odpowiedzi serwera na żądania nawiązywania połączeń z klientami bazy danych. Czas oczekiwania na połączenie jest zdominowany przez księgowanie po stronie serwera w pamięci związane z zarządzaniem połączeniami. |
Szybkość wykonywania transmisji | Czas potrzebny serwerowi na rozpowszechnianie danych do klientów, którzy nasłuchują danej ścieżki w celu otrzymywania aktualizacji w czasie rzeczywistym. Właściwość Liczba w raporcie o szybkości transmisji zbiera liczbę przeprowadzonych transmisji, a nie liczbę klientów, którzy otrzymali informacje. Jeśli np. 10 klientów nasłuchuje określonej ścieżki, a serwer wysyła aktualizację do wszystkich 10 klientów, liczba transmisji będzie wynosić 1, mimo że dane otrzymało 10 klientów. Właściwość Odmowa dostępu nie jest uwzględniana w raporcie Szybkość transmisji. |
Przepustowość
Raport o przepustowości zawiera informacje o tym, ile danych zużywa baza danych w operacjach przychodzących i wychodzących. Raportu dotyczącego przepustowości nie należy jednak używać do szacowania płatności, ponieważ nie uwzględnia on przepustowości wykorzystywanej na potrzeby innych operacji, takich jak profilowanie bazy danych. Raport Przepustowość w przybliżeniu szacuje rozmiar danych użytych 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 Prędkość transmisji danych zawiera te usługi:
Ścieżka: ścieżka w Twojej bazie danych, w której wystąpiły operacje. Jeśli jest ich więcej niż 25, narzędzie do profilowania łączy je w ścieżkę nadrzędną.
Łącznie: łączna liczba bajtów wychodzących i przyjmowanych w ramach wszystkich operacji 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 między operacjami na danej ścieżce (bajty/zapis lub bajty/odczyt).
Raport o przepustowości | |
---|---|
Pobrane bajty | dane wykorzystywane w ramach operacji odczytu i transmisji wysyłanych za pomocą klienta SDK i interfejsu REST API; |
Przesłane bajty | Dane zużywane przez żądania zapisu przychodzące na serwer bazy danych. Usunięcia są wyświetlane jako zapisy z 0 bajtami w przypadku danych przychodzących. |
Zapytania niezaindeksowane
Zapytania nieindeksowane mogą być kosztowne, ponieważ klienci pobierają wszystkie dane w danej lokalizacji, a następnie wykonują na nich zapytania. Spowoduje to wykorzystanie większej przepustowości niż to konieczne. Rozwiąż jak najwięcej zapytań nieprzetworzonych, aby zoptymalizować wydajność bazy danych.
Raport Zapytania niezindeksowane zawiera te właściwości:
- Ścieżka: ścieżka w Twojej bazie danych, w której wystąpiły niezaindeksowane zapytania.
- Indeks:reguła, którą należy dodać, aby rozwiązywać niezindeksowane zapytania. Dowiedz się więcej o indeksowaniu w artykule Indeksowanie danych.
- Liczba: liczba nieprzetworzonych zapytań, które wystąpiły na danej ścieżce.
Profilowanie zaawansowane
Aby zobaczyć wszystkie operacje wykonywane przez bazę danych, użyj flagi --raw
podczas profilowania bazy danych w ten sposób:
firebase database:profile --raw
Nieprzetworzone dane wyjściowe zawierają też informacje o kliencie dotyczące poszczególnych operacji, np. ciągi tekstowe userAgent
i adresy IP. Dowiedz się więcej o różnych operacjach zprofilowanych w Firebase Realtime Database w Firebase Realtime Database Typy operacji.
Narzędzie profilowania: nie jest narzędziem do rozliczeń.
Nie używaj narzędzia profilującego do szacowania kosztów przepustowości. Narzędzie profilujące ma na celu zapewnienie ogólnego obrazu wydajności bazy danych, aby pomóc Ci w monitorowaniu operacji i rozwiązywaniu problemów, a nie do szacowania rozliczeń. Nie uwzględnia on ruchu sieciowego, a tylko rejestruje szacunkowe dane aplikacji wysyłane w odpowiedziach.
Oto kilka typowych przykładów ruchu w sieci rozliczanego przez Firebase, który nie jest uwzględniony w profilu bazy danych:
- Nakłady związane z protokołem: aby ustanowić i utrzymywać sesję, potrzebny jest dodatkowy ruch między serwerem a klientami. W zależności od bazowego protokołu ruch ten może obejmować: narzut protokołu do Bazy danych czasu rzeczywistego Firebase, narzut WebSocket i narzut nagłówka HTTP. Za każdym razem, gdy nawiązywane jest połączenie, ten koszt, w połączeniu z kosztem szyfrowania SSL, zwiększa koszty połączenia. Chociaż zwykle nie jest to duża ilość przepustowości, może być znacząca, jeśli ładunki są małe lub jeśli często nawiązujesz krótkie połączenia.
- Nakłady związane z szyfrowaniem SSL: szyfrowanie SSL wymaga nakładów, które są niezbędne do nawiązywania bezpiecznych połączeń. Średnio koszt ten wynosi około 3,5 KB na początkowe uściślenie rąk i około 40 bajtów na nagłówki rekordów TLS w każdej wysyłanej wiadomości. W przypadku większości aplikacji to niewielki procent rachunku. Może to jednak prowadzić do znacznego wzrostu procentowego, jeśli w Twoim przypadku wymagane jest wiele sesji SSL. Na przykład urządzenia, które nie obsługują biletów sesji TLS, mogą wymagać dużej liczby inicjowania połączeń SSL.
Dowiedz się więcej o interpretowaniu i szacowaniu rachunku.