Diese Seite wurde maschinell übersetzt. Lesen Sie das englische Original. English

FBScanner wird durch HQbird ersetzt. Siehe Monitoring in HQbird.

FBScanner (Firebird Scanner) ist ein Werkzeug zur Lösung aller Arten von Leistungsproblemen mit Firebird.

FBScanner-Dokumentation

FBScanner-Module

FBScanner ist eines der effizientesten IBSurgeon-Werkzeuge: Es verfolgt den SQL-Verkehr zwischen Server und Clients. Die Funktionen von FBScanner:

  1. LogAnalyzer - Werkzeug für die detaillierte Analyse von SQL-Abfragen, Plänen, Transaktionen und Verbindungen; es unterstützt alle Versionen von Firebird und InterBase.
  2. FBScanner Viewer - Echtzeit-Viewer, der Verbindungen, Abfragen und Transaktionen anzeigt, die durch den FBScanner-Dienst laufen; unterstützt alle Versionen von Firebird und InterBase.
  3. Unterstützung für alle Versionen von Firebird (1.0 - 2.5) und InterBase (4.0-XE3). FBScanner ist das einzige Werkzeug zur Analyse von SQL-Abfragen in Produktionsdatenbanken von Firebird und InterBase in Versionen vor Firebird 2.1, insbesondere wenn die Anwendung von Dritten entwickelt wurde und kein Quellcode verfügbar ist.

Die beeindruckendsten Fähigkeiten von FBScanner sind:

  • Protokollierung von SQL-Abfragen, Verbindungen und Transaktionen mit allen Parametern für eine detaillierte Analyse (für einzelne oder mehrere Arbeitsplätze), um Leistungsengpässe bei Firebird (ALLE Versionen) und InterBase (ALLE Versionen) zu finden.
  • Echtzeit-Überwachung von Verbindungen. Der FBScanner Viewer zeigt alle Verbindungen zum ausgewählten Datenbankserver: IP/DNS-Name des verbundenen Clients, Datenbank und Verbindungszeit.
  • Echtzeit-Überwachung von SQL-Abfragen. Für jede Verbindung zeigt FBScanner alle aktuell laufenden SQL-Abfragen zusammen mit ihren Transaktionsparametern.
  • Erkennung der ältesten Verbindung und der ältesten aktiven Transaktion, um nicht-optimales Transaktionsverhalten oder falsches Transaktionsdesign zu analysieren oder Benutzer zu identifizieren, die die Anwendung möglicherweise auf eine Weise nutzen, die die Leistung beeinträchtigt.
  • Client-Trennungen (10054-Fehler). Überprüfen Sie, ob die Trennung korrekt erfolgt, und Sie können diese Software auch verwenden, um Benutzer zu trennen, um Wartungsarbeiten oder Datenbank-Upgrades durchzuführen.
  • FBScanner ermöglicht das Routing bestimmter Anwendungen oder bestimmter Benutzer, um sich auf bestimmte Anwendungen oder Benutzer zu konzentrieren.

Wie kann FBScanner helfen, Leistungsprobleme mit Firebird oder InterBase zu identifizieren und zu lösen? Lassen Sie uns kurz die interessantesten Funktionen von FBScanner durchgehen und mit dem LogAnalyzer-Modul beginnen.

SCHRITT 1: LogAnalyzer „Serverlast"

FBScanner Log Analyzer

Laden Sie die Demo-Version von FBScanner herunter und installieren Sie sie. Führen Sie „FBScanner Service Settings" aus dem Startmenü aus und klicken Sie dann auf „Erweiterte Optionen", Registerkarte „SQL-Log".

Erstellen Sie eine Log-Datenbank (sie sollte sich auf einer anderen Firebird-Instanz auf diesem oder einem anderen Computer befinden - Details finden Sie im „FBScanner-Benutzerhandbuch", Seiten 14-16). Danach wird der gesamte SQL-Verkehr, der durch FBScanner läuft, in der Log-Datenbank gespeichert.

Führen Sie „FBScanner Log Analyzer" aus und verbinden Sie sich mit der Log-Datenbank. Auf der ersten Registerkarte „Serverlast" sehen Sie eine Übersicht über SQL-Verbindungen und -Anweisungen. Es ist leicht, Lastspitzen zu erkennen und die Momente zu bestimmen, in denen die Leistung schlecht war.

Sie können dieses Leistungsdiagramm zoomen und scrollen sowie Parameter ein- und ausschalten, um den Moment zu erfassen, in dem das Problem beginnt. Klicken Sie danach mit der rechten Maustaste auf den Punkt, an dem Sie Details sehen möchten, und wählen Sie „Gehe zur SQL-Liste um HH:mm".

SCHRITT 2: SQL-Log im LogAnalyzer

FBScanner Log Analyzer

Wenn Sie die Registerkarte „Alle Anweisungen" ausgewählt haben, wird die anschließende Liste aller SQL-Abfragen angezeigt. Beachten Sie, dass SQL-Abfragen von allen Verbindungen enthalten sind, die von FBScanner protokolliert werden (es ist möglich, FBScanner so einzurichten, dass nur eine Verbindung oder eine Gruppe von Computern oder nur eine ausgewählte Anwendung überwacht wird - Sie müssen nur eine entsprechende Verbindungszeichenfolge und/oder Ports verwenden - lesen Sie dazu im „FBScanner-Benutzerhandbuch").

Sie können Ihre Suche eingrenzen - legen Sie Start- und Endzeitpunkte fest und filtern Sie dann nach EXECUTION_TIME, um die längsten Abfragen zu sehen.

Für jede Abfrage sehen Sie den SQL-Abfragetext, ihre Parameter, Start-/Endzeit, Anzahl der abgerufenen Datensätze und auch, wer sie wann ausgeführt hat: IP-Adresse, Benutzername usw.

Sie können FBScanner auch zwingen, SQL-Pläne zu protokollieren. Dazu müssen Sie in „FBScanner Service Settings" ein entsprechendes Häkchen setzen.

Wenn Sie die problematische Abfrage identifiziert haben, können Sie ihre Verbindung und Transaktion anzeigen: Klicken Sie dazu mit der rechten Maustaste und wählen Sie „Verbindung und Transaktionen für Anweisungs-ID=… anzeigen". Sie gelangen zur Registerkarte „Alle Verbindungen und Logs".

SCHRITT 3: Verbindungen und Transaktionen

FBScanner Log Analyzer

Die Registerkarte „Alle Verbindungen und Logs" enthält die Liste aller Verbindungen sowie zugehörige Master-Detail-Transaktionen und -Anweisungen.

Wenn Sie auf die SQL-Abfrage im darunterliegenden Raster klicken, werden alle Anweisungen im Rahmen derselben Transaktion fett markiert. Das gibt Ihnen ein Verständnis für den tatsächlichen Transaktionsablauf. Außerdem gibt es Parameter der Transaktion (leere Transaktionsparameter bedeuten, dass diese Transaktion die Standardparameter „wait, write, snapshot" hat).

Darüber hinaus ermöglicht der FBScanner LogAnalyzer, eine ausgewählte Abfrage gegen eine andere Datenbankversion auszuführen und deren Leistung zu vergleichen. Er kann auch Massen-SQL-Ausführungen durchführen, was bei einer Migration zwischen Firebird-Versionen nützlich sein kann.

Wichtig! Die Demo-Version von FBScanner speichert einige Abfragetexte als „Demo" und funktioniert nur 7 Tage. Die Vollversion hat diese Einschränkungen nicht.

SCHRITT 4: FBScanner Viewer

FBScanner Log Analyzer

FBScanner Viewer ist ein Teil von FBScanner, der für die Echtzeit-Verfolgung von Verbindungen, Abfragen und Transaktionen verantwortlich ist. Der FBScanner Viewer verbindet sich direkt mit dem FBScanner-Dienst und ruft SQL-Verkehrsinformationen ab.

Der FBScanner Viewer kann auf jedem Rechner im lokalen Netzwerk ausgeführt werden: Er verbindet sich standardmäßig über Port 30100 und zieht Online-Daten vom FBScanner-Dienst.

Standardmäßig aktualisiert der FBScanner Viewer seinen Status alle 0,5 Sekunden, und es ist auch möglich, die 20 neuesten Abfragen der Verbindung zu sehen.

Für langsame (Internet-)Verbindungen kann der FBScanner Viewer beispielsweise so eingestellt werden, dass er die Daten alle 5 Sekunden aktualisiert.

Der FBScanner Viewer kann auch für die Verbindungsverwaltung verwendet werden: Er kann Benutzer (ausgewählte, alle, per Maske) mit Simulation des 10054-Trennungsfehlers trennen und unterstützt White- und Blacklist-Funktionalität.

Tipps für eine erfolgreiche Optimierung

Wichtig! Es wird empfohlen, die Untersuchung von Leistungsproblemen mit MON$Logger zu beginnen: Nehmen Sie mehrere Snapshots von der Datenbank während der Hochlastzeit (wenn Benutzer die schwierigste Verlangsamung erleben) und versuchen Sie herauszufinden, welche Geschäftsprozesse den meisten IO verbrauchen (achten Sie auf Abfragen mit hohen READ_SEQ_READS- und RECORD_IDX_READS-Werten).

Installieren Sie dann den FBScanner-Dienst auf diesen Arbeitsstationen (oder verwenden Sie einen dedizierten Server) und protokollieren Sie alle Abfragen von verdächtigen Arbeitsstationen: Untersuchen Sie deren EXECUTE- und PREPARE-Zeiten, prüfen Sie SQL-Pläne usw. Finden und beheben Sie das Problem und prüfen Sie dann, ob die neue Version schneller läuft als die vorherige!

Verwenden Sie den FBScanner Viewer für die Echtzeit-Anzeige von Abfragen, die auf dem Server ausgeführt werden (diese Funktion ist auch sehr nützlich zum Debuggen komplexer SQLs).

FBScanner-Beschreibung

FBScanner ist ein leistungsstarkes Werkzeug für Firebird- und InterBase-Administratoren und -Entwickler, das für die Erfassung und Analyse des TCP/IP-Verkehrs zwischen Server und Client-Anwendungen entwickelt wurde.

FBScanner extrahiert in Echtzeit viele Details über Verbindungen, Abfragen (Anweisungen), Transaktionen, markiert und verfolgt alle diese Verkehrsobjekte mit einem einzigartigen Tag-Mechanismus. FBScanner kann auch alle Aktivitäten in einer externen Firebird-Datenbank protokollieren und eine Reihe einzigartiger administrativer Aufgaben ausführen.

FBScanner (Firebird Scanner) ist ein Werkzeug, das den gesamten Verkehr zwischen Firebird- und InterBase-Servern und ihren Client-Anwendungen überwachen und anzeigen kann.

Der FBScanner-Dienst arbeitet als Gateway (Proxy) auf dem Computer mit Firebird/InterBase (nur Windows) oder kann auf einem entfernten Computer installiert werden und mit Firebird auf allen unterstützten Betriebssystemen (Windows, Linux, Mac OS X, HP-UX usw.) arbeiten.

FBScanner kann verwendet werden, um Datenbankanwendungen zu profilieren, Benutzeraktivitäten zu überwachen, Datenbankverbindungen zu verwalten (einschließlich Client-Trennung sowohl bei Classic- als auch bei SuperServer-Architektur). Es ist auch ideal für die Fehlerbehebung von INET-Fehlern (INET/inet_error: send errno = 10054) sowie für die Prüfung bestehender Anwendungen und die Leistungsoptimierung.

FBScanner unterstützt Firebird (1.0, 2.0, 2.1, 2.5) und InterBase (4.0, 5.x, 6.x, 7.0, 7.1, 7.5, 2007, 2009, XE, XE3).

FBScanner ist für die Datenbankanwendung transparent und erfordert keine Änderungen am Anwendungs- oder Datenbankquellcode, an der Logik oder der Konfiguration.

FBScanner V3.x funktioniert nur unter Windows und erfordert das .NET 2.0 (oder höher) Framework.

Präsentationen über FBScanner

FBScanner: IBSurgeons Werkzeug zur Lösung aller Arten von Leistungsproblemen mit Firebird. Firebird-Migration: von Firebird 1.5 zu Firebird 2.5
Weitere Präsentationen von Nataly Polyanskaya ansehen

Wie FBScanner funktioniert

FBScanner-Dienst

Wichtig! In diesem Abschnitt beschreiben wir nicht die Arbeit von MON$Logger und TraceAPI Plugin; er ist nur dem FBScanner-Dienst, dem FBScanner Viewer und dem LogAnalyzer gewidmet.

Der FBScanner-Dienst muss normalerweise auf demselben Computer installiert werden, auf dem der Firebird- oder InterBase-Server läuft (optional können Sie ihn auf einem anderen Computer installieren und den Verkehr dann an den tatsächlichen Firebird- oder InterBase-Server umleiten). Während der Installation fragt Sie das FBScanner-Konfigurationsprogramm, ob Sie FBScanner auf dem Standardport von InterBase oder Firebird (3050) installieren und die Konfiguration des Firebird-Dienstes auf 3052 ändern möchten (dies kann angepasst werden), oder ob FBScanner auf einem anderen TCP-Port lauschen soll.

Wichtig! Der FBScanner-Dienst funktioniert nur mit TCP-Verbindungen, sodass Clients, die lokale (XNET) und NetBEUI (WNET) Verbindungszeichenfolgen verwenden, FBScanner umgehen. Um solche Client-Anwendungen zu überwachen, sollten Sie MON$Logger und TraceAPI Plugin verwenden.

Wenn Sie die erste Installationsoption wählen, laufen alle Anwendungsanfragen durch den FBScanner-Dienst.

##### Server-seitige Installation ##### Remote-Installation

Leistungsauswirkung

Das übliche Szenario des Leistungsoptimierungsprozesses umfasst die Installation von FBScanner auf 1-2 typischen Arbeitsstationen, um den typischen SQL-Verkehr zu erfassen. Es gibt keinen Grund, den gesamten SQL-Verkehr von allen Arbeitsstationen abzufangen und zu protokollieren - es gibt zu viele Informationen zum Analysieren und zu viele sich wiederholende Abfragen.

Wenn Sie FBScanner jedoch als Proxy für den gesamten Server installieren und alle Operationen dort protokollieren möchten, stellen Sie sicher, dass Sie dieselbe IO-Bandbreite sowie vergleichbare CPU und RAM wie auf dem Produktionsserver bereitstellen. Bei Hochlast-Datenbanken kann das FBScanner-Log um mehrere GB pro Tag wachsen. In solchen Fällen empfehlen wir eine dedizierte (Remote-Server-)Installation von FBScanner.

FBScanner Service ändert nichts am übertragenen Datenverkehr und funktioniert einfach wie ein transparenter Proxy, sodass alle Anwendungen normal weiterarbeiten. FBScanner Service verbraucht etwa 125-150 MB Speicher für die Überwachung von 50-70 aktiven Clients und reduziert die Datenbankleistung bei Verwendung um 5 bis 15 %. Der Speicherverbrauch hängt vom Design der Client-Anwendung ab. Die erforderliche IO-Bandbreite hängt von der Intensität des SQL-Datenverkehrs ab.

Während der Tests haben wir FBScanner in mehreren realen Umgebungen und Anwendungen geprüft, in denen die Datenbank 30-200 aktive Verbindungen hat, und festgestellt, dass die Leistungsminderung minimal war. In vielen Fällen konnten die Benutzer nicht erkennen, dass die Überwachung aktiv ist.

Segmentierung des Datenverkehrs

Die Verwendung von FBScanner auf einem nicht standardmäßigen Port ermöglicht es, verschiedenen Datenverkehr verschiedener Anwendungen zu segmentieren. Zum Beispiel gibt es die Anwendungen A und B. B ist eine alte und stabile Anwendung, die keine Optimierung oder Überwachung benötigt, und A ist eine neue Anwendung. Es ist einfach, die Verbindungszeichenfolge für die neue Anwendung A so einzurichten, dass sie einen nicht standardmäßigen Port verwendet (z. B. server/3070:Disk:\Pfad\database.gdb) und alle Anfragen der Anwendung A über FBScanner zu leiten, um SQL-Abfragen und das Anwendungsverhalten zu überwachen.

Mit diesem Ansatz können Sie Probleme in einer Produktionsumgebung leicht erkennen und lösen, egal ob das Problem von der neuen Anwendung oder sogar von einem bestimmten Segment Ihres lokalen Netzwerks stammt.