Profiler votre base de données

Mesurez les performances de votre Firebase Realtime Database avec l'outil de profilage de base de données intégré à la CLI Firebase. 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, identifier les zones problématiques et réduire le nombre de requêtes non indexées.

Créer un profil

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

  2. Commencez à profiler votre base de données à l'aide de la commande suivante :

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

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

Interpréter vos résultats

L'outil de profilage agrège les données qu'il a 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 sur la vitesse mesure le temps de réponse du serveur (en millisecondes) pour chaque type d'opération. Toutefois, la vitesse mesurée dans le rapport sur la vitesse de chargement ne reflète pas forcément la vitesse à laquelle les utilisateurs finaux accèdent réellement à votre site. Différents facteurs, y compris les conditions du réseau, peuvent ajouter de la latence côté client.

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

  • Chemin d'accès : chemin d'accès dans votre base de données où les opérations ont eu lieu. Si le profil contient plus de 25 nœuds enfants, l'outil de profilage les réduit en un chemin parent et ajoute un repère $wildcard. Il est possible que le répertoire racine de votre base de données s'affiche dans le rapport, représenté par une barre oblique /.
  • Nombre : nombre d'opérations effectuées au niveau du chemin indiqué.
  • Vitesse d'exécution moyenne : temps moyen nécessaire au serveur pour exécuter la logique métier requise pour gérer le type d'opération spécifique à ce chemin d'accès. 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 passé par les requêtes dans la file d'attente avant d'être exécutées. Ce délai s'applique à toutes les requêtes 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 bloquées par les règles de la base de données Firebase au chemin d'accès indiqué dans votre base de données.
Rapport sur la vitesse par type d'opération
Lire la vitesse d'exécution Temps de réponse du serveur aux requêtes client pour lire les données de la base de données. Le temps d'exécution de la lecture est généralement proportionnel à 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 de l'écriture Temps de réponse du serveur pour les requêtes client visant à écrire des données dans la base de données. Le temps d'exécution de l'écriture est proportionnel à la quantité de données écrites.
Vitesse d'exécution de la connexion Temps de réponse du serveur pour les demandes d'établissement de connexion aux clients de base de données. La latence des demandes de connexion est principalement due à la comptabilité côté serveur en mémoire liée à la gestion des connexions.
Vitesse d'exécution de la diffusion

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

La propriété Count (Nombre) du rapport sur la vitesse de diffusion agrège 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 écoutent un chemin d'accès donné et que le serveur diffuse une mise à jour à ces 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 sur la vitesse de diffusion.

Bande passante

Le rapport sur la bande passante fournit des informations sur la quantité de données consommées par votre base de données pour les opérations entrantes et sortantes. Toutefois, 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 d'accès : 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 en un chemin parent.

  • Total : nombre total d'octets sortants ou entrants utilisés pour toutes les opérations au niveau du chemin d'accès donné.

  • Nombre : nombre d'opérations effectuées au niveau du chemin indiqué.

  • Moyenne : nombre moyen d'octets téléchargés ou importés lors des opérations effectuées au chemin d'accès indiqué (octets/écriture ou octets/lecture).

Rapport sur la bande passante
Octets téléchargés Données consommées par le biais d'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 par les requêtes d'écriture qui arrivent sur le serveur de base de données. Les suppressions apparaissent comme des écritures de 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 exécutent des requêtes dessus. Cela consomme 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 d'accès : chemin d'accès dans votre base de données où les requêtes non indexées ont été exécutées.
  • Index : règle à ajouter pour résoudre les requêtes non indexées. Pour en savoir plus sur l'indexation, consultez Indexer vos données.
  • Nombre : nombre de requêtes non indexées qui se sont produites sur le chemin donné.

Profilage avancé

Pour afficher toutes les opérations gérées par votre base de données, utilisez l'indicateur --raw lorsque vous profilez votre base de données, comme suit :

firebase database:profile --raw

Le résultat brut inclut également des informations sur le client pour chaque opération, telles que des chaînes userAgent et des adresses IP. En savoir plus sur les différentes opérations décrites dans votre Firebase Realtime Database, consultez Types d'opérations Firebase Realtime Database.

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 tient pas compte du trafic réseau, mais 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 :

  • Surcharge du 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 WebSocket et la surcharge des en-têtes HTTP. Chaque fois qu'une connexion est établie, ce coût indirect, combiné à tout coût indirect de chiffrement SSL, contribue aux coûts de connexion. Bien que cela ne représente généralement pas une grande quantité de bande passante, cela peut être important si vos charges utiles sont minuscules ou si vous établissez des connexions courtes et fréquentes.
  • Surcharge du chiffrement SSL : le chiffrement SSL nécessaire pour les connexions sécurisées entraîne un coût. En moyenne, ce coût est d'environ 3, 5 Ko pour la prise de contact initiale et d'environ 40 octets 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. Toutefois, ce pourcentage peut devenir important si votre cas spécifique nécessite de nombreuses négociations SSL. Par exemple, les appareils qui ne sont pas compatibles avec les tickets de session TLS peuvent nécessiter un grand nombre de négociations de connexion SSL.

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