Diese Seite enthält Tipps zur Fehlerbehebung für den Einstieg in die Leistungsüberwachung oder die Verwendung von Leistungsüberwachungsfunktionen und -tools.
Erste Überprüfungen zur Fehlerbehebung
Die folgenden zwei Überprüfungen sind allgemeine Best Practices, die jedem vor der weiteren Fehlerbehebung empfohlen werden.
1. Überprüfen Sie Protokollmeldungen auf Leistungsereignisse
Überprüfen Sie Ihre Protokollmeldungen, um sicherzustellen, dass das Leistungsüberwachungs-SDK Leistungsereignisse erfasst.
Öffnen Sie die Entwicklertools Ihres Browsers (z. B. die Registerkarte Netzwerk für Chrome Dev Tools oder im Netzwerkmonitor für Firefox ).
Aktualisieren Sie Ihre Web-App im Browser.
Überprüfen Sie Ihre Protokollmeldungen auf Fehlermeldungen.
Suchen Sie nach einigen Sekunden in den Entwicklertools Ihres Browsers nach einem Netzwerkaufruf für
firebaselogging.googleapis.com
. Das Vorhandensein dieses Netzwerkaufrufs zeigt, dass der Browser Leistungsdaten an Firebase sendet.
Wenn Ihre App keine Leistungsereignisse protokolliert, lesen Sie die Tipps zur Fehlerbehebung .
2. Überprüfen Sie das Firebase-Status-Dashboard
Überprüfen Sie das Firebase-Status-Dashboard , falls ein bekannter Ausfall für Firebase oder für die Leistungsüberwachung vorliegt.
Erste Schritte mit der Leistungsüberwachung
Wenn Sie mit der Leistungsüberwachung ( iOS+ | Android | Web ) beginnen, können die folgenden Tipps zur Fehlerbehebung bei Problemen helfen, bei denen Firebase das SDK erkennt oder Ihre ersten Leistungsdaten in der Firebase-Konsole anzeigt.
Firebase kann erkennen, ob Sie das Leistungsüberwachungs-SDK erfolgreich zu Ihrer App hinzugefügt haben, wenn es Ereignisinformationen (wie App-Interaktionen) von Ihrer App empfängt. Normalerweise zeigt das Leistungs- Dashboard der Firebase-Konsole innerhalb von 10 Minuten nach dem Start Ihrer App die Meldung „SDK erkannt“ an. Dann zeigt das Dashboard innerhalb von 30 Minuten die ersten verarbeiteten Daten an.
Wenn seit dem Hinzufügen der neuesten Version des SDK zu Ihrer App mehr als 10 Minuten vergangen sind und immer noch keine Änderung angezeigt wird, überprüfen Sie Ihre Protokollmeldungen , um sicherzustellen, dass die Leistungsüberwachung Ereignisse protokolliert. Probieren Sie die entsprechenden Schritte zur Fehlerbehebung aus, wie unten beschrieben, um eine verzögerte SDK-Erkennungsmeldung zu beheben.
Wenn Sie noch lokal entwickeln, versuchen Sie, mehr Ereignisse für die Datenerfassung zu generieren:
Stellen Sie Ihre Web-App in einer lokalen Umgebung bereit und zeigen Sie sie an.
Generieren Sie Ereignisse, indem Sie Unterseiten für Ihre Website laden, mit Ihrer App interagieren und/oder Netzwerkanfragen auslösen. Achten Sie darauf, den Browser-Tab nach dem Laden der Seite mindestens 10 Sekunden lang geöffnet zu lassen.
Stellen Sie sicher, dass Ihr Firebase-Konfigurationsobjekt Ihrer App korrekt hinzugefügt wurde und dass Sie das Objekt nicht geändert haben. Überprüfen Sie insbesondere Folgendes:
- Die Firebase-Web-App-ID (
appId
) im Konfigurationsobjekt ist für Ihre App korrekt. Suchen Sie Ihre Firebase-App-ID auf der Karte Ihre Apps Ihrer Projekteinstellungen .
Wenn etwas mit dem Konfigurationsobjekt in Ihrer App nicht in Ordnung zu sein scheint, versuchen Sie Folgendes:
Löschen Sie das Konfigurationsobjekt, das Sie derzeit in Ihrer App haben.
Befolgen Sie diese Anweisungen , um ein neues Konfigurationsobjekt zu erhalten und es Ihrer Web-App hinzuzufügen.
- Die Firebase-Web-App-ID (
Wenn das SDK Ereignisse protokolliert und alles korrekt eingerichtet zu sein scheint, aber die SDK-Erkennungsmeldung oder die verarbeiteten Daten (nach zwei Stunden) immer noch nicht angezeigt werden, wenden Sie sich an den Firebase-Support .
Stellen Sie sicher, dass das Leistungsüberwachungs-SDK in Ihrer App korrekt initialisiert ist.
Stellen Sie sicher, dass das Leistungsüberwachungs-SDK nicht durch das folgende Flag deaktiviert wird:
-
performance.instrumentationEnabled
-
Stellen Sie sicher, dass Ihr Browser-Caching deaktiviert ist , da der Browser sonst möglicherweise keine neuen Instrumentierungseinstellungen erfasst.
Schließen Sie den Webseiten-Tab und öffnen Sie ihn erneut. Überprüfen Sie die Protokollierung erneut.
Wenn Sie Ihrer App gerade das Performance Monitoring SDK hinzugefügt haben, müssen Sie Ihre App möglicherweise vollständig neu starten, damit das SDK funktioniert.
Wenn Sie in Ihrer App nichts Deaktiviertes finden, wenden Sie sich an den Firebase-Support .
Die Leistungsüberwachung verarbeitet Leistungsereignisdaten, bevor sie im Leistungs- Dashboard angezeigt werden.
Wenn seit dem Erscheinen der Meldung „SDK erkannt“ mehr als 24 Stunden vergangen sind und immer noch keine Daten angezeigt werden, überprüfen Sie das Firebase-Status-Dashboard , ob ein bekannter Ausfall vorliegt. Wenn kein Ausfall vorliegt, wenden Sie sich an den Firebase-Support .
Allgemeine Fehlerbehebung
Wenn Sie das SDK erfolgreich hinzugefügt haben und die Leistungsüberwachung in Ihrer App verwenden, können die folgenden Tipps zur Fehlerbehebung bei allgemeinen Problemen helfen, die Leistungsüberwachungsfunktionen und -tools betreffen.
Wenn Sie keine Protokollmeldungen für Leistungsereignisse sehen , versuchen Sie es mit den folgenden Schritten zur Fehlerbehebung:
Stellen Sie sicher, dass das Leistungsüberwachungs-SDK in Ihrer App korrekt initialisiert ist.
Stellen Sie sicher, dass das Leistungsüberwachungs-SDK nicht durch das folgende Flag deaktiviert wird:
-
performance.instrumentationEnabled
-
Stellen Sie sicher, dass Ihr Browser-Caching deaktiviert ist , da der Browser sonst möglicherweise keine neuen Instrumentierungseinstellungen erfasst.
Schließen Sie den Webseiten-Tab und öffnen Sie ihn erneut. Überprüfen Sie die Protokollierung erneut.
Wenn Sie Ihrer App gerade das Performance Monitoring SDK hinzugefügt haben, müssen Sie Ihre App möglicherweise vollständig neu starten, damit das SDK funktioniert.
Wenn Sie in Ihrer App nichts Deaktiviertes finden, wenden Sie sich an den Firebase-Support .
Wenn Sie keine Daten für die erste Eingabeverzögerungsmetrik sehen, versuchen Sie es mit den folgenden Schritten zur Fehlerbehebung:
Beachten Sie, dass die Leistungsüberwachung nur die erste Eingabeverzögerungsmetrik aufzeichnet, wenn ein Benutzer innerhalb der ersten 5 Sekunden nach dem Laden der Seite auf die Webseite klickt.
Stellen Sie sicher, dass Sie Ihre App so eingerichtet haben, dass diese Metrik gemessen wird. Die erste Eingangsverzögerungsmetrik erfordert eine manuelle Einrichtung . Insbesondere müssen Sie die Polyfill-Bibliothek für diese Metrik hinzufügen. Anweisungen zur Installation finden Sie in der Dokumentation der Bibliothek.
Beachten Sie, dass das Hinzufügen dieser Polyfill-Bibliothek nicht erforderlich ist, damit die Leistungsüberwachung andere Web-App-Metriken melden kann.
Sehen Sie Leistungsdaten für automatisch erfasste Ablaufverfolgungen , aber nicht für benutzerdefinierte Codeablaufverfolgungen ? Versuchen Sie die folgenden Schritte zur Fehlerbehebung:
Überprüfen Sie die Einrichtung von benutzerdefinierten Code-Traces, die über die Trace-API instrumentiert wurden, insbesondere Folgendes:
- Namen für benutzerdefinierte Codeablaufverfolgungen und benutzerdefinierte Metriken müssen die folgenden Anforderungen erfüllen: keine führenden oder abschließenden Leerzeichen, kein führender Unterstrich (
_
) und eine maximale Länge von 32 Zeichen. - Alle Ablaufverfolgungen müssen gestartet und gestoppt werden. Traces, die nicht gestartet, nicht gestoppt oder vor dem Start gestoppt wurden, werden nicht protokolliert.
Beachten Sie, dass Sie bei Verwendung der Methode
record()
Ihre Ablaufverfolgung nicht explizit starten oder stoppen müssen.- Namen für benutzerdefinierte Codeablaufverfolgungen und benutzerdefinierte Metriken müssen die folgenden Anforderungen erfüllen: keine führenden oder abschließenden Leerzeichen, kein führender Unterstrich (
Stellen Sie sicher, dass die Datenerfassung der Leistungsüberwachung nicht durch das folgende Flag deaktiviert ist :
performance.dataCollectionEnabled
Dieses Flag steuert nur die Erfassung von Daten für benutzerdefinierte Codeablaufverfolgungen (nicht alle Daten).
Überprüfen Sie Ihre Protokollmeldungen, um sicherzustellen, dass die Leistungsüberwachung erwartete Ablaufverfolgungen für benutzerdefinierten Code protokolliert.
Wenn die Leistungsüberwachung Ereignisse protokolliert, aber nach 24 Stunden keine Daten angezeigt werden, wenden Sie sich an den Firebase-Support .
Wenn Ihnen Netzwerkanforderungsdaten fehlen, beachten Sie Folgendes:
Die Leistungsüberwachung erfasst automatisch Metriken für Netzwerkanfragen, die von der Browser-API gemeldet werden. Diese Berichte enthalten keine fehlgeschlagenen Netzwerkanforderungen.
Abhängig vom Verhalten Ihres Codes und der von Ihrem Code verwendeten Netzwerkbibliotheken meldet die Leistungsüberwachung möglicherweise nur abgeschlossene Netzwerkanforderungen. Dies bedeutet, dass offen gelassene HTTP/S-Verbindungen möglicherweise nicht gemeldet werden.
Erfahren Sie mehr darüber , wie Performance Monitoring Netzwerkanforderungsdaten unter URL-Mustern aggregiert .
Sie können auch benutzerdefinierte URL-Muster ausprobieren!
FAQ
Wir haben Top Issues durch Recent Alerts ersetzt, als Folgemaßnahme zu unserer kürzlichen Einführung von Alerts, die Sie automatisch benachrichtigen, wenn die von Ihnen festgelegten Schwellenwerte überschritten werden. Probleme sind jetzt veraltet und werden durch Warnungen ersetzt.
Die Apps-Auswahl oben auf der Leistungskarte filtert die Warnungseinträge unter Letzte Warnungen . Es werden nur die drei neuesten Warnungen für die ausgewählte(n) App(s) angezeigt.
Weitere Informationen zu Warnungen finden Sie unter Einrichten von Warnungen für Leistungsprobleme .
Die Leistungsüberwachung unterstützt Warnungen für Metriken, die definierte Schwellenwerte überschreiten. Um Verwechslungen mit diesen konfigurierbaren Schwellenwerten für Leistungsmetriken zu vermeiden, haben wir die Möglichkeit entfernt, Schwellenwerte für Probleme zu konfigurieren .
Wir haben die Seiten „Details“ und „Metriken“ durch eine neu gestaltete, zentralisierte Benutzeroberfläche (UI) ersetzt, um die Problembehandlung zu verbessern. Diese neue Benutzeroberfläche zur Fehlerbehebung bietet die gleiche Kernfunktionalität wie Details und Metriken. Weitere Informationen zur Fehlerbehebung finden Sie unter Weitere Daten für eine bestimmte Ablaufverfolgung anzeigen .
Die Leistungsüberwachung erfasst Leistungsdaten von den Benutzergeräten Ihrer App. Wenn Ihre Anwendung viele Benutzer hat oder wenn die App eine große Menge an Leistungsaktivitäten generiert, kann die Leistungsüberwachung die Datenerfassung auf eine Teilmenge von Geräten beschränken, um die Anzahl der verarbeiteten Ereignisse zu reduzieren. Diese Grenzwerte sind hoch genug, damit die Metrikwerte auch bei weniger Ereignissen immer noch repräsentativ für die App-Erfahrung Ihres Benutzers sind.
Um das von uns erfasste Datenvolumen zu verwalten, verwendet Performance Monitoring die folgenden Stichprobenoptionen:
Ratenbegrenzung auf dem Gerät : Um zu verhindern, dass ein Gerät plötzliche Trace-Bursts sendet, begrenzen wir die Anzahl der von einem Gerät gesendeten Code- und Netzwerkanforderungs-Traces auf 300 Ereignisse alle 10 Minuten. Dieser Ansatz schützt das Gerät vor Schleifeninstrumenten, die große Mengen an Leistungsdaten senden können, und verhindert, dass ein einzelnes Gerät die Leistungsmessungen verzerrt.
Dynamisches Sampling : Die Leistungsüberwachung erfasst etwa 100 Millionen Ereignisse für Code-Traces und 100 Millionen für Netzwerkanfrage-Traces pro App für alle App-Benutzer. Eine dynamische Abtastrate wird auf Geräten abgerufen (mit Firebase Remote Config), um zu bestimmen, ob ein zufälliges Gerät Ablaufverfolgungen erfassen und senden soll. Ein nicht zum Sampling ausgewähltes Gerät sendet keine Events. Die dynamische Abtastrate ist anwendungsspezifisch und passt sich an, um sicherzustellen, dass das Gesamtvolumen der gesammelten Daten unter dem Grenzwert bleibt.
Benutzersitzungen senden zusätzliche, detaillierte Daten vom Gerät eines Benutzers, was mehr Ressourcen zum Erfassen und Senden der Daten erfordert. Um die Auswirkungen von Benutzersitzungen zu minimieren, kann die Leistungsüberwachung auch die Anzahl der Sitzungen einschränken.
Serverseitige Ratenbegrenzung : Um sicherzustellen, dass Apps das Sampling-Limit nicht überschreiten, verwendet die Leistungsüberwachung möglicherweise serverseitiges Sampling, um einige von Geräten empfangene Ereignisse zu verwerfen. Obwohl diese Art der Begrenzung die Effektivität unserer Metriken nicht ändert, kann sie geringfügige Musterverschiebungen verursachen, einschließlich der folgenden:
- Die Anzahl der Ablaufverfolgungen kann sich von der Anzahl der Ausführungsschritte eines Codeabschnitts unterscheiden.
- Ablaufverfolgungen, die im Code eng gekoppelt sind, können jeweils eine unterschiedliche Anzahl von Abtastungen aufweisen.
Wir haben die Registerkarte Probleme durch die Einführung von Warnungen ersetzt, die Sie automatisch benachrichtigen, wenn die von Ihnen festgelegten Schwellenwerte überschritten werden. Sie müssen die Firebase-Konsole nicht mehr manuell überprüfen, um den Status eines Schwellenwerts zu ermitteln. Weitere Informationen zu Warnungen finden Sie unter Einrichten von Warnungen bei Leistungsproblemen .
Wir haben den Abschnitt „Leistungsüberwachung“ der Firebase-Konsole neu gestaltet, sodass auf der Registerkarte „Dashboard “ Ihre wichtigsten Messwerte und alle Ihre Spuren an einem Ort angezeigt werden. Im Rahmen der Neugestaltung haben wir die Seiten „Auf Gerät“ und „Netzwerk“ entfernt.
Die Ablaufverfolgungstabelle unten auf der Registerkarte „Dashboard “ enthält dieselben Informationen wie die Registerkarten „Auf Gerät “ und „Netzwerk “, jedoch mit einigen zusätzlichen Funktionen, einschließlich der Möglichkeit, Ihre Ablaufverfolgungen nach der prozentualen Änderung für eine bestimmte Metrik zu sortieren. Um alle Metriken und Daten für eine bestimmte Ablaufverfolgung anzuzeigen, klicken Sie auf den Ablaufverfolgungsnamen in der Ablaufverfolgungstabelle.
Zeigen Sie Ihre Ablaufverfolgungen in den folgenden Unterregisterkarten der Ablaufverfolgungstabelle an:
- Netzwerkanforderungs-Traces (sowohl vorkonfigurierte als auch benutzerdefinierte) – Unterregisterkarte „Netzwerkanforderungen“ .
- Traces für benutzerdefinierten Code – Unterregisterkarte für benutzerdefinierte Traces
- Ablaufverfolgungen für App-Start, App-im-Vordergrund, App-im-Hintergrund – Unterregisterkarte Benutzerdefinierte Ablaufverfolgungen
- Bildschirmwiedergabespuren – Unterregisterkarte Bildschirmwiedergabe
- Seitenladespuren — Unterregisterkarte Seitenladevorgang
Einzelheiten zur Ablaufverfolgungstabelle und zum Anzeigen von Metriken und Daten finden Sie auf der Übersichtsseite der Konsole ( iOS+ | Android | Web ).
Langsame Rendering-Frames und eingefrorene Frames werden mit einer angenommenen Aktualisierungsrate des Geräts von 60 Hz berechnet. Wenn die Aktualisierungsrate eines Geräts niedriger als 60 Hz ist, hat jeder Frame eine langsamere Renderzeit, da weniger Frames pro Sekunde gerendert werden. Längere Renderzeiten können dazu führen, dass mehr langsame oder eingefrorene Frames gemeldet werden, da mehr Frames langsamer gerendert werden oder einfrieren. Wenn die Aktualisierungsrate eines Geräts jedoch höher als 60 Hz ist, hat jeder Frame eine schnellere Renderzeit. Dies kann dazu führen, dass weniger langsame oder eingefrorene Frames gemeldet werden. Dies ist eine aktuelle Einschränkung im Leistungsüberwachungs-SDK.
Wenn Leistungsüberwachung das einzige Firebase-Produkt in Ihrer App ist, können Sie das eigenständige Leistungsüberwachungs-SDK (und das empfohlene Header-Skript unten) verwenden, wenn Sie daran interessiert sind:
- Verwenden einer Namespace-Bibliothek
- Reduzieren Sie die Größe Ihres SDK-Pakets
- Verzögern der Initialisierung des SDK bis nach dem Laden Ihrer Seite
So binden Sie das eigenständige Leistungsüberwachungs-SDK in Ihre App ein und verzögern seine Initialisierung bis nach dem Laden Ihrer Seite:
- Fügen Sie das folgende Skript zum Header Ihrer Indexdatei hinzu.
- Achten Sie darauf , das Firebase-Projektkonfigurationsobjekt Ihrer App hinzuzufügen .
(function(sa,fbc){function load(f,c){var a=document.createElement('script'); a.async=1;a.src=f;var s=document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(a,s);}load(sa); window.addEventListener('load',function(){firebase.initializeApp(fbc).performance()}); })(performance_standalone, firebaseConfig);
Wo,
- performance_standalone ist
'https://www.gstatic.com/firebasejs/9.17.2/firebase-performance-standalone.js'
- firebaseConfig ist das Firebase-Konfigurationsobjekt Ihrer App
Das obige Skript lädt das eigenständige SDK asynchron und initialisiert dann Firebase , nachdem das onload
Ereignis des Fensters ausgelöst wurde. Diese Taktik reduziert die Auswirkungen, die das SDK auf die Seitenlademetriken haben könnte, da der Browser seine Lademetriken bereits gemeldet hat, wenn Sie das SDK initialisieren.
Near real-time data processing and display
Firebase Performance Monitoring processes collected performance data as it comes in, which results in near real-time data display in the Firebase console. Processed data displays in the console within a few minutes of its collection, hence the term "near real-time".
To take advantage of near real-time data processing, make sure your app uses a real-time compatible SDK version .
To take advantage of near real-time data processing, you only need to make sure that your app uses a Performance Monitoring SDK version that's compatible with real-time data processing.
These are the real-time compatible SDK versions:
- iOS — v7.3.0 or later
- tvOS — v8.9.0 or later
- Android — v19.0.10 or later (or Firebase Android BoM v26.1.0 or later)
- Web — v7.14.0 or later
Note that we always recommend using the latest version of SDK, but any version listed above will enable Performance Monitoring to process your data in near real time.
These are the SDK versions compatible with real-time data processing:
- iOS — v7.3.0 or later
- tvOS — v8.9.0 or later
- Android — v19.0.10 or later (or Firebase Android BoM v26.1.0 or later)
- Web — v7.14.0 or later
Note that we always recommend using the latest version of SDK, but any version listed above will enable Performance Monitoring to process your data in near real time.
If your app doesn't use a real-time compatible SDK version, you will still see all your app's performance data in the Firebase console. However, the display of performance data will be delayed by roughly 36 hours from the time of its collection.
Yes! Regardless of which SDK version an app instance uses, you'll see performance data from all your users.
However, if you're looking at recent data (less than roughly 36 hours old), then the displayed data is from users of app instances using a real-time compatible SDK version. The non-recent data, though, includes performance data from all versions of your app.
Contacting Firebase Support
If you reach out to Firebase Support , always include your Firebase App ID. Find your Firebase App ID in the Your apps card of your Project settings .