Questa pagina è stata tradotta automaticamente. Leggi l'originale in inglese. English

FBScanner è sostituito da HQbird. Vedi Monitoraggio in HQbird.

FBScanner (Firebird Scanner) è uno strumento per risolvere tutti i tipi di problemi di prestazioni con Firebird.

Documentazione FBScanner

Moduli FBScanner

FBScanner è uno degli strumenti IBSurgeon più efficienti: traccia il traffico SQL tra server e client. Caratteristiche di FBScanner:

  1. LogAnalyzer - strumento per l’analisi dettagliata di query SQL, piani, transazioni e connessioni; supporta tutte le versioni di Firebird e InterBase.
  2. FBScanner Viewer - visualizzatore in tempo reale; mostra connessioni, query e transazioni che passano attraverso il servizio FBScanner; supporta tutte le versioni di Firebird e InterBase.
  3. Supporto per tutte le versioni di Firebird (1.0 - 2.5) e InterBase (4.0-XE3). FBScanner è l’unico strumento per analizzare query SQL in database Firebird e InterBase in produzione nelle versioni precedenti a Firebird 2.1, specialmente se l’applicazione è stata sviluppata da terze parti e non è disponibile il codice sorgente.

Elenco delle capacità più interessanti di FBScanner:

  • Registrazione di query SQL, connessioni e transazioni con tutti i parametri per un’analisi dettagliata (per singole o più postazioni di lavoro), al fine di individuare i colli di bottiglia delle prestazioni in Firebird (TUTTE le versioni) e InterBase (TUTTE le versioni).
  • Monitoraggio in tempo reale delle connessioni. FBScanner Viewer mostra tutte le connessioni al server di database selezionato: nome IP/DNS del client connesso, database e ora di connessione.
  • Monitoraggio in tempo reale delle query SQL. Per ogni connessione, FBScanner mostra tutte le query SQL attualmente in esecuzione insieme ai relativi parametri di transazione.
  • Rilevamento della connessione più vecchia e della transazione attiva più vecchia per consentire di analizzare eventuali comportamenti transazionali non ottimali, progettazione transazionale errata o identificare utenti che potrebbero utilizzare l’applicazione in modo da influire sulle prestazioni.
  • Disconnessioni client (errori 10054). Verifica che la disconnessione avvenga correttamente; puoi anche utilizzare questo software per disconnettere gli utenti al fine di eseguire manutenzione o aggiornamenti del database.
  • FBScanner consente il routing di applicazioni specifiche o di particolari utenti per concentrarsi su applicazioni o utenti specifici.

In che modo FBScanner può aiutare a identificare e risolvere problemi di prestazioni di Firebird o InterBase? Esaminiamo rapidamente le funzionalità più interessanti di FBScanner, iniziando dal modulo LogAnalyzer.

PASSO 1: LogAnalyzer “Carico del server”

FBScanner Log Analyzer

Scarica la versione demo di FBScanner e installala. Esegui “FBScanner Service Settings” dal menu Start, quindi fai clic su “Opzioni avanzate”, scheda “SQL Log”.

Crea il database di log (deve trovarsi su un’altra istanza Firebird su questo o un altro computer - consulta “Guida utente FBScanner”, pagine 14-16 per i dettagli). Dopo di che, tutto il traffico SQL che passa attraverso FBScanner verrà archiviato nel database di log.

Esegui “FBScanner Log Analyzer” e connettiti al database di log. Nella prima scheda, “Carico del server”, puoi vedere una panoramica delle connessioni e delle istruzioni SQL. È facile individuare i picchi di carico e determinare i momenti in cui le prestazioni erano scarse.

Puoi ingrandire e scorrere questo grafico delle prestazioni, attivare e disattivare i parametri da visualizzare - per individuare il momento in cui inizia il problema. Dopo di che, fai clic con il pulsante destro del mouse sul punto in cui desideri approfondire e scegli “Vai all’elenco SQL alle HH:mm”.

PASSO 2: Log SQL in LogAnalyzer

FBScanner Log Analyzer

Se hai selezionato la scheda “Tutte le istruzioni”, verrà mostrato l’elenco successivo di tutte le query SQL. Nota che ci sono query SQL da tutte le connessioni registrate da FBScanner (è possibile configurare FBScanner per monitorare solo una connessione o un gruppo di computer, o solo un’applicazione selezionata - tutto ciò che serve è utilizzare una stringa di connessione e/o porte appropriate - consulta la “Guida utente FBScanner”).

Puoi restringere la ricerca - imposta i momenti di inizio e fine e poi filtra le query su EXECUTION_TIME per vedere le query più lunghe.

Per ogni query puoi vedere il testo della query SQL, i suoi parametri, l’ora di inizio/fine, il conteggio dei record recuperati, e anche sapere chi e quando l’ha eseguita: indirizzo IP, nome utente, ecc.

Puoi anche forzare FBScanner a registrare i piani SQL; per questo devi impostare un’apposita spunta in “FBScanner Service Settings”.

Quando hai identificato la query problematica, puoi vedere la sua connessione e transazione: per questo fai clic con il pulsante destro e scegli “Visualizza connessione e transazioni per ID istruzione=…”. Ti porterà alla scheda “Tutte le connessioni e log”.

PASSO 3: Connessioni e transazioni

FBScanner Log Analyzer

La scheda “Tutte le connessioni e log” contiene l’elenco di tutte le connessioni e, come master-detail, transazioni e istruzioni correlate.

Quando fai clic su una query SQL nella griglia sottostante, tutte le istruzioni nell’ambito della stessa transazione verranno evidenziate in grassetto. Questo ti dà la comprensione del flusso reale delle transazioni. Inoltre, ci sono i parametri della transazione (parametri di transazione vuoti significano che questa transazione ha i parametri predefiniti “wait, write, snapshot”).

Inoltre, FBScanner LogAnalyzer consente di eseguire la query selezionata su un’altra versione del database e confrontarne le prestazioni. Può anche eseguire l’esecuzione SQL in blocco, utile in caso di migrazione tra versioni di Firebird.

Importante! La versione demo di FBScanner memorizza alcuni testi di query come “Demo” e funziona solo per 7 giorni. La versione completa non ha queste restrizioni.

PASSO 4: FBScanner Viewer

FBScanner Log Analyzer

FBScanner Viewer è una parte di FBScanner responsabile del monitoraggio in tempo reale di connessioni, query e transazioni. FBScanner Viewer si connette direttamente al servizio FBScanner e recupera le informazioni sul traffico SQL.

FBScanner Viewer può essere eseguito su qualsiasi macchina nella rete locale: si connette tramite la porta 30100 per impostazione predefinita e recupera dati online dal servizio FBScanner.

Per impostazione predefinita, FBScanner Viewer aggiorna il suo stato ogni 0,5 secondi ed è anche possibile vedere le 20 query più recenti della connessione.

Per connessioni lente (Internet), FBScanner Viewer può essere impostato per aggiornare i dati ogni 5 secondi, ad esempio.

Inoltre, FBScanner Viewer può essere utilizzato per la gestione delle connessioni: può disconnettere utenti (selezionati, tutti, per maschera) con simulazione dell’errore di disconnessione 10054 e supporta funzionalità di lista bianca e nera.

Suggerimenti per un’ottimizzazione efficace

Importante! Si consiglia di iniziare l’indagine sui problemi di prestazioni con MON$Logger: acquisisci diversi snapshot dal database durante i periodi di carico elevato (quando gli utenti sperimentano il rallentamento più difficile) e cerca di capire quali processi aziendali consumano più IO (attenzione alle query con valori elevati di READ_SEQ_READS e RECORD_IDX_READS).

Quindi installa il servizio FBScanner su queste postazioni di lavoro (o usa un server dedicato) e registra tutte le query dalle postazioni sospette: indaga i tempi EXECUTE e PREPARE, controlla i piani SQL, ecc. Trova e correggi il problema, poi verifica che la nuova versione sia più veloce della precedente!

Usa FBScanner Viewer per la visualizzazione in tempo reale delle query eseguite sul server (questa funzione è molto utile anche per il debug di SQL complessi).

Descrizione di FBScanner

FBScanner è un potente strumento per amministratori e sviluppatori di Firebird e InterBase, progettato per l’intercettazione e l’analisi del traffico TCP/IP tra server e applicazioni client.

FBScanner estrae in tempo reale molti dettagli su connessioni, query (istruzioni), transazioni, contrassegna e traccia tutti questi oggetti di traffico con un meccanismo unico di tag. FBScanner può anche registrare tutta l’attività in un database Firebird esterno ed eseguire una serie di attività amministrative uniche.

FBScanner (Firebird Scanner) è uno strumento che può monitorare e visualizzare tutto il traffico tra i server Firebird e InterBase e le loro applicazioni client.

Il servizio FBScanner funziona come un gateway (proxy) sul computer con Firebird/InterBase (solo Windows) o può essere installato su un computer remoto e funzionare con Firebird su tutti i sistemi operativi supportati (Windows, Linux, Mac OS X, HP-UX, ecc.).

FBScanner può essere utilizzato per profilare applicazioni di database, monitorare l’attività degli utenti, gestire le connessioni al database (inclusa la disconnessione dei client sia su architettura Classic che SuperServer). È anche ideale per risolvere errori INET (INET/inet_error: send errno = 10054), nonché per il controllo delle applicazioni esistenti e l’ottimizzazione delle prestazioni.

FBScanner supporta Firebird (1.0, 2.0, 2.1, 2.5) e InterBase (4.0, 5.x, 6.x, 7.0, 7.1, 7.5, 2007, 2009, XE, XE3).

FBScanner è trasparente per quanto riguarda l’applicazione di database e non richiede modifiche al codice sorgente, alla logica o alla configurazione dell’applicazione o del database.

FBScanner V3.x funziona solo su Windows e richiede l’installazione di .NET Framework 2.0 (o superiore).

Presentazioni su FBScanner

FBScanner: lo strumento di IBSurgeon per risolvere tutti i tipi di problemi di prestazioni con Firebird. Migrazione Firebird: da Firebird 1.5 a Firebird 2.5
Visualizza altre presentazioni di Nataly Polyanskaya

Come funziona FBScanner

Servizio FBScanner

Importante! In questa sezione non descriviamo il funzionamento di MON$Logger e del plugin TraceAPI; è dedicata solo al servizio FBScanner, a FBScanner Viewer e a LogAnalyzer.

Il servizio FBScanner deve normalmente essere installato sullo stesso computer in cui è in esecuzione il server Firebird o InterBase (in alternativa, puoi installarlo su un altro computer e quindi reindirizzare il traffico al server Firebird o InterBase effettivo). Durante l’installazione, l’utility di configurazione FBScanner ti chiederà di scegliere: installare FBScanner sulla porta predefinita di InterBase o Firebird (3050) e modificare la configurazione del servizio Firebird sulla porta 3052 (questo può essere regolato), oppure installare FBScanner per l’ascolto su un’altra porta TCP.

Importante! Il servizio FBScanner funziona solo con connessioni TCP, quindi i client che utilizzano stringhe di connessione locali (XNET) o NetBEUI (WNET) bypasseranno FBScanner. Per monitorare tali applicazioni client dovresti usare MON$Logger e il plugin TraceAPI.

Se scegli la prima opzione di installazione, tutte le richieste delle applicazioni passeranno attraverso il servizio FBScanner.

##### Installazione lato server ##### Installazione remota

Impatto sulle prestazioni

Lo scenario tipico del processo di ottimizzazione delle prestazioni include l’installazione di FBScanner su 1-2 postazioni di lavoro tipiche per catturare il traffico SQL tipico. Non c’è motivo di intercettare e registrare tutto il traffico SQL da tutte le postazioni di lavoro - c’è troppa informazione da analizzare e troppe query ripetitive.

Tuttavia, se desideri installare FBScanner come proxy per l’intero server e registrare tutte le operazioni, assicurati di fornire la stessa larghezza di banda IO e CPU e RAM comparabili a quelle del server di produzione. Per database ad alto carico, il log di FBScanner può crescere di diversi Gb al giorno. In tali casi, consigliamo l’installazione dedicata (server remoto) di FBScanner.

FBScanner Service non modifica nulla nel traffico trasferito e funziona semplicemente come un proxy trasparente, quindi tutte le applicazioni continueranno a funzionare normalmente. FBScanner Service consuma circa 125-150 Mb di memoria per il monitoraggio di 50-70 client attivi e ridurrà le prestazioni del database dal 5 al 15% quando è in uso. Il consumo di memoria dipende dal design dell’applicazione client. La larghezza di banda IO richiesta dipende dall’intensità del traffico SQL.

Durante i test, abbiamo verificato FBScanner in diversi ambienti reali e applicazioni in cui il database ha 30-200 connessioni attive e abbiamo notato che il degrado delle prestazioni era minimo. In molti casi, gli utenti non sono stati in grado di capire che il monitoraggio è attivo.

Segmentazione del Traffico

L’uso di FBScanner su una porta non standard consente di segmentare diversi traffici provenienti da diverse applicazioni. Ad esempio, ci sono le applicazioni A e B. B è un’applicazione vecchia e stabile che non richiede alcuna ottimizzazione o monitoraggio, mentre A è una nuova applicazione. È facile configurare la stringa di connessione per la nuova applicazione A per utilizzare una porta non standard (ad es. server/3070:Disk:\Path\database.gdb) e instradare tutte le richieste dell’applicazione A tramite FBScanner per monitorare le query SQL e il comportamento dell’applicazione.

Utilizzando questo approccio, puoi facilmente riconoscere e risolvere i problemi in un ambiente di produzione, sia che il problema provenga dalla nuova applicazione, sia che provenga da un particolare segmento della tua rete locale.