Esta página foi traduzida por máquina. Leia o original em inglês. English

O FBScanner foi substituído pelo HQbird. Consulte Monitoramento no HQbird.

O FBScanner (Firebird Scanner) é uma ferramenta para resolver todos os tipos de problemas de desempenho com o Firebird.

Documentação do FBScanner

Módulos do FBScanner

O FBScanner é uma das ferramentas mais eficientes da IBSurgeon: ele rastreia o tráfego SQL entre o servidor e os clientes. Recursos do FBScanner:

  1. LogAnalyzer - ferramenta para análise detalhada de consultas SQL, planos, transações e conexões, suporta todas as versões do Firebird e InterBase.
  2. FBScanner Viewer - visualizador em tempo real, mostra conexões, consultas e transações que passam pelo FBScanner Service, suporta todas as versões do Firebird e InterBase.
  3. Suporte para todas as versões do Firebird (1.0 - 2.5) e InterBase (4.0-XE3). O FBScanner é a única ferramenta para analisar consultas SQL em bancos de dados Firebird e InterBase em produção em versões anteriores ao Firebird 2.1, especialmente se o aplicativo foi desenvolvido por terceiros e não há código-fonte disponível.

Lista dos recursos mais interessantes do FBScanner:

  • Registro de consultas SQL, conexões e transações com todos os parâmetros para análise detalhada (para um único ou vários locais de trabalho), a fim de encontrar gargalos de desempenho no Firebird (TODAS as versões) e InterBase (TODAS as versões).
  • Monitoramento em tempo real de conexões. O FBScanner Viewer mostra todas as conexões com o servidor de banco de dados selecionado: o nome IP/DNS do cliente conectado, banco de dados e tempo de conexão.
  • Monitoramento em tempo real de consultas SQL. Para cada conexão, o FBScanner mostra todas as consultas SQL em execução, juntamente com seus parâmetros de transação.
  • Detecção da conexão mais antiga e da transação ativa mais antiga para permitir que você analise possíveis comportamentos de transação não otimizados, ou design incorreto de transação, ou mostre usuários que possam estar usando o aplicativo de uma maneira que afete o desempenho.
  • Desconexões de clientes (erros 10054). Verifique se a desconexão está ocorrendo corretamente e você também pode usar este software para desconectar usuários a fim de realizar manutenção ou atualizações de banco de dados.
  • O FBScanner permite o roteamento de aplicativos específicos ou usuários particulares para permitir que você foque em aplicativos ou usuários específicos.

Como o FBScanner pode ajudar a identificar e resolver problemas de desempenho do Firebird ou InterBase? Vamos revisar rapidamente os recursos mais interessantes do FBScanner, começando pelo módulo LogAnalyzer.

PASSO 1: LogAnalyzer “Carga do Servidor”

FBScanner Log Analyzer

Baixe a versão demo do FBScanner e instale-a. Execute “FBScanner Service Settings” no menu Iniciar e clique em “Opções avançadas”, na aba “SQL Log”.

Crie o banco de dados de log (ele deve estar em outra instância do Firebird neste ou em outro computador - consulte o “Guia do Usuário FBScanner”, páginas 14-16 para detalhes). Depois disso, todo o tráfego SQL que passa pelo FBScanner será armazenado no banco de dados de log.

Execute o “FBScanner Log Analyzer” e conecte-se ao banco de dados de log. Na primeira aba, “Carga do servidor”, você pode ver uma visão geral das conexões e declarações SQL. É fácil ver picos de carga e determinar os momentos em que o desempenho estava ruim.

Você pode ampliar e rolar este gráfico de desempenho, ativar e desativar parâmetros para exibição - a fim de capturar o momento em que o problema começa. Depois disso, clique com o botão direito no ponto onde deseja ver os detalhes e escolha “Ir para a lista SQL em HH:mm”.

PASSO 2: Log SQL no LogAnalyzer

FBScanner Log Analyzer

Se você selecionou a aba “Todas as declarações”, a lista subsequente de todas as consultas SQL será exibida. Observe que há consultas SQL de todas as conexões registradas pelo FBScanner (é possível configurar o FBScanner para monitorar apenas uma conexão ou grupo de computadores, ou apenas um aplicativo selecionado - tudo o que você precisa é usar uma string de conexão e/ou portas apropriadas - leia sobre isso no “Guia do Usuário FBScanner”).

Você pode restringir sua pesquisa - defina os momentos de início e fim e depois filtre as consultas por EXECUTION_TIME para ver as consultas mais longas.

Para cada consulta, você pode ver o texto da consulta SQL, seus parâmetros, horário de início/fim, contagem de registros buscados, e também saber quem e quando a executou: endereço IP, nome de usuário, etc.

Você também pode forçar o FBScanner a registrar planos SQL; para isso, você precisa marcar a opção apropriada em “FBScanner Service Settings”.

Quando você identificar a consulta que tem problemas, pode ver sua conexão e transação: para isso, clique com o botão direito e escolha “Ver conexão e transações para o ID da declaração=…”. Isso o levará à aba “Todas as conexões e logs”.

PASSO 3: Conexões e Transações

FBScanner Log Analyzer

A aba “Todas as conexões e logs” contém a lista de todas as conexões e, relacionadas como mestre-detalhe, transações e declarações.

Quando você clica na consulta SQL na grade abaixo, todas as declarações no contexto da mesma transação serão marcadas em negrito. Isso dá a você a compreensão do fluxo real das transações. Além disso, há parâmetros da transação (parâmetros de transação vazios significam que esta transação tem os parâmetros padrão “wait, write, snapshot”).

Além disso, o FBScanner LogAnalyzer permite executar a consulta selecionada contra outra versão do banco de dados e comparar seu desempenho. Ele também pode executar execução SQL em lote, o que pode ser útil em caso de migração entre versões do Firebird.

Importante! A versão demo do FBScanner armazena alguns textos de consultas como “Demo” e funciona apenas por 7 dias. A versão completa não tem essas restrições.

PASSO 4: FBScanner Viewer

FBScanner Log Analyzer

FBScanner Viewer é uma parte do FBScanner responsável pelo rastreamento em tempo real de conexões, consultas e transações. O FBScanner Viewer conecta-se diretamente ao FBScanner Service e recupera informações de tráfego SQL.

O FBScanner Viewer pode ser executado em qualquer máquina na rede local: ele se conecta através da porta 30100 por padrão e puxa dados online do FBScanner Service.

Por padrão, o FBScanner Viewer atualiza seu status a cada 0,5 segundos, e também é possível ver as 20 consultas mais recentes da conexão.

Para conexões lentas (Internet), o FBScanner Viewer pode ser configurado para atualizar os dados a cada 5 segundos, por exemplo.

Além disso, o FBScanner Viewer pode ser usado para gerenciamento de conexões: ele pode desconectar usuários (selecionados, todos, por máscara) com simulação do erro de desconexão 10054, e suporta funcionalidade de lista branca e lista negra.

Dicas para otimização bem-sucedida

Importante! Recomenda-se iniciar a investigação de problemas de desempenho com o MON$Logger: tire vários snapshots do banco de dados durante o período de carga pesada (quando os usuários experimentam a lentidão mais difícil) e tente descobrir quais processos de negócios consomem mais IO (atenção às consultas com altos valores de READ_SEQ_READS e RECORD_IDX_READS).

Em seguida, instale o FBScanner Service nessas estações de trabalho (ou use um servidor dedicado) e registre todas as consultas das estações suspeitas: investigue seus tempos de EXECUTE e PREPARE, verifique os planos SQL, etc. Encontre e corrija o problema e verifique se a nova versão roda mais rápido que a anterior!

Use o FBScanner Viewer para visualização em tempo real das consultas executadas no servidor (este recurso também é muito útil para depurar SQLs complexos).

Descrição do FBScanner

O FBScanner é uma ferramenta poderosa para administradores e desenvolvedores de Firebird e InterBase, projetada para interceptação e análise de tráfego TCP/IP entre o servidor e os aplicativos clientes.

O FBScanner extrai em tempo real muitos detalhes sobre conexões, consultas (declarações), transações, marca e rastreia todos esses objetos de tráfego com um mecanismo único de tags. O FBScanner também pode registrar toda a atividade em um banco de dados Firebird externo e executar uma série de tarefas administrativas exclusivas.

O FBScanner (Firebird Scanner) é uma ferramenta que pode monitorar e visualizar todo o tráfego entre os servidores Firebird e InterBase e seus aplicativos clientes.

O FBScanner Service funciona como um gateway (proxy) no computador com Firebird/InterBase (somente Windows) ou pode ser instalado em um computador remoto e funcionar com Firebird em todos os sistemas operacionais suportados (Windows, Linux, Mac OS X, HP-UX, etc).

O FBScanner pode ser usado para criar perfis de aplicativos de banco de dados, monitorar a atividade do usuário, gerenciar conexões de banco de dados (incluindo desconexão de clientes em arquiteturas Classic e SuperServer). Também é ideal para solucionar erros INET (INET/inet_error: send errno = 10054), bem como para auditar aplicativos existentes e ajuste de desempenho.

O FBScanner suporta 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).

O FBScanner é transparente no que diz respeito ao aplicativo de banco de dados e não requer nenhuma alteração no código-fonte, lógica ou configuração do aplicativo ou banco de dados.

O FBScanner V3.x funciona apenas no Windows e requer o .NET Framework 2.0 (ou superior) instalado.

Apresentações sobre o FBScanner

FBScanner: ferramenta da IBSurgeon para resolver todos os tipos de problemas de desempenho com o Firebird. Migração Firebird: do Firebird 1.5 para o Firebird 2.5
Veja mais apresentações de Nataly Polyanskaya

Como o FBScanner funciona

FBScanner Service

Importante! Nesta seção, não descrevemos o trabalho do MON$Logger e do TraceAPI Plugin; é dedicada apenas ao FBScanner Service, FBScanner Viewer e LogAnalyzer.

O FBScanner Service normalmente deve ser instalado no mesmo computador onde o servidor Firebird ou InterBase está em execução (como opção, você pode instalá-lo em outro computador e redirecionar o tráfego para o servidor Firebird ou InterBase real). Durante a instalação, o utilitário de configuração do FBScanner perguntará se você deseja: instalar o FBScanner na porta padrão do InterBase ou Firebird (3050) e alterar a configuração do serviço Firebird para 3052 (isso pode ser ajustado), ou instalar o FBScanner para escutar em outra porta TCP.

Importante! O FBScanner Service funciona apenas com conexões TCP, portanto, clientes que usam strings de conexão locais (XNET) e NetBEUI (WNET) ignorarão o FBScanner. Para monitorar tais aplicativos clientes, você deve usar o MON$Logger e o TraceAPI Plugin.

Se você escolher a primeira opção de instalação, todas as solicitações dos aplicativos passarão pelo FBScanner Service.

##### Instalação no lado do servidor ##### Instalação remota

Impacto no desempenho

O cenário usual do processo de otimização de desempenho inclui a instalação do FBScanner em 1-2 estações de trabalho típicas para capturar o tráfego SQL típico. Não há razão para interceptar e registrar todo o tráfego SQL de todas as estações de trabalho - há informação demais para analisar e muitas consultas repetidas.

No entanto, se você quiser instalar o FBScanner como um proxy para todo o servidor e registrar todas as operações lá, certifique-se de fornecer a mesma largura de banda de IO e CPU e RAM comparáveis às do servidor de produção. Para bancos de dados de alta carga, o log do FBScanner pode crescer vários Gb por dia. Nesses casos, recomendamos a instalação dedicada (servidor remoto) do FBScanner.

O serviço FBScanner não altera nada no tráfego transferido e funciona simplesmente como um proxy transparente, portanto todos os aplicativos continuarão funcionando normalmente. O serviço FBScanner consome aproximadamente 125-150 Mb de memória para monitorar 50-70 clientes ativos, e diminuirá o desempenho do banco de dados em 5 a 15% quando em uso. O consumo de memória depende do design do aplicativo cliente. A largura de banda de E/S necessária depende da intensidade do tráfego SQL.

Durante os testes, verificamos o FBScanner em funcionamento em vários ambientes e aplicativos do mundo real, onde o banco de dados possui 30-200 conexões ativas, e notamos que a degradação do desempenho foi mínima. Em muitos casos, os usuários não conseguiram perceber que o monitoramento está ativo.

Segmentação de Tráfego

O uso do FBScanner em uma porta não padrão permite segmentar diferentes tráfegos de diferentes aplicativos. Por exemplo, existem os aplicativos A e B. B é um aplicativo antigo e estável que não requer ajustes ou monitoramento, e A é um aplicativo novo. É fácil configurar a string de conexão para o novo aplicativo A usar uma porta não padrão (por exemplo, server/3070:Disk:\Path\database.gdb) e rotear todas as solicitações do aplicativo A através do FBScanner para monitorar consultas SQL e o comportamento do aplicativo.

Usando essa abordagem, você pode facilmente reconhecer e resolver problemas em um ambiente de produção, seja o problema proveniente do novo aplicativo, ou até mesmo se vier de um segmento específico da sua rede local.