Rozwiązywanie problemów z monitorowaniem wydajności i najczęstsze pytania
Na tej stronie znajdziesz wskazówki dotyczące rozwiązywania problemów, które pomogą Ci zacząć korzystać z Performance Monitoring lub funkcji i narzędzi Performance Monitoring.
Pierwsze kroki w rozwiązywaniu problemów
Poniższe 2 sprawdzone metody są zalecane wszystkim użytkownikom przed podjęciem dalszych działań.
1. Sprawdzanie wiadomości w dzienniku pod kątem zdarzeń związanych z wydajnością
Sprawdź wiadomości w logach, aby upewnić się, że pakiet SDK Performance Monitoring rejestruje zdarzenia związane z wydajnością.
Wyświetlanie wiadomości logu dotyczących zdarzeń związanych z wydajnością
Sprawdź, czy w komunikatach dziennika nie ma żadnych błędów.
Po kilku sekundach poszukaj w narzędziach deweloperskich przeglądarki wywołania sieciowego do firebaselogging.googleapis.com. Obecność tego wywołania sieciowego oznacza, że przeglądarka wysyła dane o wydajności do Firebase.
Otwórz Panel stanu Firebase, aby sprawdzić, czy występuje przerwa w dostępie do Firebase lub Performance Monitoring.
Pierwsze kroki w Performance Monitoring
Jeśli dopiero zaczynasz korzystać z Performance Monitoring(iOS+ | Android | Web), poniższe wskazówki dotyczące rozwiązywania problemów mogą Ci pomóc w przypadku problemów związanych z wykrywaniem pakietu SDK przez Firebase lub wyświetlaniem pierwszych danych o wydajności w konsoli Firebase.
Pakiet SDK został dodany do aplikacji, ale konsola nadal wyświetla komunikat o konieczności dodania pakietu SDK
Firebase może wykryć, czy pakiet SDK został dodany do aplikacji, gdy otrzyma z niej informacje o zdarzeniach (np. interakcjach z aplikacją). Zwykle w ciągu 10 minut od uruchomienia aplikacji na paneluFirebasekonsoli wyświetla się komunikat „Wykryto pakiet SDK”.Performance Monitoring W ciągu 30 minut w panelu wyświetlą się wstępnie przetworzone dane.
Jeśli od dodania najnowszej wersji pakietu SDK do aplikacji minęło więcej niż 10 minut, a nadal nie widzisz żadnych zmian, sprawdź komunikaty w dzienniku, aby upewnić się, że Performance Monitoring rejestruje zdarzenia. Aby rozwiązać problem z opóźnionym komunikatem o wykryciu pakietu SDK, wykonaj odpowiednie czynności opisane poniżej.
Aplikacja rejestruje zdarzenia: czynności związane z rozwiązywaniem problemów
Jeśli nadal pracujesz lokalnie, spróbuj wygenerować więcej zdarzeń na potrzeby zbierania danych:
wyświetlanie aplikacji internetowej w środowisku lokalnym;
Generuj zdarzenia, wczytując podstrony witryny, wchodząc w interakcje z aplikacją lub wywołując żądania sieciowe. Po wczytaniu strony pozostaw kartę przeglądarki otwartą przez co najmniej 10 sekund.
Upewnij się, że obiekt konfiguracji Firebase został prawidłowo dodany do aplikacji i że nie został zmodyfikowany. Sprawdź te kwestie:
Identyfikator aplikacji internetowej Firebase (appId) w obiekcie konfiguracji jest prawidłowy w przypadku Twojej aplikacji. Znajdź identyfikator aplikacji Firebase na karcie Twoje aplikacje w settingsustawieniach projektu.
Jeśli w obiekcie konfiguracji w aplikacji coś jest nie tak, spróbuj wykonać te czynności:
Usuń obiekt konfiguracji, który masz obecnie w aplikacji.
Aby uzyskać nowy obiekt konfiguracji i dodać go do aplikacji internetowej, wykonaj te instrukcje.
Jeśli pakiet SDK rejestruje zdarzenia i wszystko wydaje się być prawidłowo skonfigurowane, ale nadal nie widzisz komunikatu o wykryciu pakietu SDK ani przetworzonych danych (po 2 godzinach), skontaktuj się z zespołem pomocy Firebase.
Aplikacja nie rejestruje zdarzeń: kroki rozwiązywania problemów
Upewnij się, że Performance Monitoringpakiet SDK jest prawidłowo zainicjowany w Twojej aplikacji.
Upewnij się, że pakiet SDK Performance Monitoringnie jest wyłączony za pomocą tej flagi:
performance.instrumentationEnabled
Upewnij się, że buforowanie w przeglądarce jest wyłączone. W przeciwnym razie przeglądarka może nie uwzględniać nowych ustawień instrumentacji.
Zamknij, a potem ponownie otwórz kartę strony. Sprawdź ponownie, czy logowanie działa.
Jeśli pakiet SDK został właśnie dodany do aplikacji, może być konieczne jej ponowne uruchomienie, aby zaczął działać.Performance Monitoring
Konsola informuje, że pakiet SDK został wykryty, ale nie wyświetla żadnych danych
Performance Monitoring przetwarza dane o zdarzeniach związanych ze skutecznością, zanim wyświetli je w panelu Skuteczność.
Jeśli od pojawienia się komunikatu „Wykryto pakiet SDK” minęło ponad 24 godziny, a nadal nie widzisz danych, sprawdź Panel stanu Firebase, aby dowiedzieć się, czy nie występuje znana awaria. Jeśli nie ma awarii, skontaktuj się z zespołem pomocy Firebase.
Rozwiązywanie ogólnych problemów
Jeśli pakiet SDK został dodany i używasz w aplikacji funkcji Performance Monitoring, poniższe wskazówki dotyczące rozwiązywania problemów mogą pomóc w przypadku ogólnych problemów związanych z funkcjami i narzędziami Performance Monitoring.
Aplikacja nie rejestruje zdarzeń związanych z wydajnością
Pamiętaj, że Performance Monitoring rejestruje tylko wartość pierwszego opóźnienia wejścia, gdy użytkownik kliknie stronę internetową w ciągu 5 sekund od jej wczytania.
Sprawdź, czy aplikacja jest skonfigurowana do pomiaru tego wskaźnika. Dane dotyczące opóźnienia przy pierwszym działaniu wymagają ręcznej konfiguracji.
W szczególności musisz dodać bibliotekę polyfill dla tych danych. Instrukcje instalacji znajdziesz w dokumentacji biblioteki.
Pamiętaj, że dodanie tej biblioteki polyfill nie jest wymagane, aby Performance Monitoring mogło raportować inne rodzaje danych aplikacji internetowych.
Na panelu skuteczności brakuje danych śledzenia niestandardowego
Czy widzisz dane o skuteczności automatycznie zbieranych logów czasu, ale nie widzisz ich w przypadku logów czasu z kodu niestandardowego? Wypróbuj te rozwiązania:
Sprawdź konfigurację śladów kodu niestandardowego instrumentowanych za pomocą interfejsu Trace API, a w szczególności:
Nazwy śladów kodu niestandardowego i danych niestandardowych muszą spełniać te wymagania: nie mogą zawierać spacji na początku ani na końcu, nie mogą zaczynać się od znaku podkreślenia (_), a ich maksymalna długość to 32 znaki.
Wszystkie ślady muszą być uruchomione i zatrzymane. Żadne ślady, które nie zostały rozpoczęte, nie zostały zatrzymane lub zostały zatrzymane przed rozpoczęciem, nie zostaną zarejestrowane.
Pamiętaj, że jeśli używasz metody
record()
nie musisz jawnie rozpoczynać ani zatrzymywać śledzenia.
W panelu skuteczności
brakuje danych o żądaniach sieciowych
Jeśli brakuje Ci danych o żądaniach sieciowych, pamiętaj o tych kwestiach:
Performance Monitoring automatycznie zbiera dane o żądaniach sieciowych zgłaszanych przez interfejs API przeglądarki. Raporty te nie uwzględniają nieudanych żądań sieciowych.
W zależności od działania kodu i bibliotek sieciowych używanych przez Twój kod usługa Performance Monitoring może raportować tylko ukończone żądania sieciowe.
Oznacza to, że otwarte połączenia HTTP/S mogą nie być zgłaszane.
Dane żądań sieciowych nie są agregowane zgodnie z oczekiwaniami
Co się stało z sekcją Najważniejsze problemy na karcie Skuteczność na stronie głównej projektu?
Zastąpiliśmy sekcję Najważniejsze problemy sekcją Ostatnie alerty. Jest to kontynuacja niedawnego wprowadzenia alertów, które automatycznie powiadamiają Cię o przekroczeniu ustawionych przez Ciebie progów. Problemy zostały wycofane i zastąpione alertami.
Selektor aplikacji u góry karty Skuteczność filtruje wpisy alertów w sekcji Ostatnie alerty. Wyświetlane są tylko 3 najnowsze alerty dotyczące wybranych aplikacji.
Co się stało z możliwością ustawiania progów dla problemów w konsoli?
Performance Monitoring obsługuje alerty dotyczące danych, które przekraczają zdefiniowane progi. Aby uniknąć nieporozumień związanych z tymi konfigurowalnymi progami dla danych o skuteczności, usunęliśmy możliwość konfigurowania progów dla problemów.
Co się stało z informacjami w sekcjach Szczegóły i Dane w konsoli Firebase?
Zastąpiliśmy strony Szczegóły i Dane nowo zaprojektowanym, scentralizowanym interfejsem, aby ułatwić Ci rozwiązywanie problemów. Ten nowy interfejs rozwiązywania problemów oferuje te same podstawowe funkcje co sekcje Szczegóły i Dane. Więcej informacji o rozwiązywaniu problemów znajdziesz w sekcji Wyświetlanie większej ilości danych dotyczących konkretnego śledzenia.
Dlaczego liczba próbek nie jest zgodna z moimi oczekiwaniami?
Performance Monitoring zbiera dane o skuteczności z urządzeń użytkowników Twojej aplikacji. Jeśli Twoja aplikacja ma wielu użytkowników lub generuje dużą liczbę danych o wydajności, Performance Monitoring może ograniczyć zbieranie danych do podzbioru urządzeń, aby zmniejszyć liczbę przetwarzanych zdarzeń. Te limity są wystarczająco wysokie, aby nawet przy mniejszej liczbie zdarzeń wartości danych nadal odzwierciedlały wrażenia użytkowników związane z aplikacją.
Aby zarządzać ilością zbieranych danych, Performance Monitoring korzysta z tych opcji próbkowania:
Ograniczanie liczby żądań na urządzeniu: aby zapobiec wysyłaniu przez urządzenie nagłych serii śladów, ograniczamy liczbę śladów kodu i żądania sieciowe wysyłane z urządzenia do 300 zdarzeń co 10 minut. Takie podejście chroni urządzenie przed zapętlonymi instrumentacjami, które mogą wysyłać duże ilości danych o wydajności, i zapobiega zniekształcaniu pomiarów wydajności przez jedno urządzenie.
Próbkowanie dynamiczne:Performance Monitoring codziennie zbiera ograniczoną liczbę śladów kodu i śladów żądań sieciowych w przypadku wszystkich użytkowników aplikacji. Na urządzeniach pobierana jest dynamiczna częstotliwość próbkowania (za pomocą Firebase Remote Config), aby określić, czy losowe urządzenie ma przechwytywać i wysyłać ślady. Urządzenie, które nie zostało wybrane do próbkowania, nie wysyła żadnych zdarzeń. Dynamiczna częstotliwość próbkowania jest specyficzna dla aplikacji i dostosowuje się tak, aby ogólna ilość zebranych danych nie przekraczała limitu.
Sesje użytkowników wysyłają dodatkowe, szczegółowe dane z urządzenia użytkownika, co wymaga większych zasobów do rejestrowania i przesyłania danych. Aby zminimalizować wpływ sesji użytkowników, Performance Monitoring może też ograniczyć liczbę sesji.
Ograniczanie liczby żądań po stronie serwera: aby mieć pewność, że aplikacje nie przekraczają limitu próbkowania, Performance Monitoring może stosować próbkowanie po stronie serwera, aby odrzucać niektóre zdarzenia otrzymywane z urządzeń. Chociaż ten rodzaj ograniczenia nie zmienia skuteczności naszych danych, może powodować niewielkie zmiany wzorców, w tym:
Liczba śladów może się różnić od liczby uruchomień fragmentu kodu.
Ślady, które są ściśle powiązane w kodzie, mogą mieć różną liczbę próbek.
Co się stało z kartą Problemy w konsoli?
Zastąpiliśmy kartę Problemy wprowadzeniem alertów, które automatycznie powiadamiają Cię o przekroczeniu ustawionych przez Ciebie progów. Nie musisz już ręcznie sprawdzać Firebase konsoli, aby określić stan progu. Więcej informacji o alertach znajdziesz w artykule Konfigurowanie alertów dotyczących problemów z wydajnością.
Co się stało z kartami Na urządzeniu i Sieć w konsoli?
Jak wyświetlić ślady, które znajdowały się na tych stronach?
Przeprojektowaliśmy sekcję Performance Monitoring w Firebase konsoli, aby na karcie Panel wyświetlać kluczowe dane i wszystkie logi czasu w jednym miejscu. W ramach zmiany wyglądu usunęliśmy strony Na urządzeniu i Sieć.
Tabela śladów u dołu karty Panel zawiera wszystkie informacje wyświetlane na kartach Na urządzeniu i Sieć, ale z dodatkowymi funkcjami, w tym możliwością sortowania śladów według procentowej zmiany określonych danych. Aby wyświetlić wszystkie dane i rodzaje danych dotyczące konkretnego śladu, kliknij jego nazwę w tabeli śladów.
Ślady możesz wyświetlić w tych podkartach tabeli śladów:
Logi czasu żądań sieciowych (gotowe i niestandardowe) – karta Żądania sieciowe
Logi czasu własnego kodu – karta Logi czasu niestandardowego
Logi czasu uruchomienia aplikacji, działania aplikacji na pierwszym planie i działania aplikacji w tle – karta Niestandardowe logi czasu
Logi czasu renderowania ekranu – karta Renderowanie ekranu
Logi czasu wczytania strony – karta Wczytanie strony
Szczegółowe informacje o tabeli śladów oraz wyświetlaniu danych i statystyk znajdziesz na stronie przeglądu konsoli (iOS | Android | Internet).
Dlaczego liczba wolno wyrenderowanych i zamrożonych klatek nie jest taka, jakiej się spodziewam?
Spowolnione i zablokowane klatki są obliczane przy założeniu, że częstotliwość odświeżania urządzenia wynosi 60 Hz. Jeśli częstotliwość odświeżania urządzenia jest niższa niż 60 Hz, każda klatka będzie renderowana wolniej, ponieważ na sekundę renderowanych jest mniej klatek.
Dłuższy czas renderowania może powodować zgłaszanie większej liczby spowolnionych lub zamrożonych klatek, ponieważ więcej klatek będzie renderowanych wolniej lub będzie zamrożonych. Jeśli jednak częstotliwość odświeżania urządzenia jest wyższa niż 60 Hz, każda klatka będzie renderowana szybciej.
Może to spowodować zgłaszanie mniejszej liczby powolnych lub zamrożonych klatek. Jest to obecne ograniczenie pakietu Performance Monitoring SDK.
Jak dodać do aplikacji internetowej mniejszy pakiet Performance Monitoring JS SDK z przestrzenią nazw („samodzielny” pakiet SDK)?
Jeśli Performance Monitoring jest jedyną usługą Firebase w Twojej aplikacji, możesz użyć samodzielnego pakietu SDK Performance Monitoring (i zalecanego skryptu nagłówka poniżej), jeśli interesuje Cię:
używanie biblioteki z przestrzenią nazw,
zmniejszenie rozmiaru pakietu SDK,
opóźnianie inicjowania pakietu SDK do momentu załadowania strony;
Aby uwzględnić w aplikacji samodzielny pakiet SDK Performance Monitoring i opóźnić jego inicjację do momentu wczytania strony:
Powyższy skrypt asynchronicznie wczytuje samodzielny pakiet SDK, a następnie inicjuje Firebase po wywołaniu zdarzenia onload w oknie. Ta taktyka zmniejsza wpływ, jaki pakiet SDK może mieć na dane wczytywania strony, ponieważ przeglądarka zgłosiła już dane wczytywania, gdy zainicjujesz pakiet SDK.
Więcej informacji o samodzielnym pakiecie SDK Performance Monitoring i skrypcie nagłówka
Ten samodzielny pakiet SDK jest zoptymalizowany pod kątem rozmiaru. Po skompresowaniu za pomocą gzipa ma około 10 KB. Ma wszystkie funkcje Firebase Performance Monitoring oraz minimalny zestaw funkcji podstawowego pakietu SDK Firebase.
Firebase Performance Monitoring korzysta z interfejsów API fetch i Promise, które nie są dostępne w starszych przeglądarkach. Polyfill do tych interfejsów API są zawarte w standardowym pakiecie SDK JavaScript Firebase Performance Monitoring, ale są pomijane w samodzielnym pakiecie SDK, aby zmniejszyć jego rozmiar.
Pakiet Performance Monitoring SDK korzysta częściowo z interfejsu Resource Timing API, aby uzyskiwać z przeglądarki dane o czasie wczytywania strony.
Poniższy fragment kodu zawiera skrypt nagłówka, który obejmuje opóźnioną inicjację pakietu SDK:
(function(sdkSource,firebaseConfigObject){functionload(f,c){//CreatesascripttagtoloadthestandaloneSDKvarsdkScript=document.createElement('script');//Setsittoanasyncscriptsothatitdoesn't interfere with page loadsdkScript.async=1;//SetsthesourceofthescriptsdkScript.src=f;//Insertsthescriptintotheheadofthepagevars=document.getElementsByTagName('script')[0];s.parentNode.insertBefore(sdkScript,s);}//Callstheloadmethodload(sdkSource);//InitializestheSDKonlywhentheonloadmethodiscalledwindow.addEventListener('load',function(){firebase.initializeApp(firebaseConfigObject).performance();});})(performance_standalone,firebaseConfig);
gdzie,
performance_standalone to 'https://www.gstatic.com/firebasejs/11.9.1/firebase-performance-standalone.js'
Przetwarzanie i wyświetlanie danych w czasie zbliżonym do rzeczywistego
Co oznaczają dane o skuteczności „niemal w czasie rzeczywistym”?
Firebase Performance Monitoring przetwarza zebrane dane o skuteczności na bieżąco, co powoduje, że w konsoli Firebase są one wyświetlane niemal w czasie rzeczywistym. Przetworzone dane są wyświetlane w konsoli w ciągu kilku minut od ich zebrania, stąd określenie „niemal w czasie rzeczywistym”.
Jak uzyskać dane o skuteczności aplikacji w czasie zbliżonym do rzeczywistego?
Aby korzystać z przetwarzania danych w czasie zbliżonym do rzeczywistego, musisz tylko zadbać o to, aby Twoja aplikacja używała pakietu SDK w wersji Performance Monitoring, która jest zgodna z przetwarzaniem danych w czasie rzeczywistym.
Są to wersje pakietu SDK zgodne z czasem rzeczywistym:
iOS – wersja 7.3.0 lub nowsza
tvOS – wersja 8.9.0 lub nowsza
Android – wersja 19.0.10 lub nowsza (albo Firebase Android BoM wersja 26.1.0 lub nowsza)
Internet – wersja 7.14.0 lub nowsza
Zalecamy używanie najnowszej wersji pakietu SDK, ale każda z wersji wymienionych powyżej umożliwi Performance Monitoring przetwarzanie danych w czasie zbliżonym do rzeczywistego.
Które wersje pakietu Performance Monitoring SDK są zgodne z czasem rzeczywistym?
Oto wersje pakietu SDK zgodne z przetwarzaniem danych w czasie rzeczywistym:
iOS – wersja 7.3.0 lub nowsza
tvOS – wersja 8.9.0 lub nowsza
Android – wersja 19.0.10 lub nowsza (albo Firebase Android BoM wersja 26.1.0 lub nowsza)
Internet – wersja 7.14.0 lub nowsza
Zalecamy używanie najnowszej wersji pakietu SDK, ale każda z wersji wymienionych powyżej umożliwi Performance Monitoring przetwarzanie danych w czasie zbliżonym do rzeczywistego.
Co się stanie, jeśli nie zaktualizuję aplikacji, aby korzystała z wersji pakietu SDK zgodnej z działaniem w czasie rzeczywistym?
Jeśli Twoja aplikacja nie używa wersji pakietu SDK zgodnej z czasem rzeczywistym, w Firebasekonsoli nadal będziesz widzieć wszystkie dane o jej działaniu. Wyświetlanie danych o skuteczności będzie jednak opóźnione o około 36 godzin od momentu ich zebrania.
Mam już wersję pakietu SDK zgodną z czasem rzeczywistym, ale niektórzy użytkownicy nadal korzystają ze starszych wersji mojej aplikacji. Czy nadal będę widzieć dane o ich działaniu w konsoli Firebase?
Tak. Niezależnie od tego, z której wersji pakietu SDK korzysta instancja aplikacji, zobaczysz dane o wydajności wszystkich użytkowników.
Jeśli jednak przeglądasz najnowsze dane (starsze o mniej więcej 36 godzin), wyświetlane dane pochodzą od użytkowników instancji aplikacji korzystających z wersji pakietu SDK zgodnej z czasem rzeczywistym. Starsze dane obejmują jednak dane o skuteczności ze wszystkich wersji aplikacji.