Catch up on everthing we announced at this year's Firebase Summit. Learn more

Profilez votre base de données

Mesurer les performances de votre Firebase en temps réel avec la base de données la base de données outil de profileur, construit dans le Firebase CLI . L'outil de profilage enregistre toute l'activité de votre base de données sur une période donnée, puis génère un rapport détaillé. Utilisez le rapport détaillé pour résoudre les problèmes de performances de votre base de données, repérer les zones à problèmes et réduire les requêtes non indexées.

Créer un profil

  1. Avant de commencer à profiler votre base de données en temps réel Firebase, assurez - vous que vous utilisez la dernière version de la CLI Firebase et que vous avez initialisé pour la base de données et projet que vous souhaitez profil. Notez que vous devez être éditeur ou propriétaire de ce projet pour profiler.

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

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

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

Interprétez vos résultats

L'outil profileur agrège les données qu'il a recueillies sur les opérations de votre base de données et affiche les résultats dans trois catégories principales: la vitesse , la bande passante et des requêtes non indexées .

La 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 l'expérience de vitesse des utilisateurs finaux. Différents facteurs, y compris 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 d' accès 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 s'effondre profileur ceux - ci dans un chemin parent et ajoute un $wildcard marqueur. Vous pouvez voir le répertoire racine de votre base de données dans le rapport, représenté par une barre oblique / .
  • Count: Le nombre d'opérations qui ont eu lieu au chemin donné.
  • Moyenne Vitesse d' exécution: Le temps moyen du serveur pour exécuter la logique métier nécessaire pour gérer le type d'opération particulière à cette voie. L'intervalle de temps mesuré ici commence après celui mesuré par le "Temps d'attente moyen" décrit ci-dessous.
  • Moyenne en attente Heure: Les demandes de temps passent , en moyenne mis en attente avant d' être exécuté. 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.
  • Permission Denied: Le nombre d'opérations sur le chemin donné qui ont été bloqués par Firebase Règles de base de données sur votre base de données.
Rapport de vitesse par type d'opération
Lire la vitesse d'exécution Le temps de réponse du serveur pour les demandes du client de lire les données de la base de données. Le temps d'exécution de la lecture dépend généralement 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 Le temps de réponse du serveur pour les demandes du client d'écrire des données dans la base de données. Écrire des échelles de temps d'exécution avec la quantité de données écrites.
Connecter la vitesse d'exécution Le temps de réponse du serveur pour les requêtes à établir vers les clients de la 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 la diffusion

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

La propriété Count dans le rapport de diffusion Vitesse agrège le nombre d'émissions qui ont eu lieu, et non pas le nombre de clients qui ont reçu l'information. 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 diffusion, même si 10 clients ont reçu les données.

La propriété Permission refusée ne figure pas dans le rapport de diffusion rapide.

Bande passante

Le rapport de bande passante fournit des informations sur 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 de 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 de 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. C'est un outil qui mesure les performances, pas celui qui prévoit la facturation.

Le rapport de bande passante comprend les propriétés suivantes :

  • Chemin: Le chemin d' accès 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 dans un chemin parent.

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

  • Count: Le nombre d'opérations qui ont eu lieu au chemin donné.

  • Moyenne: Le nombre moyen d'octets téléchargés ou téléchargés à travers des opérations sur le chemin donné (octets / écriture ou octets / lecture).

Rapport de 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 demandes d'écriture entrant dans le serveur de base de données. Les suppressions apparaissent comme des é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 à un emplacement, puis effectuent des requêtes dessus. 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: Le chemin d' accès dans votre base de données où les requêtes non indexées se sont produits.
  • Index: La règle vous devez ajouter à résoudre les requêtes non indexées. En savoir plus sur l' indexation dans Index vos données .
  • Count: Le nombre de requêtes non indexées qui se sont produits sur le chemin donné.

Profilage avancé

Pour voir toutes les opérations de votre base de données est la manipulation, utilisez le --raw drapeau lorsque vous le profil de votre base de données, comme suit:

firebase database:profile --raw

La sortie brute comprend également des informations client pour chaque opération, tels que userAgent chaînes et les adresses IP. En savoir plus sur les différentes opérations décrit dans votre Firebase en temps réel dans la base de données Firebase en temps réel Base de données Types de fonctionnement .

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 vue d'ensemble 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 par votre profil de base de données :

  • Les frais généraux du Protocole: trafic supplémentaire entre le serveur et les clients est nécessaire pour établir et maintenir une session. Selon le 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 cryptage 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 importante si vos charges utiles sont minuscules ou si vous effectuez des connexions courtes et fréquentes.
  • Chiffrement SSL en tête: Il y a un coût associé au cryptage SSL frais généraux nécessaires pour les connexions sécurisées. En moyenne, ce coût est d'environ 3,5 Ko pour la poignée de main initiale et d'environ 40 Go pour les en-têtes d'enregistrement TLS sur chaque message sortant. Pour la plupart des applications, il s'agit d'un petit pourcentage de votre facture. Cependant, cela pourrait devenir un pourcentage important si votre cas spécifique nécessite de nombreuses poignées de main 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 .