FBScanner
FBScanner 已被 HQbird 取代。请参阅 HQbird 中的监控。
FBScanner(Firebird Scanner)是一款用于解决 Firebird 各类性能问题的工具。
FBScanner 文档
FBScanner 模块
FBScanner 是 IBSurgeon 最高效的工具之一:它跟踪服务器与客户端之间的 SQL 流量。FBScanner 的功能包括:
- LogAnalyzer - 用于详细分析 SQL 查询、执行计划、事务和连接的工具,支持所有版本的 Firebird 和 InterBase。
- FBScanner Viewer - 实时查看器,显示通过 FBScanner Service 的连接、查询和事务,支持所有版本的 Firebird 和 InterBase。
- 支持所有版本的 Firebird(1.0 - 2.5)和 InterBase(4.0-XE3)。FBScanner 是唯一能够在 Firebird 2.1 之前版本的生产环境 Firebird 和 InterBase 数据库中分析 SQL 查询的工具,尤其是当应用程序由第三方开发且没有源代码可用时。
FBScanner 最令人兴奋的功能列表:
- 记录 SQL 查询、连接和事务及其所有参数,用于详细分析(适用于单个或多个工作站点),以查找 Firebird(所有版本)和 InterBase(所有版本)中的性能瓶颈。
- 实时监控连接。FBScanner Viewer 显示到所选数据库服务器的所有连接:已连接客户端的 IP/DNS 名称、数据库和连接时间。
- 实时监控 SQL 查询。对于每个连接,FBScanner 显示所有当前正在运行的 SQL 查询及其事务参数。
- 检测最旧的连接和最旧的活动事务,以便您分析可能存在的非最优事务行为、错误的事务设计,或显示可能以影响性能的方式使用应用程序的用户。
- 客户端断开连接(10054 错误)。检查断开连接是否正确进行,您也可以使用此软件断开用户连接以执行维护或数据库升级。
- FBScanner 允许路由特定应用程序或特定用户,以便您聚焦于特定应用程序或用户。
FBScanner 如何帮助识别和解决 Firebird 或 InterBase 性能问题?让我们快速回顾 FBScanner 最有趣的功能,从 LogAnalyzer 模块开始。
步骤 1:LogAnalyzer “服务器负载”
下载 FBScanner 演示版并安装。从开始菜单运行"FBScanner Service Settings",然后点击"高级选项",选择"SQL Log"选项卡。
创建日志数据库(它应位于本机或另一台计算机上的另一个 Firebird 实例上 - 详细信息请参阅"FBScanner 用户指南"第 14-16 页)。之后,所有通过 FBScanner 的 SQL 流量都将存储在日志数据库中。
运行"FBScanner Log Analyzer"并连接到日志数据库。在第一个选项卡"服务器负载"中,您可以查看 SQL 连接和语句的概览。很容易看到负载峰值并确定性能不佳的时刻。
您可以缩放和滚动此性能图表,打开和关闭参数以显示 - 以便捕捉问题开始的时刻。之后,右键单击您想要深入了解的点,选择"转到 HH:mm 的 SQL 列表"。
步骤 2:LogAnalyzer 中的 SQL 日志
如果您选择了"所有语句"选项卡,将显示所有 SQL 查询的列表。请注意,这些 SQL 查询来自 FBScanner 记录的所有连接(可以设置 FBScanner 仅监控一个连接或一组计算机,或仅监控选定的应用程序 - 您只需使用适当的连接字符串和/或端口 - 请参阅"FBScanner 用户指南"了解详情)。
您可以缩小搜索范围 - 设置开始和结束时间,然后按 EXECUTION_TIME 排序查询,以查看最长的查询。
对于每个查询,您可以查看 SQL 查询文本、其参数、开始/结束时间、获取的记录数,还可以知道谁在何时执行了它:IP 地址、用户名等。
您还可以强制 FBScanner 记录 SQL 执行计划,为此您需要在"FBScanner Service Settings"中设置相应的勾选标记。
当您识别出有问题的查询后,您可以查看其连接和事务:右键单击并选择"查看语句 ID=… 的连接和事务"。这将带您进入"所有连接和日志"选项卡。
步骤 3:连接和事务
“所有连接和日志"选项卡包含所有连接的列表,以及作为主从关系关联的事务和语句。
当您点击下方网格中的 SQL 查询时,同一事务框架内的所有语句将显示为粗体。这使您了解真实的事务流程。此外,还有事务的参数(空的事务参数意味着该事务具有默认的"等待、写入、快照"参数)。
此外,FBScanner LogAnalyzer 允许针对另一个数据库版本运行选定的查询并比较其性能。它还可以执行批量 SQL 执行,这在 Firebird 版本之间迁移时非常有用。
重要! FBScanner 演示版将某些查询文本存储为"Demo”,并且仅工作 7 天。完整版没有这些限制。
步骤 4:FBScanner Viewer
FBScanner Viewer 是 FBScanner 的一部分,负责实时跟踪连接、查询和事务。 FBScanner Viewer 直接连接到 FBScanner Service 并检索 SQL 流量信息。
FBScanner Viewer 可以在本地网络中的任何机器上运行:它默认通过端口 30100 连接并从 FBScanner Service 拉取在线数据。
默认情况下,FBScanner Viewer 每 0.5 秒刷新一次状态,并且还可以查看连接的最近 20 条查询。
对于较慢(互联网)连接,可以将 FBScanner Viewer 设置为每 5 秒刷新一次数据,例如。
此外,FBScanner Viewer 还可用于连接管理:它可以断开用户(选定的、全部的、按掩码),模拟 10054 断开错误,并支持白名单和黑名单功能。
成功优化的提示
重要! 建议从 MON$Logger 开始性能问题调查:在负载高峰期(当用户遇到最严重的缓慢时)从数据库获取多个快照,并尝试找出哪些业务流程消耗最多的 IO(注意 READ_SEQ_READS 和 RECORD_IDX_READS 值较高的查询)。
然后在这些工作站上安装 FBScanner Service(或使用专用服务器),并记录可疑工作站的所有查询:调查它们的 EXECUTE 和 PREPARE 时间,检查 SQL 执行计划等。找到并修复问题,然后检查新版本是否比旧版本运行更快!
使用 FBScanner Viewer 实时查看服务器上执行的查询(此功能对于调试复杂的 SQL 也非常有用)。
FBScanner 描述
FBScanner 是面向 Firebird 和 InterBase 管理员和开发人员的强大工具,专为拦截和分析服务器与客户端应用程序之间的 TCP/IP 流量而设计。
FBScanner 实时提取大量关于连接、查询(语句)、事务的详细信息,并通过独特的标签机制标记和跟踪所有这些流量对象。FBScanner 还可以将所有活动记录到外部 Firebird 数据库,并执行许多独特的管理任务。
FBScanner(Firebird Scanner)是一款能够监控并查看Firebird和InterBase服务器与其客户端应用程序之间所有流量的工具。
FBScanner Service在装有Firebird/InterBase的计算机上充当网关(代理)(仅限Windows),或者可以安装在远程计算机上,并与所有受支持操作系统(Windows、Linux、Mac OS X、HP-UX等)上的Firebird配合工作。
FBScanner可用于分析数据库应用程序的性能、监控用户活动、管理数据库连接(包括在Classic和SuperServer架构下断开客户端连接)。它也是排查INET错误(INET/inet_error: send errno = 10054)的理想工具,同时适用于审计现有应用程序和性能调优。
FBScanner支持Firebird(1.0、2.0、2.1、2.5)和InterBase(4.0、5.x、6.x、7.0、7.1、7.5、2007、2009、XE、XE3)。
FBScanner对数据库应用程序而言是透明的,不需要对应用程序或数据库源代码、逻辑或配置进行任何更改。
FBScanner V3.x仅适用于Windows,并且需要安装.NET 2.0(或更高版本)框架。
关于FBScanner的演示文稿
| FBScanner:IBSurgeon用于解决Firebird各类性能问题的工具。 | Firebird迁移:从Firebird 1.5到Firebird 2.5 查看更多来自Nataly Polyanskaya的演示文稿 |
FBScanner的工作原理
FBScanner Service
重要! 在本节中,我们不描述MON$Logger和TraceAPI Plugin的工作,仅介绍FBScanner Service、FBScanner Viewer和LogAnalyzer。
FBScanner Service通常必须安装在运行Firebird或InterBase服务器的同一台计算机上(作为选项,您可以将其安装在其他计算机上,然后将流量重定向到实际的Firebird或InterBase服务器)。在安装过程中,FBScanner配置实用程序会要求您选择:将FBScanner安装到InterBase或Firebird的默认端口(3050),并将Firebird服务的配置更改为3052(可以调整),或者将FBScanner安装为监听另一个TCP端口。
重要! FBScanner Service仅适用于TCP连接,因此使用本地(XNET)和NetBEUI(WNET)连接字符串的客户端将绕过FBScanner。要监控此类客户端应用程序,您应使用MON$Logger和TraceAPI Plugin。
如果您选择第一种安装选项,所有应用程序请求都将通过FBScanner Service。
| ##### 服务器端安装 | ##### 远程安装 |
![]() |
![]() |
性能影响
性能优化过程的通常方案包括在1-2台典型工作站上安装FBScanner,以捕获典型的SQL流量。没有理由拦截并记录所有工作站的SQL流量–信息量太大,难以分析,而且重复查询过多。
但是,如果您希望将FBScanner作为整个服务器的代理并记录所有操作,请确保提供与生产服务器相当的IO带宽以及可比的CPU和RAM。对于高负载数据库,FBScanner的日志每天可能增长数GB。在这种情况下,我们建议将FBScanner安装在专用(远程服务器)上。
FBScanner Service不会更改传输流量中的任何内容,仅像透明代理一样工作,因此所有应用程序将继续正常运行。FBScanner Service在监控50-70个活动客户端时大约消耗125-150 MB内存,并且使用时会降低数据库性能5%至15%。内存消耗取决于客户端应用程序的设计。所需的IO带宽取决于SQL流量的强度。
在测试过程中,我们在多个真实环境和应用程序中检查了FBScanner的工作情况,这些环境中数据库有30-200个活动连接,并注意到性能下降非常小。在许多情况下,用户无法察觉监控正在运行。
流量分段
在非标准端口上使用FBScanner可以分段来自不同应用程序的不同流量。例如,有应用程序A和B。B是一个旧且稳定的应用程序,不需要任何调优或监控,而A是一个新应用程序。很容易为新应用程序A设置连接字符串以使用非标准端口(例如 server/3070:Disk:\Path\database.gdb),并通过FBScanner路由来自A应用程序的所有请求,以监控SQL查询和应用程序行为。

使用这种方法,您可以轻松识别并解决生产环境中的问题,无论问题来自新应用程序,还是来自本地网络的特定分段。





