Mierz wydajność Firebase Realtime Database za pomocą narzędzia do profilowania bazy danych, które jest wbudowane w interfejs wiersza poleceń Firebase. Narzędzie do profilowania rejestruje całą aktywność w bazie danych w danym okresie, a następnie generuje raport szczegółowy. Korzystaj z raportu szczegółowego, aby rozwiązywać problemy z wydajnością bazy danych, wykrywać obszary problematyczne i zmniejszać liczbę niezindeksowanych 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 dla bazy danych i projektu, które chcesz profilować. Pamiętaj, że aby profilować, musisz być edytującym lub właścicielem tego projektu.
Rozpocznij profilowanie bazy danych za pomocą tego polecenia:
Profiler wyświetla komunikat o stanie, gdy rejestruje operacje z bazy danych i tworzy profil.firebase database:profile
Naciśnij Enter, aby dokończyć tworzenie profilu i wyświetlić wyniki.
Interpretowanie wyników
Narzędzie do profilowania agreguje zebrane dane o operacjach bazy danych i wyświetla wyniki w 3 głównych kategoriach: szybkość, przepustowość i niezindeksowane zapytania.
Szybkość
Raport dotyczący szybkości mierzy czas odpowiedzi serwera (w milisekundach) dla każdego typu operacji. Jednak szybkość mierzona w raporcie Szybkość może nie odzwierciedlać rzeczywistej szybkości, jaką odczuwają użytkownicy. Różne czynniki, w tym warunki sieciowe, mogą zwiększać czas oczekiwania po stronie klienta.
Raport szybkości zawiera te właściwości:
- Ścieżka:ścieżka w bazie danych, w której miały miejsce operacje. Jeśli jest ich więcej niż 25, narzędzie do profilowania zwija je do ścieżki nadrzędnej i dodaje znacznik
$wildcard. W raporcie możesz zobaczyć katalog główny bazy danych, który jest oznaczony ukośnikiem/. - Liczba:liczba operacji, które miały miejsce w danej ścieżce.
- Średnia szybkość wykonywania:średni czas, jaki zajmuje serwerowi wykonanie logiki biznesowej potrzebnej do obsługi określonego typu operacji w tej ścieżce. Przedział czasu mierzony w tym przypadku zaczyna się po przedziale mierzonym przez „Średni czas oczekiwania” opisany poniżej.
- Średni czas oczekiwania:średni czas, przez jaki żądania oczekują w kolejce przed wykonaniem. To opóźnienie występuje we wszystkich żądaniach 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 uprawnień:liczba operacji w danej ś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ść wykonywania odczytu | Czas odpowiedzi serwera na żądania klienta dotyczące odczytu danych z bazy danych. Czas wykonywania odczytu zwykle skaluje się wraz z ilością odczytywanych danych, ale nawet niektóre małe odczyty mogą być opóźnione przez pobieranie z wyprzedzeniem do pamięci podręcznej. |
| Szybkość wykonywania zapisu | Czas odpowiedzi serwera na żądania klienta dotyczące zapisu danych w bazie danych. Czas wykonywania zapisu skaluje się wraz z ilością zapisywanych danych. |
| Szybkość wykonywania połączeń | Czas odpowiedzi serwera na żądania nawiązania połączenia z klientami bazy danych. Czas oczekiwania na żądania połączenia jest zdominowany przez księgowanie po stronie serwera w pamięci, związane z zarządzaniem połączeniami. |
| Szybkość wykonywania transmisji | Czas, jaki serwer potrzebuje na rozpowszechnienie danych wśród klientów nasłuchujących danej ścieżki pod kątem aktualizacji w czasie rzeczywistym. Właściwość Liczba w raporcie Szybkość transmisji podaje łą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 wysłał aktualizację do wszystkich 10 klientów, liczba transmisji odzwierciedla tylko 1 transmisję, mimo że dane otrzymało 10 klientów. Właściwość Odmowa uprawnień nie jest uwzględniana w raporcie Szybkość transmisji. |
Przepustowość
Raport dotyczący przepustowości zawiera informacje o tym, ile danych zużywa baza danych w ramach operacji przychodzących i wychodzących. Nie należy jednak używać raportu przepustowości do szacowania rozliczeń, ponieważ nie obejmuje on przepustowości wykorzystywanej 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 rozpowszechniania do i z bazy danych. To narzędzie służy 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 miały miejsce operacje. Jeśli jest ich więcej niż 25, narzędzie do profilowania zwija je do ścieżki nadrzędnej.
Łącznie:łączna liczba bajtów wychodzących lub przychodzących użytych we wszystkich operacjach w danej ścieżce.
Liczba:liczba operacji, które miały miejsce w danej ścieżce.
Average (Średnia): średnia liczba pobranych lub przesłanych bajtów w ramach operacji w danej ścieżce (bajty/zapis lub bajty/odczyt).
| Raport o przepustowości | |
|---|---|
| Pobrane bajty | Dane wykorzystywane przez operacje odczytu i transmisji wysyłane 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 o rozmiarze 0 bajtów w sekcji danych przychodzących. |
Niezindeksowane zapytania
Zapytania nieindeksowane mogą być kosztowne, ponieważ klienci pobierają wszystkie dane w danej lokalizacji, a następnie wykonują na nich zapytania. Powoduje to niepotrzebne zużycie przepustowości. Rozwiąż jak najwięcej problemów z nieindeksowanymi zapytaniami, 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 nieindeksowane 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 danej ścieżce.
Zaawansowane profilowanie
Aby wyświetlić wszystkie operacje obsługiwane przez bazę danych, podczas profilowania bazy danych użyj flagi --raw w ten sposób:
firebase database:profile --raw
Nieprzetworzone dane wyjściowe zawierają też informacje o kliencie dla każdej operacji, takie jak ciągi znaków userAgent i adresy IP. Więcej informacji o różnych operacjach profilowanych w Firebase Realtime Database znajdziesz w artykule Typy operacji w Firebase Realtime Database.
Narzędzie do profilowania: nie jest to narzędzie do rozliczeń
Nie używaj narzędzia do profilowania, aby oszacować koszt 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ć koszty. Nie uwzględnia ruchu w sieci, a jedynie rejestruje szacunkową ilość danych aplikacji wysyłanych w odpowiedziach.
Oto kilka typowych przykładów ruchu w sieci rozliczanego przez Firebase, który nie jest uwzględniony w profilu bazy danych:
- Narzut 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 ruch ten 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, przyczynia się do kosztów połączenia. Zwykle nie jest to duża przepustowość, ale może być znaczna, jeśli ładunki są niewielkie lub nawiązujesz częste, krótkie połączenia.
- Narzut szyfrowania SSL: z narzutem szyfrowania SSL, który jest niezbędny do nawiązywania bezpiecznych połączeń, wiąże się koszt. Średnio jest to 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 procent rachunku. Może to jednak stanowić duży odsetek, jeśli w Twoim przypadku wymaganych jest wiele uzgodnień SSL. Na przykład urządzenia, które nie obsługują biletów sesji TLS, mogą wymagać dużej liczby uzgodnień połączeń SSL.
Dowiedz się więcej o interpretowaniu i szacowaniu rachunku.