Profilez votre base de données

Mesurez les performances de votre base de données Firebase Realtime avec l'outil de profilage de base de données, intégré à Firebase CLI . L'outil de profilage enregistre toute l'activité de votre base de données sur une période de temps donnée, puis génère un rapport détaillé. Utilisez le rapport détaillé pour résoudre les problèmes liés aux performances de votre base de données, repérer les zones problématiques et réduire les requêtes non indexées.

Créer un profil

  1. Avant de commencer à profiler votre base de données Firebase Realtime, assurez-vous que vous utilisez la dernière version de Firebase CLI et que vous l'avez initialisée pour la base de données et le projet que vous souhaitez profiler. Notez que vous devez être un éditeur ou propriétaire de ce projet pour créer un profil.

  2. Commencez à profiler votre base de données avec la commande suivante :

    firebase database:profile
    Le profileur affiche un message d'état pendant qu'il enregistre les opérations de votre base de données et crée le profil.

  3. Appuyez sur Entrée pour compléter le profil et afficher les résultats.

Interprétez vos résultats

L'outil de profilage regroupe les données collectées sur les opérations de votre base de données et affiche les résultats dans trois catégories principales : vitesse , bande passante et requêtes non indexées .

Vitesse

Le rapport de vitesse mesure le temps de réponse du serveur (en millisecondes) pour chaque type d'opération. Cependant, la vitesse mesurée dans le rapport de vitesse peut ne pas refléter réellement la vitesse vécue par les utilisateurs finaux. Différents facteurs, notamment les conditions du réseau, peuvent ajouter de la latence côté client.

Le rapport de vitesse comprend les propriétés suivantes :

  • Chemin : le chemin dans votre base de données où les opérations ont eu lieu. S'il y a plus de 25 nœuds enfants, l'outil de profilage les réduit en un chemin parent et ajoute un marqueur $wildcard . Vous verrez peut-être le répertoire racine de votre base de données dans le rapport, représenté par une barre oblique / .
  • Nombre : nombre d'opérations effectuées sur le chemin donné.
  • Vitesse d'exécution moyenne : temps moyen nécessaire au serveur pour exécuter la logique métier nécessaire pour gérer le type d'opération particulier sur ce chemin. L'intervalle de temps mesuré ici commence après celui mesuré par le « Temps d'attente moyen » décrit ci-dessous.
  • Temps d'attente moyen : temps moyen que les requêtes passent en file d'attente avant d'être exécutées. Ce délai est commun à toutes les demandes initiées par le client. La latence totale des requêtes côté serveur correspond à peu près à la somme du temps d'attente et de la vitesse d'exécution de cette requête.
  • Autorisation refusée : nombre d'opérations sur le chemin donné qui ont été bloquées par les règles de base de données Firebase sur votre base de données.
Rapport de vitesse par type d'opération
Vitesse d'exécution de lecture Temps de réponse du serveur pour les demandes des clients visant à lire les données de la base de données. Le temps d'exécution de la lecture évolue généralement en fonction de la quantité de données lues, mais même certaines petites lectures peuvent également être retardées par la prélecture du cache.
Vitesse d'exécution d'écriture Temps de réponse du serveur pour les demandes des clients d'écriture de données dans la base de données. Écrivez des échelles de temps d'exécution avec la quantité de données en cours d'écriture.
Vitesse d'exécution de connexion Temps de réponse du serveur pour les requêtes à établir auprès des clients de base de données. La latence des demandes de connexion est dominée par la comptabilité côté serveur en mémoire liée à la gestion des connexions.
Vitesse d'exécution de diffusion

Temps nécessaire au serveur pour distribuer les données aux clients qui écoutent le chemin donné pour les mises à jour en temps réel.

La propriété Count dans le rapport sur la vitesse de diffusion regroupe le nombre de diffusions qui ont eu lieu, et non le nombre de clients qui ont reçu les informations. Par exemple, si 10 clients écoutaient sur un chemin donné et que le serveur diffusait une mise à jour aux 10 clients, le nombre de diffusions ne reflète qu'une seule diffusion, même si 10 clients ont reçu les données.

La propriété Autorisation refusée n’est pas incluse dans le rapport Vitesse de diffusion.

Bande passante

Le rapport sur la bande passante fournit un aperçu de la quantité de données consommée par votre base de données lors des opérations entrantes et sortantes. Cependant, vous ne devez pas utiliser le rapport sur la bande passante pour estimer la facturation, car il n'inclut pas la bande passante utilisée pour d'autres opérations, comme le profilage de votre base de données. Le rapport sur la bande passante estime approximativement la taille de la charge utile des données consommées par les opérations de lecture, d'écriture et de diffusion vers et depuis votre base de données. Il s'agit d'un outil qui mesure les performances et non qui prévoit la facturation.

Le rapport sur la bande passante inclut les propriétés suivantes :

  • Chemin : le chemin dans votre base de données où les opérations ont eu lieu. S'il y a plus de 25 nœuds enfants, l'outil de profilage les réduit en un chemin parent.

  • Total : nombre total d'octets sortants ou entrants utilisés dans toutes les opérations sur le chemin donné.

  • Nombre : nombre d'opérations effectuées sur le chemin donné.

  • Moyenne : nombre moyen d'octets téléchargés ou téléchargés pour toutes les opérations sur le chemin donné (octets/écriture ou octets/lecture).

Rapport sur la bande passante
Octets téléchargés Données consommées via les opérations de lecture et de diffusion envoyées via les SDK clients et l'API REST.
Octets téléchargés Données consommées via les requêtes d'écriture entrant dans le serveur de base de données. Les suppressions apparaissent sous forme d'écritures avec 0 octet sous entrant.

Requêtes non indexées

Les requêtes non indexées peuvent être coûteuses, car les clients téléchargent toutes les données d'un emplacement et y effectuent ensuite des requêtes. Cela utilise plus de bande passante que nécessaire. Résolvez autant de requêtes non indexées que possible pour optimiser les performances de votre base de données.

Le rapport Requêtes non indexées affiche les propriétés suivantes :

  • Chemin : chemin dans votre base de données où les requêtes non indexées ont eu lieu.
  • Index : la règle que vous devez ajouter pour résoudre les requêtes non indexées. Apprenez-en davantage sur l’indexation dans Indexer vos données .
  • Nombre : nombre de requêtes non indexées survenues sur le chemin donné.

Profilage avancé

Pour voir toutes les opérations que votre base de données gère, utilisez l'indicateur --raw lorsque vous profilez votre base de données, comme suit :

firebase database:profile --raw

La sortie brute inclut également des informations client pour chaque opération, telles que les chaînes userAgent et les adresses IP. Apprenez-en davantage sur les différentes opérations profilées dans votre base de données Firebase Realtime dans Firebase Realtime Database Operation Types .

L'outil de profilage : pas un outil de facturation

N'utilisez pas l'outil de profilage pour estimer le coût de la bande passante. L'outil de profilage est destiné à vous donner une image globale des performances de votre base de données, à vous aider à surveiller les opérations et à résoudre les problèmes, et non à estimer la facturation. Il ne prend pas en compte le trafic réseau, il enregistre uniquement une estimation des données d'application envoyées dans les réponses.

Voici quelques exemples courants de trafic réseau facturé par Firebase qui ne sont pas couverts dans votre profil de base de données :

  • Surcharge de protocole : un trafic supplémentaire entre le serveur et les clients est nécessaire pour établir et maintenir une session. En fonction du protocole sous-jacent, ce trafic peut inclure : la surcharge du protocole en temps réel de Firebase Realtime Database, la surcharge de WebSocket et la surcharge de l'en-tête HTTP. Chaque fois qu'une connexion est établie, cette surcharge, combinée à toute surcharge de chiffrement SSL, contribue aux coûts de connexion. Bien qu'il ne s'agisse généralement pas d'une grande quantité de bande passante, elle peut être substantielle si vos charges utiles sont minuscules ou si vous établissez des connexions fréquentes et courtes.
  • Surcharge de chiffrement SSL : il existe un coût associé à la surcharge de cryptage SSL nécessaire pour les connexions sécurisées. En moyenne, ce coût est d'environ 3,5 Ko pour la prise de contact initiale et d'environ 40 Mo pour les en-têtes d'enregistrement TLS sur chaque message sortant. Pour la plupart des applications, cela représente un petit pourcentage de votre facture. Cependant, cela peut devenir un pourcentage important si votre cas spécifique nécessite de nombreuses négociations SSL. Par exemple, les appareils qui ne prennent pas en charge les tickets de session TLS peuvent nécessiter un grand nombre d’établissements de liaison de connexion SSL.

En savoir plus sur la compréhension et l'estimation de votre facture .