FBScanner
FBScanner est remplacé par HQbird. Voir Monitoring dans HQbird.
FBScanner (Firebird Scanner) est un outil permettant de résoudre tous les types de problèmes de performance avec Firebird.
Documentation FBScanner
Modules FBScanner
FBScanner est l’un des outils IBSurgeon les plus efficaces : il suit le trafic SQL entre le serveur et les clients. Fonctionnalités de FBScanner :
- LogAnalyzer - outil d’analyse détaillée des requêtes SQL, des plans, des transactions et des connexions, il prend en charge toutes les versions de Firebird et InterBase.
- FBScanner Viewer - visualiseur en temps réel, il affiche les connexions, les requêtes et les transactions qui passent par le service FBScanner, prend en charge toutes les versions de Firebird et InterBase.
- Prise en charge de toutes les versions de Firebird (1.0 - 2.5) et InterBase (4.0-XE3). FBScanner est le seul outil permettant d’analyser les requêtes SQL dans les bases de données Firebird et InterBase en production dans les versions antérieures à Firebird 2.1, surtout si l’application a été développée par un tiers et qu’aucun code source n’est disponible.
Liste des capacités les plus intéressantes de FBScanner :
- Journalisation des requêtes SQL, des connexions et des transactions avec tous les paramètres pour une analyse détaillée (pour un ou plusieurs postes de travail), afin de trouver les goulots d’étranglement de performance dans Firebird (TOUTES les versions) et InterBase (TOUTES les versions).
- Surveillance en temps réel des connexions. FBScanner Viewer affiche toutes les connexions au serveur de base de données sélectionné : le nom IP/DNS du client connecté, la base de données et l’heure de connexion.
- Surveillance en temps réel des requêtes SQL. Pour chaque connexion, FBScanner affiche toutes les requêtes SQL en cours d’exécution ainsi que leurs paramètres de transaction.
- Détection de la connexion la plus ancienne et de la transaction active la plus ancienne pour vous permettre d’analyser un comportement de transaction non optimal, une conception de transaction incorrecte ou d’identifier les utilisateurs susceptibles d’utiliser l’application d’une manière qui pourrait affecter les performances.
- Déconnexions des clients (erreurs 10054). Vérifiez que la déconnexion se déroule correctement et vous pouvez également utiliser ce logiciel pour déconnecter les utilisateurs afin d’effectuer une maintenance ou des mises à niveau de la base de données.
- FBScanner permet le routage d’applications spécifiques ou d’utilisateurs particuliers pour vous permettre de vous concentrer sur des applications ou des utilisateurs spécifiques.
Comment FBScanner peut-il aider à identifier et résoudre un problème de performance Firebird ou InterBase ? Passons rapidement en revue les fonctionnalités les plus intéressantes de FBScanner, en commençant par le module LogAnalyzer.
ÉTAPE 1 : LogAnalyzer « Charge du serveur »
Téléchargez la version démo de FBScanner et installez-la. Exécutez « FBScanner Service Settings » depuis le menu Démarrer, puis cliquez sur « Advanced options », onglet « SQL Log ».
Créez une base de données de journalisation (elle doit se trouver sur une autre instance Firebird sur cet ordinateur ou un autre - veuillez vous référer au « FBScanner User Guide », pages 14-16 pour plus de détails). Après cela, tout le trafic SQL qui passe par FBScanner sera stocké dans la base de données de journalisation.
Exécutez « FBScanner Log Analyzer » et connectez-vous à la base de données de journalisation. Dans le premier onglet, « Server load », vous pouvez voir un aperçu des connexions et des instructions SQL. Il est facile de voir les pics de charge et de déterminer les moments où les performances étaient mauvaises.
Vous pouvez zoomer et faire défiler ce graphique de performance, activer et désactiver des paramètres à afficher - afin de capturer le moment où le problème commence. Ensuite, cliquez avec le bouton droit sur le point où vous souhaitez entrer dans les détails et choisissez « Go to the SQL list on HH:mm ».
ÉTAPE 2 : Journal SQL dans LogAnalyzer
Si vous avez sélectionné l’onglet « All Statements », la liste suivante de toutes les requêtes SQL sera affichée. Veuillez noter qu’il y a des requêtes SQL provenant de toutes les connexions qui sont journalisées par FBScanner (il est possible de configurer FBScanner pour surveiller uniquement une connexion ou un groupe d’ordinateurs, ou seulement une application sélectionnée - tout ce dont vous avez besoin est d’utiliser une chaîne de connexion et/ou des ports appropriés - veuillez lire à ce sujet dans le « FBScanner User Guide »).
Vous pouvez affiner votre recherche - définissez les moments de début et de fin, puis les requêtes sur EXECUTION_TIME afin de voir les requêtes les plus longues.
Pour chaque requête, vous pouvez voir le texte de la requête SQL, ses paramètres, l’heure de début/fin, le nombre d’enregistrements récupérés, et aussi savoir qui et quand l’a exécutée : adresse IP, nom d’utilisateur, etc.
Vous pouvez également forcer FBScanner à journaliser les plans SQL, pour cela vous devez définir une coche appropriée dans « FBScanner Service Settings ».
Lorsque vous avez identifié la requête qui pose problème, vous pouvez voir sa connexion et sa transaction : pour cela, cliquez avec le bouton droit et choisissez « View connection and transactions for statement ID=… ». Cela vous amènera à l’onglet « All connections and Logs ».
ÉTAPE 3 : Connexions et transactions
L’onglet « All connections and Logs » contient la liste de toutes les connexions et, en relation maître-détail, les transactions et les instructions.
Lorsque vous cliquez sur la requête SQL dans la grille ci-dessous, toutes les instructions dans le cadre de la même transaction seront marquées en gras. Cela vous donne une compréhension du flux réel des transactions. De plus, il y a les paramètres de la transaction (des paramètres de transaction vides signifient que cette transaction a les paramètres par défaut « wait, write, snapshot »).
De plus, FBScanner LogAnalyzer permet d’exécuter une requête sélectionnée contre une autre version de base de données et de comparer ses performances. Il peut également effectuer une exécution SQL en masse, ce qui peut être utile en cas de migration entre versions de Firebird.
Important ! La version démo de FBScanner stocke certains textes de requêtes comme « Demo », et elle ne fonctionne que 7 jours. La version complète n’a pas ces restrictions.
ÉTAPE 4 : FBScanner Viewer
FBScanner Viewer est une partie de FBScanner responsable du suivi en temps réel des connexions, des requêtes et des transactions. FBScanner Viewer se connecte directement au service FBScanner et récupère les informations sur le trafic SQL.
FBScanner Viewer peut être exécuté sur n’importe quelle machine du réseau local : il se connecte via le port 30100 par défaut et extrait les données en ligne du service FBScanner.
Par défaut, FBScanner Viewer actualise son état toutes les 0,5 secondes, et il est également possible de voir les 20 requêtes les plus récentes de la connexion.
Pour les connexions lentes (Internet), FBScanner Viewer peut être configuré pour actualiser les données toutes les 5 secondes, par exemple.
De plus, FBScanner Viewer peut être utilisé pour la gestion des connexions : il peut déconnecter les utilisateurs (sélectionnés, tous, par masque) avec simulation de l’erreur de déconnexion 10054, et prend en charge les fonctionnalités de liste blanche et noire.
Conseils pour une optimisation réussie
Important ! Il est recommandé de commencer l’investigation des problèmes de performance avec MON$Logger : prenez plusieurs instantanés de la base de données pendant les périodes de forte charge (lorsque les utilisateurs rencontrent les ralentissements les plus difficiles), et essayez de déterminer quels processus métier consomment le plus d’E/S (attention aux requêtes avec des valeurs élevées de READ_SEQ_READS et RECORD_IDX_READS).
Ensuite, installez le service FBScanner sur ces postes de travail (ou utilisez un serveur dédié) et journalisez toutes les requêtes des postes suspects : examinez leurs temps EXECUTE et PREPARE, vérifiez les plans SQL, etc. Trouvez et corrigez le problème, puis vérifiez que la nouvelle version fonctionne plus rapidement que la précédente !
Utilisez FBScanner Viewer pour la visualisation en temps réel des requêtes exécutées sur le serveur (cette fonctionnalité est également très utile pour déboguer des SQL complexes).
Description de FBScanner
FBScanner est un outil puissant pour les administrateurs et développeurs Firebird et InterBase, conçu pour l’interception et l’analyse du trafic TCP/IP entre le serveur et les applications clientes.
FBScanner extrait en temps réel de nombreux détails sur les connexions, les requêtes (instructions), les transactions, marque et suit tous ces objets de trafic avec un mécanisme unique de balises. FBScanner peut également journaliser toute l’activité dans une base de données Firebird externe et effectuer un certain nombre de tâches administratives uniques.
FBScanner (Firebird Scanner) est un outil qui peut surveiller et visualiser tout le trafic entre les serveurs Firebird et InterBase et leurs applications clientes.
Le service FBScanner fonctionne comme une passerelle (proxy) sur l’ordinateur avec Firebird/InterBase (Windows uniquement) ou peut être installé sur un ordinateur distant et fonctionner avec Firebird sur tous les systèmes d’exploitation pris en charge (Windows, Linux, Mac OS X, HP-UX, etc.).
FBScanner peut être utilisé pour profiler les applications de base de données, surveiller l’activité des utilisateurs, gérer les connexions à la base de données (y compris la déconnexion des clients sur les architectures Classic et SuperServer). Il est également idéal pour résoudre les erreurs INET (INET/inet_error: send errno = 10054), ainsi que pour auditer les applications existantes et l’optimisation des performances.
FBScanner prend en charge Firebird (1.0, 2.0, 2.1, 2.5) et InterBase (4.0, 5.x, 6.x, 7.0, 7.1, 7.5, 2007, 2009, XE, XE3).
FBScanner est transparent du point de vue de l’application de base de données et ne nécessite aucune modification du code source, de la logique ou de la configuration de l’application ou de la base de données.
FBScanner V3.x fonctionne uniquement sous Windows et nécessite l’installation du Framework .NET 2.0 (ou supérieur).
Présentations sur FBScanner
Comment fonctionne FBScanner
Service FBScanner
Important ! Dans cette section, nous ne décrivons pas le fonctionnement de MON$Logger et du plugin TraceAPI, elle est consacrée uniquement au service FBScanner, à FBScanner Viewer et à LogAnalyzer.
Le service FBScanner doit normalement être installé sur le même ordinateur où le serveur Firebird ou InterBase est exécuté (en option, vous pouvez l’installer sur un autre ordinateur puis rediriger le trafic vers le serveur Firebird ou InterBase réel). Pendant l’installation, l’utilitaire de configuration FBScanner vous demandera de choisir : installer FBScanner sur le port par défaut d’InterBase ou Firebird (3050) et modifier la configuration du service Firebird sur 3052 (cela peut être ajusté), ou installer FBScanner pour écouter sur un autre port TCP.
Important ! Le service FBScanner fonctionne uniquement avec les connexions TCP, donc les clients utilisant des chaînes de connexion locales (XNET) et NetBEUI (WNET) contourneront FBScanner. Pour surveiller ces applications clientes, vous devez utiliser MON$Logger et le plugin TraceAPI.
Si vous choisissez la première option d’installation, toutes les demandes des applications passeront par le service FBScanner.
| ##### Installation côté serveur | ##### Installation à distance |
![]() |
![]() |
Impact sur les performances
Le scénario habituel du processus d’optimisation des performances comprend l’installation de FBScanner sur 1 à 2 postes de travail typiques pour capturer le trafic SQL typique. Il n’y a aucune raison d’intercepter et de journaliser tout le trafic SQL de tous les postes de travail - il y a trop d’informations à analyser et trop de requêtes répétitives.
Cependant, si vous souhaitez installer FBScanner comme proxy pour tout le serveur et journaliser toutes les opérations, assurez-vous de fournir la même bande passante d’E/S et un CPU et une RAM comparables à ceux du serveur de production. Pour les bases de données à forte charge, le journal de FBScanner peut croître de plusieurs Go par jour. Dans de tels cas, nous recommandons une installation dédiée (serveur distant) de FBScanner.
FBScanner Service ne modifie rien dans le trafic transféré et fonctionne simplement comme un proxy transparent, donc toutes les applications continueront de fonctionner normalement. FBScanner Service consomme environ 125-150 Mo de mémoire pour surveiller 50 à 70 clients actifs, et il réduira les performances de la base de données de 5 à 15 % lorsqu’il est utilisé. La consommation de mémoire dépend de la conception de l’application cliente. La bande passante IO requise dépend de l’intensité du trafic SQL.
Lors des tests, nous avons vérifié FBScanner en fonctionnement dans plusieurs environnements réels et applications où la base de données compte 30 à 200 connexions actives et avons constaté que la dégradation des performances était minime. Dans de nombreux cas, les utilisateurs n’ont pas pu déterminer que la surveillance était active.
Segmentation du trafic
L’utilisation de FBScanner sur un port non standard permet de segmenter différents trafics provenant de différentes applications. Par exemple, il y a les applications A et B. B est une application ancienne et stable qui ne nécessite aucun réglage ni surveillance, et A est une nouvelle application. Il est facile de configurer la chaîne de connexion pour la nouvelle application A afin d’utiliser un port non standard (par exemple server/3070:Disk:\Path\database.gdb) et d’acheminer toutes les requêtes de l’application A via FBScanner afin de surveiller les requêtes SQL et le comportement de l’application.

En utilisant cette approche, vous pouvez facilement identifier et résoudre les problèmes dans un environnement de production, que le problème provienne de la nouvelle application ou même d’un segment particulier de votre réseau local.





