Leistungsüberwachung von Feature-Rollouts

Mit Sammlungen den Überblick behalten Sie können Inhalte basierend auf Ihren Einstellungen speichern und kategorisieren.

1. Übersicht

In diesem Codelab erfahren Sie, wie Sie die Leistung Ihrer App während einer Funktionseinführung überwachen. Unsere Beispiel-App verfügt über grundlegende Funktionen und ist so eingerichtet, dass basierend auf einem Firebase Remote Config-Flag ein anderes Hintergrundbild angezeigt wird. Wir gehen Instrumentierungsspuren durch, um die Leistung der App zu überwachen, führen eine Konfigurationsänderung an der App durch, überwachen die Auswirkungen und sehen, wie wir die Leistung verbessern können.

Was Sie lernen werden

  • So fügen Sie Firebase Performance Monitoring zu Ihrer mobilen App hinzu, um sofort einsatzbereite Messwerte zu erhalten (z. B. App-Startzeit und langsame oder eingefrorene Frames)
  • So fügen Sie benutzerdefinierte Ablaufverfolgungen hinzu, um kritische Codepfade Ihrer Benutzerreisen zu verstehen
  • So verwenden Sie das Leistungsüberwachungs-Dashboard, um Ihre Metriken zu verstehen und wichtige Änderungen wie die Einführung einer Funktion zu verfolgen
  • So richten Sie Leistungswarnungen ein, um Ihre wichtigsten Kennzahlen zu überwachen
  • So führen Sie eine Firebase Remote Config-Änderung ein

Voraussetzungen

  • Android Studio 4.0 oder höher
  • Ein Android-Emulator mit API-Level 16 oder höher.
  • Java-Version 8 oder höher
  • Ein grundlegendes Verständnis von Firebase Remote Config

2. Richten Sie das Beispielprojekt ein

Laden Sie den Code herunter

Führen Sie den folgenden Befehl aus, um den Beispielcode für dieses Codelab zu klonen. Dadurch wird auf Ihrem Computer ein Ordner namens codelab-perf-rc-android :

$ git clone https://github.com/FirebaseExtended/codelab-feature-rollout-performance.git

Wenn Sie Git nicht auf Ihrem Computer haben, können Sie den Code auch direkt von GitHub herunterladen.

Importieren Sie das Projekt im Ordner firebase-perf-rc-android-start in Android Studio. Sie werden wahrscheinlich einige Laufzeitausnahmen oder vielleicht eine Warnung über eine fehlende google-services.json Datei sehen. Wir werden dies im nächsten Abschnitt korrigieren.

In diesem Codelab verwenden Sie das Firebase Assistant -Plug-in, um Ihre Android-App bei einem Firebase-Projekt zu registrieren und die erforderlichen Firebase-Konfigurationsdateien, Plug-ins und Abhängigkeiten zu Ihrem Android-Projekt hinzuzufügen – alles aus Android Studio heraus !

Verbinden Sie Ihre App mit Firebase

  1. Gehen Sie zu Android Studio / Hilfe > Nach Updates suchen , um sicherzustellen, dass Sie die neuesten Versionen von Android Studio und dem Firebase-Assistenten verwenden.
  2. Wählen Sie Extras > Firebase aus, um den Assistentenbereich zu öffnen.

c0e42ef063d21eab.png

  1. Wählen Sie Leistungsüberwachung aus, um sie Ihrer App hinzuzufügen, und klicken Sie dann auf Erste Schritte mit der Leistungsüberwachung .
  2. Klicken Sie auf Mit Firebase verbinden, um Ihr Android-Projekt mit Firebase zu verbinden (dadurch wird die Firebase-Konsole in Ihrem Browser geöffnet) .
  3. Klicken Sie in der Firebase-Konsole auf Projekt hinzufügen und geben Sie dann einen Firebase-Projektnamen ein (wenn Sie bereits ein Firebase-Projekt haben, können Sie stattdessen dieses vorhandene Projekt auswählen) . Klicken Sie auf Weiter und akzeptieren Sie die Bedingungen, um das Firebase-Projekt und eine neue Firebase-App zu erstellen.

Als nächstes sollte ein Dialogfeld zum Verbinden Ihrer neuen Firebase-App mit Ihrem Android Studio-Projekt angezeigt werden.

51a549ebde2fe57a.png

  1. Klicken Sie auf Verbinden .
  2. Öffnen Sie Android Studio. Im Assistentenbereich sehen Sie die Bestätigung, dass Ihre App mit Firebase verbunden ist.

40c24c4a56a45990.png

Fügen Sie Ihrer App Leistungsüberwachung hinzu

Klicken Sie im Assistentenbereich von Android Studio auf Leistungsüberwachung zu Ihrer App hinzufügen .

Sie sollten ein Dialogfeld zum Akzeptieren von Änderungen sehen, wonach Android Studio Ihre App synchronisieren sollte, um sicherzustellen, dass alle erforderlichen Abhängigkeiten hinzugefügt wurden.

3046f3e1f5fea06f.png

Schließlich sollten Sie die Erfolgsmeldung im Assistentenbereich in Android Studio sehen, dass alle Abhängigkeiten korrekt eingerichtet sind.

62e79fd18780e320.png

Aktivieren Sie als zusätzlichen Schritt die Debug-Protokollierung , indem Sie den Anweisungen im Schritt „(Optional) Debug-Protokollierung aktivieren“ folgen. Dieselben Anweisungen sind auch in der öffentlichen Dokumentation verfügbar.

3. Führen Sie die App aus

Sie sollten jetzt die Datei google-services.json im Modulverzeichnis (auf App-Ebene) Ihrer App sehen und Ihre App sollte jetzt kompiliert werden. Klicken Sie in Android Studio auf Ausführen > „App“ ausführen, um die App auf Ihrem Android-Emulator zu erstellen und auszuführen.

Wenn die App ausgeführt wird, sollten Sie zunächst einen Begrüßungsbildschirm wie diesen sehen:

ffbd413a6983b205.png

Dann wird nach einigen Sekunden die Hauptseite mit dem Standardbild angezeigt:

d946cab0df319e50.png

Was passiert unter der Haube?

Der Begrüßungsbildschirm ist in SplashScreenActivity implementiert und bewirkt Folgendes:

  1. In onCreate() initialisieren wir Firebase Remote Config-Einstellungen und rufen die Konfigurationswerte ab, die Sie später in diesem Codelab im Remote Config-Dashboard festlegen.
  2. In executeTasksBasedOnRC() lesen wir den Konfigurationswert des seasonal_image_url -Flags. Wenn eine URL vom Konfigurationswert bereitgestellt wird, laden wir das Bild synchron herunter.
  3. Sobald der Download abgeschlossen ist, navigiert die App zu MainActivity und ruft finish() auf, um SplashScreenActivity zu beenden.

Wenn in MainActivity seasonal_image_url Remote Config definiert ist, wird die Funktion aktiviert und das heruntergeladene Bild wird als Hintergrund der Hauptseite angezeigt. Andernfalls wird das Standardbild (siehe oben) angezeigt.

4. Richten Sie Remote Config ein

Nachdem Ihre App ausgeführt wird, können Sie das neue Feature-Flag einrichten.

  1. Suchen Sie im linken Bereich der Firebase-Konsole den Abschnitt Engage und klicken Sie dann auf Remote Config .
  2. Klicken Sie auf die Schaltfläche Konfiguration erstellen , um das Konfigurationsformular zu öffnen, und fügen Sie seasonal_image_url als Parameterschlüssel hinzu.
  3. Klicken Sie auf Beschreibung hinzufügen und geben Sie dann diese Beschreibung ein: Shows a seasonal image (replaces default) in the main page when the restaurant list is empty.
  4. Klicken Sie auf Neu hinzufügen -> Bedingter Wert -> Neue Bedingung erstellen .
  5. Geben Sie als Bedingungsname Seasonal image rollout ein.
  6. Wählen Sie für den Abschnitt Applies if... die Option User in random percentile <= 0% . (Sie möchten die Funktion deaktiviert lassen, bis Sie bereit sind, sie in einem späteren Schritt bereitzustellen.)
  7. Klicken Sie auf Bedingung erstellen . Sie werden diese Bedingung später verwenden, um die neue Funktion für Ihre Benutzer bereitzustellen.

7a07526eb9e81623.png

  1. Öffnen Sie das Formular „Create your first parameter “ und suchen Sie das Feld „Value for Seasonal Image Rollout“ . Geben Sie die URL ein, unter der das saisonale Bild heruntergeladen wird: https://images.unsplash.com/photo-1552691021-7043334e0b51
  2. Lassen Sie den Standardwert als leere Zeichenfolge. Dies bedeutet, dass das Standardbild in der Codebasis angezeigt wird und nicht ein Bild, das von einer URL heruntergeladen wurde.
  3. Klicken Sie auf Speichern .

99e6cd2ebcdced.png

Sie können sehen, dass die neue Konfiguration als Entwurf erstellt wird.

  1. Klicken Sie auf Änderungen veröffentlichen und bestätigen Sie die Änderungen oben, um Ihre App zu aktualisieren.

39cd3e96d370c7ce.png

5. Überwachung der Datenladezeit hinzufügen

Ihre App lädt einige Daten vorab, bevor MainActivity , und zeigt einen Begrüßungsbildschirm an, um diesen Prozess auszublenden. Sie möchten nicht, dass Ihre Benutzer auf diesem Bildschirm zu lange warten, daher ist es normalerweise vorteilhaft, zu überwachen, wie lange der Begrüßungsbildschirm angezeigt wird.

Firebase Performance Monitoring bietet eine Möglichkeit, genau das zu tun. Sie können benutzerdefinierte Code-Traces instrumentieren, um die Leistung von bestimmtem Code in Ihrer App zu überwachen – wie die Ladezeit für Daten und die Verarbeitungszeit Ihrer neuen Funktion.

Um nachzuverfolgen, wie lange der Begrüßungsbildschirm angezeigt wird, fügen Sie SplashScreenActivity eine benutzerdefinierte SplashScreenActivity hinzu, bei der es sich um die Activity handelt, die den Begrüßungsbildschirm implementiert.

  1. Initialisieren, erstellen und starten Sie einen benutzerdefinierten Code-Trace mit dem Namen splash_screen_trace :

SplashScreenActivity.java

// ...
import com.google.firebase.perf.FirebasePerformance;
import com.google.firebase.perf.metrics.Trace;
// ...

public class SplashScreenActivity extends AppCompatActivity {

    private static final String TAG = "SplashScreenActivity";
    private static final String SEASONAL_IMAGE_URL_RC_FLAG = "seasonal_image_url";

    // TODO: Initialize splash_screen_trace
    private final Trace splashScreenTrace = FirebasePerformance.startTrace("splash_screen_trace");
    
    // ...
}
  1. Beenden Sie die Ablaufverfolgung in der Methode onDestroy() von SplashScreenActivity :

SplashScreenActivity.java

@Override
protected void onDestroy() {
    super.onDestroy();

    // TODO: Stop the splash_screen_trace here
    splashScreenTrace.stop();
}

Da Ihre neue Funktion ein Bild herunterlädt und verarbeitet, fügen Sie eine zweite benutzerdefinierte Codeablaufverfolgung hinzu, die die zusätzliche Zeit verfolgt, die Ihre Funktion zu SplashScreenActivity hinzugefügt hat.

  1. Initialisieren, erstellen und starten Sie einen benutzerdefinierten Code-Trace mit dem Namen splash_seasonal_image_processing :

SplashScreenActivity.java

private void executeTasksBasedOnRC(FirebaseRemoteConfig rcConfig) {
    String seasonalImageUrl = rcConfig.getString(SEASONAL_IMAGE_URL_RC_FLAG);
    Log.d(TAG, SEASONAL_IMAGE_URL_RC_FLAG + ": " + seasonalImageUrl);

    if (!seasonalImageUrl.isEmpty()) {
        // TODO: Start the splash_seasonal_image_processing here
        final Trace seasonalImageProcessingTrace = FirebasePerformance
            .startTrace("splash_seasonal_image_processing");

        // ...
    }
}
  1. Beenden Sie den Trace in den Methoden onLoadFailed() und onResourceReady() des RequestListener :

SplashScreenActivity.java

Glide.with(SplashScreenActivity.this.getApplicationContext())
    .asBitmap()
    .load(seasonalImageUrl)
    .signature(new ObjectKey(Utils.getCacheUUID()))
    .listener(new RequestListener<Bitmap>() {
        @Override
        public boolean onLoadFailed(
            @Nullable GlideException e,
            Object model, Target<Bitmap> target,
            boolean isFirstResource) {

            // TODO: Stop the splash_seasonal_image_processing here
            seasonalImageProcessingTrace.stop();

            launchMainActivity();
            return true;
        }

        @Override
        public boolean onResourceReady(Bitmap resource, Object model,
            Target<Bitmap> target, DataSource dataSource,
            boolean isFirstResource) {

            // TODO: Stop the splash_seasonal_image_processing here
            seasonalImageProcessingTrace.stop();

            launchMainActivity();
            return true;
        }
     })
     .preload();

Nachdem Sie nun benutzerdefinierte Codeablaufverfolgungen hinzugefügt haben, um die Dauer des Begrüßungsbildschirms ( splash_screen_trace) und die Verarbeitungszeit der neuen Funktion ( splash_seasonal_image_processing ) zu verfolgen, führen Sie die App erneut in Android Studio aus. Sie sollten eine Protokollierungsmeldung sehen, die die Logging trace metric: splash_screen_trace , gefolgt von der Dauer der Ablaufverfolgung. Sie sehen keine Protokollnachricht für splash_seasonal_image_processing , da Sie die neue Funktion noch nicht aktiviert haben.

6. Fügen Sie der Ablaufverfolgung ein benutzerdefiniertes Attribut hinzu

Für Ablaufverfolgungen von benutzerdefiniertem Code protokolliert die Leistungsüberwachung automatisch Standardattribute (gemeinsame Metadaten wie App-Version, Land, Gerät usw.), sodass Sie die Daten für die Ablaufverfolgung in der Firebase-Konsole filtern können . Sie können auch benutzerdefinierte Attribute hinzufügen und überwachen.

In Ihrer App haben Sie gerade zwei benutzerdefinierte Codeablaufverfolgungen hinzugefügt, um die Dauer des Begrüßungsbildschirms und die Verarbeitungszeit der neuen Funktion zu überwachen. Ein Faktor, der diese Dauer beeinflussen kann, ist, ob das angezeigte Bild das Standardbild ist oder ob das Bild von einer URL heruntergeladen werden muss. Und wer weiß – vielleicht haben Sie irgendwann andere URLs, von denen Sie ein Bild herunterladen.

Fügen wir also diesen benutzerdefinierten Code-Traces ein benutzerdefiniertes Attribut hinzu, das die saisonale Bild-URL darstellt. Auf diese Weise können Sie später Dauerdaten nach diesen Werten filtern.

  1. Fügen Sie das benutzerdefinierte Attribut ( seasonal_image_url_attribute ) für splash_screen_trace am Anfang der Methode executeTasksBasedOnRC :

SplashScreenActivity.java

private void executeTasksBasedOnRC(FirebaseRemoteConfig rcConfig) {
    String seasonalImageUrl = rcConfig.getString(SEASONAL_IMAGE_URL_RC_FLAG);
    Log.d(TAG, SEASONAL_IMAGE_URL_RC_FLAG + ": " + seasonalImageUrl);

    // TODO: Add a custom attribute "seasonal_image_url_attribute" to splash_screen_trace
    if (seasonalImageUrl.isEmpty()) {
        splashScreenTrace.putAttribute("seasonal_image_url_attribute", "unset");
    } else {
        splashScreenTrace.putAttribute("seasonal_image_url_attribute", seasonalImageUrl);
    }

    // ...
}
  1. Fügen Sie das gleiche benutzerdefinierte Attribut für splash_seasonal_image_processing direkt nach dem startTrace("splash_seasonal_image_processing") -Aufruf hinzu:

SplashScreenActivity.java

if (!seasonalImageUrl.isEmpty()) {
    // TODO: Start the splash_seasonal_image_processing here
    final Trace seasonalImageProcessingTrace = FirebasePerformance
        .startTrace("splash_seasonal_image_processing");

    // TODO: Add a custom attribute "seasonal_image_url_attribute" to splash_seasonal_image_processing
    seasonalImageProcessingTrace
        .putAttribute("seasonal_image_url_attribute", seasonalImageUrl);

    // ...
}

Nachdem Sie nun ein benutzerdefiniertes Attribut ( seasonal_image_url_attribute ) für Ihre beiden benutzerdefinierten Traces ( splash_screen_trace und splash_seasonal_image_processing ) hinzugefügt haben, führen Sie die App erneut in Android Studio aus. Sie sollten eine Protokollierungsmeldung sehen, die das Setting attribute 'seasonal_image_url_attribute' to 'unset' on trace 'splash_screen_trace'. Sie haben den Remote Config-Parameter seasonImageUrl noch nicht aktiviert, weshalb der Attributwert unset ist.

Das Leistungsüberwachungs-SDK sammelt die Ablaufverfolgungsdaten und sendet sie an Firebase. Sie können die Daten im Leistungs -Dashboard der Firebase-Konsole anzeigen, die wir im nächsten Schritt des Codelabs ausführlich erläutern.

7. Konfigurieren Sie Ihr Leistungsüberwachungs-Dashboard

Konfigurieren Sie Ihr Dashboard, um Ihre Funktion zu überwachen

Wählen Sie in der Firebase-Konsole das Projekt mit Ihrer Friendly Eats App aus.

Suchen Sie im linken Bereich den Abschnitt Release & Monitor und klicken Sie dann auf Performance .

Sie sollten Ihr Leistungs -Dashboard mit Ihren allerersten Datenpunkten in Ihrem Metrik-Board sehen! Das Leistungsüberwachungs-SDK sammelt Leistungsdaten von Ihrer App und zeigt sie innerhalb von Minuten nach der Erfassung an.

f57e5450b70034c9.png

Auf diesem Metrikboard können Sie wichtige Metriken für Ihre App nachverfolgen. Die Standardansicht enthält die Dauer Ihrer App-Startzeitverfolgung, aber Sie können die Metriken hinzufügen, die Ihnen am wichtigsten sind. Da Sie die neu hinzugefügte Funktion nachverfolgen, können Sie Ihr Dashboard so anpassen, dass die Dauer des benutzerdefinierten Code-Trace splash_screen_trace .

  1. Klicken Sie auf eines der leeren Kästchen Metrik auswählen.
  2. Wählen Sie im Dialogfenster den Trace-Typ Benutzerdefinierte Traces und den Trace-Namen splash_screen_trace .

1fb81f4dba3220e0.png

  1. Klicken Sie auf Metrik auswählen , und Sie sollten die Dauer von splash_screen_trace sehen, die Ihrem Dashboard hinzugefügt wurde!

Sie können dieselben Schritte verwenden, um andere Metriken hinzuzufügen, die Ihnen wichtig sind, damit Sie schnell sehen können, wie sich ihre Leistung im Laufe der Zeit und sogar mit verschiedenen Releases ändert.

1d465c021e58da3b.png

Das Metrik-Board ist ein leistungsstarkes Tool , um die Leistung wichtiger Metriken zu verfolgen, die von Ihren Benutzern erlebt werden. Für dieses Codelab haben Sie einen kleinen Datensatz in einem engen Zeitbereich, sodass Sie andere Dashboardansichten verwenden, die Ihnen helfen, die Leistung der Funktionseinführung zu verstehen.

8. Führen Sie Ihr Feature ein

Nachdem Sie Ihre Überwachung eingerichtet haben, können Sie die zuvor eingerichtete Firebase Remote Config-Änderung ( seasonal_image_url) einführen.

Um eine Änderung einzuführen, kehren Sie zur Seite „Remote Config“ in der Firebase-Konsole zurück, um das Nutzerperzentil Ihrer Targeting-Bedingung zu erhöhen. Normalerweise würden Sie neue Funktionen für einen kleinen Teil der Benutzer einführen und sie nur dann erweitern, wenn Sie sicher sind, dass es keine Probleme damit gibt. In diesem Codelab sind Sie jedoch die einzigen Benutzer der App, sodass Sie das Perzentil auf 100 % ändern können.

  1. Klicken Sie oben auf der Seite auf die Registerkarte Bedingungen .
  2. Klicken Sie auf die Seasonal image rollout , die Sie zuvor hinzugefügt haben.
  3. Ändern Sie das Perzentil auf 100 %.
  4. Klicken Sie auf Bedingung speichern .
  5. Klicken Sie auf Änderungen veröffentlichen und bestätigen Sie die Änderungen.

70f993502b27e7a0.png

Zurück in Android Studio starten Sie die App in Ihrem Emulator neu, um die neue Funktion zu sehen. Nach dem Begrüßungsbildschirm sollten Sie den neuen leeren Hauptbildschirm sehen!

b0cc91b6e48fb842.png

9. Überprüfen Sie die Leistungsänderungen

Sehen wir uns nun die Leistung beim Laden des Begrüßungsbildschirms mithilfe des Leistungs -Dashboards in der Firebase-Konsole an. In diesem Schritt des Codelabs verwenden Sie verschiedene Teile des Dashboards, um Leistungsdaten anzuzeigen.

  1. Scrollen Sie auf der Hauptregisterkarte Dashboard nach unten zur Ablaufverfolgungstabelle und klicken Sie dann auf die Registerkarte Benutzerdefinierte Ablaufverfolgungen. In dieser Tabelle sehen Sie die benutzerdefinierten Code-Traces, die Sie zuvor hinzugefügt haben, sowie einige Out-of-the-Box-Traces .
  2. Nachdem Sie die neue Funktion aktiviert haben, suchen Sie nach dem benutzerdefinierten Code-Trace splash_seasonal_image_processing , der die Zeit gemessen hat, die zum Herunterladen und Verarbeiten des Bildes benötigt wurde. Aus dem Duration -Wert der Ablaufverfolgung können Sie ersehen, dass dieser Download und die Verarbeitung viel Zeit in Anspruch nehmen.

439adc3ec71805b7.png

  1. Da Sie Daten für splash_seasonal_image_processing haben, können Sie die Dauer dieser Ablaufverfolgung zu Ihrem Metrik-Board oben auf der Registerkarte Dashboard hinzufügen.

Klicken Sie wie zuvor auf eines der leeren Kästchen Select a metric (Metrik auswählen). Wählen Sie im Dialogfenster den Trace-Typ Benutzerdefinierte Traces und den Trace-Namen splash_seasonal_image_processing . Klicken Sie abschließend auf Metrik auswählen , um diese Metrik zum Metrik-Board hinzuzufügen.

7fb64d2340410576.png

  1. Um die Unterschiede weiter zu bestätigen, können Sie sich die Daten für splash_screen_trace genauer ansehen. Klicken Sie im Metrik-Board auf die Karte splash_screen_trace und dann auf Metrikdetails anzeigen .

b1c275c30679062a.png

  1. Auf der Detailseite sehen Sie unten links eine Liste mit Attributen, einschließlich des benutzerdefinierten Attributs, das Sie zuvor erstellt haben. Klicken Sie auf das benutzerdefinierte Attribut seasonal_image_url_attribute , um die Splash-Screen-Dauer für jede saisonale Bild-URL auf der rechten Seite anzuzeigen:

8fa1a69019bb045e.png

  1. Ihre Werte für die Dauer des Begrüßungsbildschirms werden sich wahrscheinlich etwas von denen im obigen Screenshot unterscheiden, aber Sie sollten eine längere Dauer haben, wenn das Bild von einer URL heruntergeladen wird, als wenn Sie das Standardbild verwenden (dargestellt durch "unset").

In diesem Codelab mag der Grund für diese längere Dauer einfach sein, aber in einer echten App ist er vielleicht nicht so offensichtlich. Die gesammelten Dauerdaten stammen von verschiedenen Geräten, auf denen die App unter verschiedenen Netzwerkverbindungsbedingungen ausgeführt wird, und diese Bedingungen können schlechter sein als erwartet. Sehen wir uns an, wie Sie dieses Problem untersuchen würden, wenn dies eine reale Situation wäre.

  1. Klicken Sie oben auf der Seite auf Leistung , um zur Hauptregisterkarte Dashboard zurückzukehren: 640b696b79d90103.png
  2. Klicken Sie in der Ablaufverfolgungstabelle unten auf der Seite auf die Registerkarte Netzwerkanforderungen . In dieser Tabelle sehen Sie alle Netzwerkanfragen Ihrer App, zusammengefasst in URL-Mustern , einschließlich des URL-Musters images.unsplash.com/** . Wenn Sie den Wert dieser Antwortzeit mit der Gesamtzeit vergleichen, die für das Herunterladen und Verarbeiten von Bildern benötigt wird (dh die Dauer der splash_seasonal_image_processing ), sehen Sie, dass ein Großteil der Zeit für das Herunterladen des Bildes aufgewendet wird.

6f92ce0f23494507.png

Leistungsbefunde

Bei der Firebase-Leistungsüberwachung haben Sie die folgenden Auswirkungen auf die Endbenutzer festgestellt, wenn die neue Funktion aktiviert ist:

  1. Die für SplashScreenActivity aufgewendete Zeit hat zugenommen.
  2. Die Dauer für splash_seasonal_image_processing war sehr groß.
  3. Die Verzögerung war auf die Antwortzeit für den Bilddownload und die entsprechende benötigte Bearbeitungszeit des Bildes zurückzuführen.

Im nächsten Schritt mindern Sie die Auswirkungen auf die Leistung, indem Sie das Feature zurücksetzen und ermitteln, wie Sie die Implementierung des Features verbessern können.

10. Setzen Sie die Funktion zurück

Es ist nicht wünschenswert, die Wartezeit Ihrer Benutzer während des Begrüßungsbildschirms zu verlängern. Einer der Hauptvorteile von Remote Config ist die Möglichkeit, Ihre Einführung anzuhalten und rückgängig zu machen, ohne eine andere Version für Ihre Benutzer freigeben zu müssen. Auf diese Weise können Sie schnell auf Probleme reagieren (wie die Leistungsprobleme, die Sie im letzten Schritt entdeckt haben) und die Anzahl unzufriedener Benutzer minimieren.

Als schnelle Abhilfe setzen Sie das Rollout-Perzentil auf 0 zurück, damit alle Ihre Benutzer wieder das Standardbild sehen:

  1. Gehen Sie zurück zur Seite „ Remote Config in der Firebase-Konsole.
  2. Klicken Sie oben auf der Seite auf Bedingungen .
  3. Klicken Sie auf die Seasonal image rollout , die Sie zuvor hinzugefügt haben.
  4. Ändern Sie das Perzentil auf 0 %.
  5. Klicken Sie auf Bedingung speichern .
  6. Klicken Sie auf Änderungen veröffentlichen und bestätigen Sie die Änderungen.

18c4f1cbac955a04.png

Starten Sie die App in Android Studio neu, und Sie sollten den ursprünglichen Hauptbildschirm im leeren Zustand sehen:

d946cab0df319e50.png

11. Beheben Sie die Leistungsprobleme

Sie haben zuvor im Codelab festgestellt, dass das Herunterladen eines Bildes für Ihren Begrüßungsbildschirm die Verlangsamung Ihrer App verursacht hat. Wenn Sie sich das heruntergeladene Bild genauer ansehen, sehen Sie, dass Sie die ursprüngliche Auflösung des Bildes verwenden, die über 2 MB betrug! Eine schnelle Lösung für Ihr Leistungsproblem besteht darin, die Qualität auf eine geeignetere Auflösung zu reduzieren, damit das Herunterladen des Bilds weniger Zeit in Anspruch nimmt.

Führen Sie den Remote Config-Wert erneut aus

  1. Gehen Sie zurück zur Seite „ Remote Config in der Firebase-Konsole.
  2. Klicken Sie auf das Symbol „ Bearbeiten “ für den Parameter „ seasonal_image_url “.
  3. Aktualisieren Sie das Image-Rollout „Value for Seasonal“ auf https://images.unsplash.com/photo-1552691021-7043334e0b51?w=640 und klicken Sie dann auf Speichern .

828dd1951a2ec4a4.png

  1. Klicken Sie oben auf der Seite auf die Registerkarte Bedingungen .
  2. Klicken Sie auf Rollout für saisonale Bilder und setzen Sie das Perzentil auf 100 % zurück.
  3. Klicken Sie auf Bedingung speichern .

1974fa3bb789f36c.png

  1. Klicken Sie auf die Schaltfläche Änderungen veröffentlichen .

12. Testen Sie den Fix und richten Sie Warnungen ein

Führen Sie die App lokal aus

Führen Sie die App erneut aus, wenn der neue Konfigurationswert so eingestellt ist, dass eine andere Download-Bild-URL verwendet wird. Dieses Mal sollten Sie beachten, dass die auf dem Begrüßungsbildschirm verbrachte Zeit kürzer ist als zuvor.

b0cc91b6e48fb842.png

Zeigen Sie die Leistung der Änderungen an

Kehren Sie zum Leistungs -Dashboard in der Firebase-Konsole zurück, um zu sehen, wie die Messwerte aussehen.

  1. Dieses Mal verwenden Sie die Ablaufverfolgungstabelle, um zur Detailseite zu navigieren. Klicken Sie unten in der Ablaufverfolgungstabelle auf der Registerkarte Benutzerdefinierte Ablaufverfolgungen auf die benutzerdefinierte Ablaufverfolgung splash_seasonal_image_processing , um erneut eine detailliertere Ansicht der splash_seasonal_image_processing .

2d7aaca03112c062.png

  1. Klicken Sie auf das benutzerdefinierte Attribut seasonal_image_url_attribute , um die Aufschlüsselung der benutzerdefinierten Attribute erneut anzuzeigen. Wenn Sie den Mauszeiger über die URLs bewegen, sehen Sie einen Wert, der der neuen URL für das verkleinerte Bild entspricht: https://images.unsplash.com/photo-1552691021-7043334e0b51?w=640 (mit dem ?w=640 Am Ende). Der diesem Bild zugeordnete Dauerwert ist erheblich kürzer als der Wert für das vorherige Bild und für Ihre Benutzer akzeptabler!

10e30c037a4237a2.png

  1. Nachdem Sie die Leistung Ihres Begrüßungsbildschirms verbessert haben, können Sie Warnungen einrichten, die Sie benachrichtigen, wenn eine Ablaufverfolgung einen von Ihnen festgelegten Schwellenwert überschreitet. Öffnen Sie das Leistungs -Dashboard und klicken Sie auf das Symbol für das Überlaufmenü (drei Punkte) für splash_screen_trace und klicken Sie auf Warnungseinstellungen .

4bd0a2a1faa14479.png

  1. Klicken Sie auf den Umschalter, um die Dauerwarnung zu aktivieren. Legen Sie den Schwellenwert so fest, dass er etwas über dem angezeigten Wert liegt, sodass Sie eine E-Mail erhalten, wenn Ihr splash_screen_trace den Schwellenwert überschreitet.
  1. Klicken Sie auf Speichern , um Ihre Benachrichtigung zu erstellen. Scrollen Sie nach unten zur Ablaufverfolgungstabelle und klicken Sie dann auf die Registerkarte Benutzerdefinierte Ablaufverfolgungen, um zu sehen, dass Ihre Warnung aktiviert ist!

2bb93639e2218d1.png

13. Herzlichen Glückwunsch!

Herzliche Glückwünsche! Sie haben das Firebase Performance Monitoring SDK aktiviert und Traces gesammelt, um die Leistung einer neuen Funktion zu messen! Sie haben wichtige Leistungsmetriken für die Einführung einer neuen Funktion überwacht und schnell reagiert, wenn ein Leistungsproblem entdeckt wurde. All dies war durch die Möglichkeit möglich, Konfigurationsänderungen mit Remote Config vorzunehmen und Leistungsprobleme in Echtzeit zu überwachen.

Was wir abgedeckt haben

  • Hinzufügen des Firebase Performance Monitoring SDK zu Ihrer App
  • Hinzufügen eines benutzerdefinierten Code-Trace zu Ihrem Code, um ein bestimmtes Feature zu messen
  • Einrichten eines Remote-Konfigurationsparameters und eines bedingten Werts zum Steuern/Einführen einer neuen Funktion
  • Verstehen, wie das Leistungsüberwachungs-Dashboard verwendet wird, um Probleme während eines Rollouts zu identifizieren
  • Einrichten von Leistungswarnungen, um Sie zu benachrichtigen, wenn die Leistung Ihrer App einen von Ihnen festgelegten Schwellenwert überschreitet

Mehr erfahren