FBScanner
FBScanner ha sido reemplazado por HQbird. Consulte Monitoreo en HQbird.
FBScanner (Firebird Scanner) es una herramienta para resolver todo tipo de problemas de rendimiento con Firebird.
Documentación de FBScanner
Módulos de FBScanner
FBScanner es una de las herramientas más eficientes de IBSurgeon: rastrea el tráfico SQL entre el servidor y los clientes. Las características de FBScanner incluyen:
- LogAnalyzer - herramienta para el análisis detallado de consultas SQL, planes, transacciones y conexiones; admite todas las versiones de Firebird e InterBase.
- FBScanner Viewer - visor en tiempo real que muestra conexiones, consultas y transacciones que pasan a través del Servicio FBScanner; admite todas las versiones de Firebird e InterBase.
- Soporte para todas las versiones de Firebird (1.0 - 2.5) e InterBase (4.0-XE3). FBScanner es la única herramienta para analizar consultas SQL en bases de datos Firebird e InterBase en producción en versiones anteriores a Firebird 2.1, especialmente si la aplicación ha sido desarrollada por terceros y no hay código fuente disponible.
Lista de las capacidades más destacadas de FBScanner:
- Registro de consultas SQL, conexiones y transacciones con todos los parámetros para un análisis detallado (para uno o varios puestos de trabajo), con el fin de encontrar cuellos de botella de rendimiento en Firebird (TODAS las versiones) e InterBase (TODAS las versiones).
- Monitoreo en tiempo real de conexiones. FBScanner Viewer muestra todas las conexiones al servidor de base de datos seleccionado: el nombre IP/DNS del cliente conectado, la base de datos y el tiempo de conexión.
- Monitoreo en tiempo real de consultas SQL. Para cada conexión, FBScanner muestra todas las consultas SQL que se están ejecutando actualmente junto con sus parámetros de transacción.
- Detección de la conexión más antigua y de la transacción activa más antigua para permitirle analizar posibles comportamientos de transacción no óptimos, diseño incorrecto de transacciones o mostrar usuarios que podrían estar usando la aplicación de una manera que afecte el rendimiento.
- Desconexiones de clientes (errores 10054). Verifique que la desconexión se esté realizando correctamente y también puede usar este software para desconectar usuarios con el fin de realizar mantenimiento o actualizaciones de la base de datos.
- FBScanner permite el enrutamiento de aplicaciones específicas o usuarios particulares para permitirle enfocarse en aplicaciones o usuarios específicos.
¿Cómo puede FBScanner ayudar a identificar y resolver problemas de rendimiento de Firebird o InterBase? Revisemos rápidamente las características más interesantes de FBScanner y comencemos con el módulo LogAnalyzer.
PASO 1: LogAnalyzer “Carga del servidor”
Descargue la versión demo de FBScanner e instálela. Ejecute “FBScanner Service Settings” desde el menú Inicio, luego haga clic en “Advanced options”, pestaña “SQL Log”.
Cree la base de datos de registro (debe estar en otra instancia de Firebird en esta u otra computadora; consulte la “Guía de usuario de FBScanner”, páginas 14-16 para más detalles). Después de eso, todo el tráfico SQL que pase a través de FBScanner se almacenará en la base de datos de registro.
Ejecute “FBScanner Log Analyzer” y conéctese a la base de datos de registro. En la primera pestaña, “Server load”, puede ver una descripción general de las conexiones y declaraciones SQL. Es fácil ver los picos de carga y determinar los momentos en que el rendimiento fue deficiente.
Puede hacer zoom y desplazarse por este gráfico de rendimiento, activar y desactivar parámetros para mostrar, con el fin de captar el momento en que comienza el problema. Después, haga clic derecho en el punto donde desea ver los detalles y elija “Go to the SQL list on HH:mm”.
PASO 2: Registro SQL en LogAnalyzer
Si ha seleccionado la pestaña “All Statements”, se mostrará la lista posterior de todas las consultas SQL. Tenga en cuenta que hay consultas SQL de todas las conexiones que FBScanner registra (es posible configurar FBScanner para monitorear solo una conexión o grupo de computadoras, o solo una aplicación seleccionada; todo lo que necesita es usar una cadena de conexión y/o puertos apropiados; consulte la “Guía de usuario de FBScanner”).
Puede acotar su búsqueda: establezca los momentos de inicio y fin y luego filtre las consultas por EXECUTION_TIME para ver las consultas más largas.
Para cada consulta puede ver el texto de la consulta SQL, sus parámetros, hora de inicio/fin, cantidad de registros recuperados, y también saber quién y cuándo la ejecutó: dirección IP, nombre de usuario, etc.
También puede forzar a FBScanner a registrar planes SQL; para esto necesita marcar la casilla correspondiente en “FBScanner Service Settings”.
Cuando haya identificado la consulta que tiene problemas, puede ver su conexión y transacción: para esto, haga clic derecho y elija “View connection and transactions for statement ID=…”. Esto lo llevará a la pestaña “All connections and Logs”.
PASO 3: Conexiones y transacciones
La pestaña “All connections and Logs” contiene la lista de todas las conexiones y, relacionadas como maestro-detalle, las transacciones y declaraciones.
Cuando hace clic en la consulta SQL en la cuadrícula inferior, todas las declaraciones dentro del marco de la misma transacción se marcan en negrita. Esto le da una comprensión del flujo real de transacciones. También hay parámetros de la transacción (parámetros de transacción vacíos significan que esta transacción tiene los parámetros predeterminados “wait, write, snapshot”).
Además, FBScanner LogAnalyzer permite ejecutar la consulta seleccionada contra otra versión de base de datos y comparar su rendimiento. También puede realizar ejecución SQL masiva, lo que puede ser útil en caso de migración entre versiones de Firebird.
¡Importante! La versión demo de FBScanner almacena algunos textos de consultas como “Demo” y solo funciona durante 7 días. La versión completa no tiene estas restricciones.
PASO 4: FBScanner Viewer
FBScanner Viewer es una parte de FBScanner responsable del seguimiento en tiempo real de conexiones, consultas y transacciones. FBScanner Viewer se conecta directamente al Servicio FBScanner y recupera información del tráfico SQL.
FBScanner Viewer puede ejecutarse en cualquier máquina de la red local: se conecta a través del puerto 30100 por defecto y extrae datos en línea del Servicio FBScanner.
Por defecto, FBScanner Viewer actualiza su estado cada 0.5 segundos, y también es posible ver las 20 consultas más recientes de la conexión.
Para conexiones lentas (Internet), FBScanner Viewer puede configurarse para actualizar los datos cada 5 segundos, por ejemplo.
Además, FBScanner Viewer puede usarse para la gestión de conexiones: puede desconectar usuarios (seleccionados, todos, por máscara) con simulación del error de desconexión 10054, y admite funcionalidad de listas blanca y negra.
Consejos para una optimización exitosa
¡Importante! Se recomienda comenzar la investigación de problemas de rendimiento con MON$Logger: tome varias instantáneas de la base de datos durante el tiempo de carga pesada (cuando los usuarios experimentan la lentitud más difícil) e intente determinar qué procesos de negocio consumen más IO (preste atención a las consultas con valores altos de READ_SEQ_READS y RECORD_IDX_READS).
Luego instale el Servicio FBScanner en estas estaciones de trabajo (o use un servidor dedicado) y registre todas las consultas de las estaciones sospechosas: investigue sus tiempos de EXECUTE y PREPARE, verifique los planes SQL, etc. Encuentre y solucione el problema, ¡luego verifique que la nueva versión funcione más rápido que la anterior!
Use FBScanner Viewer para la visualización en tiempo real de consultas ejecutadas en el servidor (esta función también es muy útil para depurar SQL complejos).
Descripción de FBScanner
FBScanner es una herramienta poderosa para administradores y desarrolladores de Firebird e InterBase, diseñada para la interceptación y análisis del tráfico TCP/IP entre el servidor y las aplicaciones cliente.
FBScanner extrae en tiempo real muchos detalles sobre conexiones, consultas (declaraciones), transacciones, marca y rastrea todos estos objetos de tráfico con un mecanismo único de etiquetas. FBScanner también puede registrar toda la actividad en una base de datos Firebird externa y realizar una serie de tareas administrativas únicas.
FBScanner (Firebird Scanner) es una herramienta que puede monitorear y ver todo el tráfico entre los servidores Firebird e InterBase y sus aplicaciones cliente.
El Servicio FBScanner funciona como una puerta (proxy) en la computadora con Firebird/InterBase (solo Windows) o puede instalarse en una computadora remota y trabajar con Firebird en todos los sistemas operativos compatibles (Windows, Linux, Mac OS X, HP-UX, etc.).
FBScanner puede usarse para perfilar aplicaciones de bases de datos, monitorear la actividad de usuarios, gestionar conexiones de bases de datos (incluida la desconexión de clientes tanto en arquitectura Classic como SuperServer). También es ideal para solucionar errores INET (INET/inet_error: send errno = 10054), así como para auditar aplicaciones existentes y ajustar el rendimiento.
FBScanner admite 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 es transparente en lo que respecta a la aplicación de base de datos y no requiere ningún cambio en el código fuente, la lógica o la configuración de la aplicación o la base de datos.
FBScanner V3.x funciona solo en Windows y requiere el Framework .NET 2.0 (o superior) instalado.
Presentaciones sobre FBScanner
Cómo funciona FBScanner
Servicio FBScanner
¡Importante! En esta sección no describimos el trabajo de MON$Logger y el Plugin TraceAPI; está dedicada únicamente al Servicio FBScanner, FBScanner Viewer y LogAnalyzer.
El Servicio FBScanner normalmente debe instalarse en la misma computadora donde se ejecuta el servidor Firebird o InterBase (como opción, puede instalarlo en otra computadora y luego redirigir el tráfico al servidor Firebird o InterBase real). Durante la instalación, la utilidad de configuración de FBScanner le pedirá que elija: instalar FBScanner en el puerto predeterminado de InterBase o Firebird (3050) y cambiar la configuración del servicio Firebird a 3052 (esto se puede ajustar), o instalar FBScanner para que escuche en otro puerto TCP.
¡Importante! El Servicio FBScanner solo funciona con conexiones TCP, por lo que los clientes que usan cadenas de conexión locales (XNET) o NetBEUI (WNET) omitirán FBScanner. Para monitorear tales aplicaciones cliente, debe usar MON$Logger y el Plugin TraceAPI.
Si elige la primera opción de instalación, todas las solicitudes de las aplicaciones pasarán a través del Servicio FBScanner.
| ##### Instalación en el lado del servidor | ##### Instalación remota |
![]() |
![]() |
Impacto en el rendimiento
El escenario habitual del proceso de optimización del rendimiento incluye la instalación de FBScanner en 1-2 estaciones de trabajo típicas para capturar el tráfico SQL típico. No hay razón para interceptar y registrar todo el tráfico SQL de todas las estaciones de trabajo: hay demasiada información para analizar y demasiadas consultas repetidas.
Sin embargo, si desea instalar FBScanner como proxy para todo el servidor y registrar todas las operaciones allí, asegúrese de proporcionar el mismo ancho de banda de IO y CPU y RAM comparables a los del servidor de producción. Para bases de datos de alta carga, el registro de FBScanner puede crecer varios Gb por día. En tales casos, recomendamos la instalación dedicada (servidor remoto) de FBScanner.
FBScanner Service no cambia nada en el tráfico transferido y funciona simplemente como un proxy transparente, por lo que todas las aplicaciones continuarán con normalidad. FBScanner Service consume aproximadamente 125-150 Mb de memoria para monitorear 50-70 clientes activos, y disminuirá el rendimiento de la base de datos entre un 5 y un 15% cuando esté en uso. El consumo de memoria depende del diseño de la aplicación cliente. El ancho de banda de E/S requerido depende de la intensidad del tráfico SQL.
Durante las pruebas, hemos verificado FBScanner en funcionamiento en varios entornos y aplicaciones del mundo real donde la base de datos tiene 30-200 conexiones activas y notamos que la degradación del rendimiento fue mínima. En muchos casos, los usuarios no pudieron darse cuenta de que el monitoreo está activo.
Segmentación del Tráfico
El uso de FBScanner en un puerto no estándar permite segmentar diferentes tráficos de diferentes aplicaciones. Por ejemplo, hay aplicaciones A y B. B es una aplicación antigua y estable que no requiere ajustes ni monitoreo, y A es una aplicación nueva. Es fácil configurar la cadena de conexión para la nueva aplicación A para usar un puerto no estándar (por ejemplo, server/3070:Disk:\Path\database.gdb) y enrutar todas las solicitudes de la aplicación A a través de FBScanner para monitorear consultas SQL y el comportamiento de la aplicación.

Usando este enfoque, puede reconocer y resolver fácilmente problemas dentro de un entorno de producción, ya sea que el problema provenga de la nueva aplicación, o incluso si proviene del segmento particular de su red local.





