Zmierz wydajność aplikacji Firebase Realtime Database za pomocą narzędzia do profilowania bazy danych, które jest wbudowane w interfejs wiersza poleceń Firebase. Narzędzie profilujące rejestruje całą aktywność w Twojej bazie danych w określonym 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ę nieindeksowanych zapytań.
Tworzenie profilu
Zanim zaczniesz profilowanie Firebase Realtime Database, upewnij się, że używasz najnowszej wersji interfejsu wiersza poleceń Firebase i że masz go zainicjowany w przypadku bazy danych i projektu, które chcesz profilować. Pamiętaj, że musisz być edytorem lub właścicielem tego projektu, aby go wyświetlić.
Rozpocznij profilowanie bazy danych za pomocą tego polecenia:
Podczas rejestrowania operacji z Twojej bazy danych i tworzenia profilu profilator wyświetla komunikat o stanie.firebase database:profile
Naciśnij Enter, aby wypełnić profil i wyświetlić wyniki.
Interpretowanie wyników
Narzędzie do profilowania agreguje dane zebrane na temat operacji w Twojej bazie danych i wyświetla wyniki w 3 głównych kategoriach: szybkość, szerokość pasma i zapytania niezaindeksowane.
Szybkość
Raport Prędkość mierzy czas odpowiedzi 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 profilujące łą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ść wykonania:średni czas potrzebny serwerowi na wykonanie logiki biznesowej potrzebnej do obsługi określonego typu operacji na tej ścieżce. Tu mierzony jest przedział czasu, który zaczyna się po tym, który jest mierzony w ramach „Średniego czasu oczekiwania”.
- Ś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 to w przybliżeniu suma czasu oczekiwania na żądanie i szybkości jego wykonania.
- 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ść odczytywania danych | Czas odpowiedzi serwera na żądania klienta dotyczące odczytu danych z bazy danych. Czas wykonania odczytu zależy od ilości odczytywanych danych, ale nawet niewielkie odczyty mogą być opóźnione przez wstępne pobieranie do pamięci podręcznej. |
Zapisuj dane o szybkości wykonania | Czas odpowiedzi serwera na żądania klienta dotyczące zapisywania danych w bazie danych. Czas wykonywania operacji zapisu jest proporcjonalny do ilości zapisywanych danych. |
Szybkość wykonania połączenia | Czas odpowiedzi serwera na żądania ustanowienia klientów bazy danych. Opóźnienie w przypadku żądań połączenia jest w głównej mierze spowodowane księgowaniem po stronie serwera w pamięci, które jest związane z zarządzaniem połączeniami. |
Szybkość wykonania transmisji | Czas potrzebny serwerowi na rozpowszechnienie danych do klientów, którzy nasłuchują danej ścieżki w celu uzyskania aktualizacji w czasie rzeczywistym. Właściwość Liczba w raporcie Szybkość transmisji zbiorczej agreguje liczbę 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 10 klientów. Właściwość Odmowa udzielenia uprawnień 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. Nie należy jednak szacować rozliczeń na podstawie raportu Przepustowość, ponieważ nie uwzględnia on przepustowości używanej do 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 o przepustowości 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 wykonanych na danej ścieżce.
Średnia:średnia liczba pobranych lub przesłanych bajtów w przypadku operacji na podanej ścieżce (bajty/zapis lub bajty/odczyt).
Raport o przepustowości | |
---|---|
Pobrane bajty | dane zużywane przez operacje odczytu i transmisji wysyłane 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.
- Indeksowanie: reguła, którą należy dodać, aby rozwiązać problem z niezaindeksowanymi zapytaniami. Dowiedz się więcej o indeksowaniu w artykule Indeksowanie danych.
- Liczba: liczba nieprzetworzonych zapytań, które wystąpiły na danej ścieżce.
Zaawansowane profilowanie
Aby zobaczyć wszystkie operacje wykonywane przez bazę danych, użyj flagi --raw
podczas profilowania bazy danych w ten sposób:
firebase database:profile --raw
Dane wyjściowe w postaci tekstu zawierają też informacje o kliencie dotyczące każdej operacji, takie jak ciągi znaków userAgent
i adresy IP. Więcej informacji o różnych operacjach profilowanych w Twoim Firebase Realtime Database znajdziesz w sekcji 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 dostarczyć Ci 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 naliczanego przez Firebase, które nie są objęte profilem 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 podstawowego protokołu ten ruch może obejmować: opóźnienia związane z protokołem czasu rzeczywistego Firebase Realtime Database, opóźnienia związane z WebSocket i opóźnienia związane z nagłówkiem HTTP. Za każdym razem, gdy nawiązywane jest połączenie, ten koszt wraz z kosztami szyfrowania SSL przyczynia się do zwiększenia kosztów 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: koszty związane z szyfrowaniem SSL niezbędnym do bezpiecznych połączeń. Średnio koszt ten wynosi około 3,5 KB na początkowe uściski dłoni i około 40 B na nagłówki rekordów TLS w każdej wysyłanej wiadomości. W przypadku większości aplikacji jest to niewielki odsetek 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.