FBScanner
FBScanner is vervangen door HQbird. Zie Monitoring in HQbird.
FBScanner (Firebird Scanner) is een tool om alle soorten prestatieproblemen met Firebird op te lossen.
FBScanner Documentatie
FBScanner Modules
FBScanner is een van de meest efficiënte IBSurgeon-tools: het volgt SQL-verkeer tussen server en clients. FBScanner functies:
- LogAnalyzer - tool voor gedetailleerde analyse van SQL-queries, plannen, transacties en verbindingen, het ondersteunt alle versies van Firebird en InterBase.
- FBScanner Viewer - real-time viewer, het toont verbindingen, queries en transacties die via FBScanner Service lopen, ondersteunt alle versies van Firebird en InterBase.
- Ondersteuning voor alle versies van Firebird (1.0 - 2.5) en InterBase (4.0-XE3). FBScanner is de enige tool om SQL-queries te analyseren in productie-Firebird- en InterBase-databases in versies vóór Firebird 2.1, vooral als de applicatie is ontwikkeld door derden en er geen broncode beschikbaar is.
Lijst van FBScanner’s meest opvallende mogelijkheden zijn:
- Loggen van SQL-queries, verbindingen en transacties met alle parameters voor gedetailleerde analyse (voor één of meerdere werkplekken), om prestatieknelpunten te vinden bij Firebird (ALLE versies) en InterBase (ALLE versies).
- Real-time monitoring van verbindingen. FBScanner Viewer toont alle verbindingen met de geselecteerde databaseserver: de IP/DNS-naam van de verbonden client, database en verbindingstijd.
- Real-time monitoring van SQL-queries. Voor elke verbinding toont FBScanner alle momenteel lopende SQL-queries samen met hun transactieparameters.
- Detectie van de oudste verbinding en de oudste actieve transactie om u in staat te stellen te analyseren dat er mogelijk niet-optimaal transactiegedrag is, of een onjuist transactieontwerp, of om gebruikers te tonen die de applicatie mogelijk op een manier gebruiken die de prestaties kan beïnvloeden.
- Client-verbindingen verbreken (10054-fouten). Controleer of de verbreking correct plaatsvindt en u kunt deze software ook gebruiken om gebruikers te verbreken om onderhoud of database-upgrades uit te voeren.
- FBScanner maakt het routeren van specifieke applicaties of bepaalde gebruikers mogelijk om in te zoomen op specifieke applicaties of gebruikers.
Hoe kan FBScanner helpen om Firebird- of InterBase-prestatieproblemen te identificeren en op te lossen? Laten we snel de meest interessante functies van FBScanner bekijken, en beginnen met de LogAnalyzer-module.
STAP 1: LogAnalyzer “Serverbelasting”
Download de FBScanner-demoversie en installeer deze. Voer “FBScanner Service Settings” uit vanuit het Startmenu, klik vervolgens op “Advanced options”, tabblad “SQL Log”.
Maak een logdatabase aan (deze moet op een andere Firebird-instantie op deze of een andere computer staan - raadpleeg “FBScanner Gebruikershandleiding”, pagina’s 14-16 voor details). Daarna wordt al het SQL-verkeer dat via FBScanner loopt opgeslagen in de logdatabase.
Voer “FBScanner Log Analyzer” uit en maak verbinding met de logdatabase. Op het eerste tabblad, “Server load”, ziet u een overzicht van SQL-verbindingen en statements. Het is gemakkelijk om pieken in de belasting te zien en de momenten te bepalen waarop de prestaties slecht waren.
U kunt deze prestatiegrafiek in- en uitzoomen en scrollen, parameters aan- en uitzetten om weer te geven - om het moment te vangen waarop het probleem begint. Klik daarna met de rechtermuisknop op het punt waar u in detail wilt gaan en kies “Go to the SQL list on HH:mm”.
STAP 2: SQL-log in LogAnalyzer
Als u het tabblad “All Statements” hebt geselecteerd, wordt de daaropvolgende lijst van alle SQL-queries getoond. Houd er rekening mee dat er SQL-queries zijn van alle verbindingen die door FBScanner worden gelogd (het is mogelijk om FBScanner in te stellen om alleen de ene verbinding of groep computers te monitoren, of alleen een geselecteerde applicatie - alles wat u nodig hebt is een geschikte verbindingsreeks en/of poorten - lees hierover in de “FBScanner Gebruikershandleiding”).
U kunt uw zoekopdracht verfijnen - stel begin- en eindmomenten in en vervolgens queries op EXECUTION_TIME om de langste queries te zien.
Voor elke query kunt u de SQL-querytekst, de parameters, begin-/eindtijd, aantal opgehaalde records zien, en ook weten wie en wanneer deze heeft uitgevoerd: IP-adres, gebruikersnaam, enz.
U kunt FBScanner ook dwingen om SQL-plannen te loggen, hiervoor moet u een geschikt vinkje instellen in “FBScanner Service Settings”.
Wanneer u de query hebt geïdentificeerd die problemen heeft, kunt u de verbinding en transactie ervan bekijken: klik hiervoor met de rechtermuisknop en kies “View connection and transactions for statement ID=…”. Dit brengt u naar het tabblad “All connections and Logs”.
STAP 3: Verbindingen en Transacties
Tabblad “All connections and Logs” bevat de lijst van alle verbindingen en gerelateerde master-detail transacties en statements.
Wanneer u op de SQL-query in het raster hieronder klikt, worden alle statements binnen het kader van dezelfde transactie vetgedrukt gemarkeerd. Dit geeft u inzicht in de werkelijke transactiestroom. Ook zijn er parameters van de transactie (lege transactieparameters betekenen dat deze transactie de standaard “wait, write, snapshot” parameters heeft).
Ook maakt FBScanner LogAnalyzer het mogelijk om een geselecteerde query uit te voeren tegen een andere databaseversie en de prestaties ervan te vergelijken. Het kan ook bulk SQL-uitvoering uitvoeren, wat nuttig kan zijn bij migratie tussen Firebird-versies.
Belangrijk! De demoversie van FBScanner slaat sommige queryteksten op als “Demo”, en werkt slechts 7 dagen. De volledige versie heeft deze beperkingen niet.
STAP 4: FBScanner Viewer
FBScanner Viewer is een onderdeel van FBScanner dat verantwoordelijk is voor real-time tracking van verbindingen, queries en transacties. FBScanner Viewer maakt rechtstreeks verbinding met FBScanner Service en haalt SQL-verkeersinformatie op.
FBScanner Viewer kan op elke machine in het lokale netwerk worden uitgevoerd: het maakt standaard verbinding via poort 30100 en haalt online gegevens op van FBScanner Service.
Standaard ververst FBScanner Viewer zijn status elke 0,5 sec, en het is ook mogelijk om de 20 meest recente queries van de verbinding te zien.
Voor langzame (internet)verbindingen kan FBScanner Viewer bijvoorbeeld worden ingesteld om gegevens elke 5 seconden te verversen.
Ook kan FBScanner Viewer worden gebruikt voor verbindingsbeheer: het kan gebruikers verbreken (geselecteerd, alle, op masker) met simulatie van 10054-verbrekingsfout, en ondersteunt wit- en zwartlijstfunctionaliteit.
Tips voor succesvolle optimalisatie
Belangrijk! Het wordt aanbevolen om het onderzoek naar prestatieproblemen te starten met MON$Logger: neem verschillende snapshots van de database tijdens de zware belastingstijd (wanneer gebruikers de meeste moeilijke traagheid ervaren), en probeer erachter te komen welke bedrijfsprocessen de meeste IO verbruiken (let op queries met hoge READ_SEQ_READS en RECORD_IDX_READS-waarden).
Installeer vervolgens FBScanner Service op deze werkstations (of gebruik een dedicated server) en log alle queries van verdachte werkstations: onderzoek hun EXECUTE- en PREPARE-tijden, controleer SQL-plannen, enz. Vind en los het probleem op, en controleer vervolgens dat de nieuwe versie sneller draait dan de vorige!
Gebruik FBScanner Viewer voor real-time weergave van queries die op de server worden uitgevoerd (deze functie is ook zeer nuttig voor het debuggen van complexe SQL’s).
FBScanner beschrijving
FBScanner is een krachtige tool voor Firebird- en InterBase-beheerders en -ontwikkelaars, ontworpen voor het onderscheppen en analyseren van TCP/IP-verkeer tussen server en clientapplicaties.
FBScanner extraheert in real-time veel details over verbindingen, queries (statements), transacties, markeert en volgt al deze verkeersobjecten met een uniek tagmechanisme. FBScanner kan ook alle activiteit loggen naar een externe Firebird-database en een aantal unieke administratieve taken uitvoeren.
FBScanner (Firebird Scanner) is een tool die al het verkeer tussen Firebird- en InterBase-servers en hun clientapplicaties kan monitoren en bekijken.
FBScanner Service werkt als een gateway (proxy) op de computer met Firebird/InterBase (alleen Windows) of kan op een externe computer worden geïnstalleerd en werken met Firebird op alle ondersteunde besturingssystemen (Windows, Linux, Mac OS X, HP-UX, enz.).
FBScanner kan worden gebruikt om databaseapplicaties te profileren, gebruikersactiviteit te monitoren, databaseverbindingen te beheren (inclusief client-verbreking op zowel Classic- als SuperServer-architectuur). Het is ook ideaal voor het oplossen van INET-fouten (INET/inet_error: send errno = 10054), evenals het auditen van bestaande applicaties en prestatie-optimalisatie.
FBScanner ondersteunt Firebird (1.0, 2.0, 2.1, 2.5) en InterBase (4.0, 5.x, 6.x, 7.0, 7.1, 7.5, 2007, 2009, XE, XE3).
FBScanner is transparant wat betreft de databaseapplicatie en vereist geen wijzigingen in applicatie- of databasebroncode, logica of configuratie.
FBScanner V3.x werkt alleen op Windows en vereist dat het .NET 2.0 (of hoger) Framework is geïnstalleerd.
Presentaties over FBScanner
| FBScanner: IBSurgeon’s tool om alle soorten prestatieproblemen met Firebird op te lossen. | Firebird-migratie: van Firebird 1.5 naar Firebird 2.5 Bekijk meer presentaties van Nataly Polyanskaya |
Hoe FBScanner werkt
FBScanner Service
Belangrijk! In deze sectie beschrijven we niet het werk van MON$Logger en TraceAPI Plugin, het is alleen gewijd aan FBScanner Service, FBScanner Viewer en LogAnalyzer.
De FBScanner Service moet normaal gesproken worden geïnstalleerd op dezelfde computer waar de Firebird- of InterBase-server draait (als optie kunt u het op een andere computer installeren en vervolgens verkeer omleiden naar de werkelijke Firebird- of InterBase-server). Tijdens de installatie zal de FBScanner-configuratiehulpprogramma u vragen om te kiezen: installeer FBScanner op de standaardpoort van InterBase of Firebird (3050) en wijzig de configuratie van de Firebird-service naar 3052 (dit kan worden aangepast), of installeer FBScanner om op een andere TCP-poort te luisteren.
Belangrijk! FBScanner Service werkt alleen met TCP-verbindingen, dus clients die lokale (XNET) en NetBEUI (WNET) verbindingsreeksen gebruiken, zullen FBScanner omzeilen. Om dergelijke clientapplicaties te monitoren moet u MON$Logger en TraceAPI Plugin gebruiken.
Als u de eerste installatieoptie kiest, zullen alle applicatieverzoeken via FBScanner Service lopen.
| ##### Server-side installatie | ##### Externe installatie |
![]() |
![]() |
Prestatie-impact
Het gebruikelijke scenario van het prestatie-optimalisatieproces omvat installatie van FBScanner op 1-2 typische werkstations om het typische SQL-verkeer te vangen. Er is geen reden om al het SQL-verkeer van alle werkstations te onderscheppen en te loggen - er is te veel informatie om te analyseren, en te veel herhalende queries.
Als u echter FBScanner als proxy voor de hele server wilt installeren en alle operaties daar wilt loggen, zorg er dan voor dat u dezelfde IO-bandbreedte en vergelijkbare CPU en RAM biedt als op de productieserver. Voor databases met hoge belasting kan het log van FBScanner met enkele Gb per dag groeien. In dergelijke gevallen raden we een dedicated (externe server) installatie van FBScanner aan.
FBScanner Service verandert niets aan het doorgestuurde verkeer en werkt eenvoudig als een transparante proxy, zodat alle applicaties normaal blijven functioneren. FBScanner Service verbruikt ongeveer 125-150 Mb geheugen voor het monitoren van 50-70 actieve clients, en het zal de databaseprestaties met 5 tot 15% verminderen wanneer het in gebruik is. Het geheugenverbruik hangt af van het ontwerp van de clientapplicatie. De vereiste IO-bandbreedte hangt af van de intensiteit van het SQL-verkeer.
Tijdens het testen hebben we FBScanner aan het werk gecontroleerd in verschillende praktijkomgevingen en applicaties waar de database 30-200 actieve verbindingen heeft, en we merkten dat de prestatievermindering minimaal was. In veel gevallen konden gebruikers niet vaststellen dat monitoring actief was.
Segmentatie van verkeer
Het gebruik van FBScanner op een niet-standaard poort maakt het mogelijk om verschillende soorten verkeer van verschillende applicaties te segmenteren. Er zijn bijvoorbeeld applicaties A en B. B is een oude en stabiele applicatie die geen afstemming of monitoring vereist, en A is een nieuwe applicatie. Het is eenvoudig om de verbindingsreeks voor de nieuwe applicatie A in te stellen om een niet-standaard poort te gebruiken (bijv. server/3070:Disk:\Pad\database.gdb) en alle verzoeken van applicatie A via FBScanner te routeren om SQL-query’s en het applicatiegedrag te monitoren.

Met deze aanpak kunt u eenvoudig problemen binnen een productieomgeving herkennen en oplossen, of het probleem nu afkomstig is van de nieuwe applicatie, of zelfs van een specifiek segment van uw lokale netwerk.





