MessageBox 延迟问题疑难解答

在完美的世界中,所有邮件在发布到 MessageBox 数据库后立即进行处理和传递,MessageBox 数据库永远不会增长到过多的大小。 不再引用的 MessageBox 中的任何消息都将立即被定期清理 MessageBox 数据库表的 SQL 代理作业删除。

但是,在实际方案中,通常不会以可预测的线性方式接收消息,SQL 代理作业需要时间来清理 MessageBox 数据库表。

因此,在某些情况下:MessageBox 可以非常快地增长。

以下项目可能导致 MessageBox 增长过大并妨碍整体性能:

  • “允许主机跟踪”选项集的 Biztalk 主机实例已停止。 这是负责将跟踪数据从 MessageBox 数据库移动到 Biztalk 跟踪数据库(BizTalkDTADb)的主机。

  • SQL Server 代理未运行 如果负责将数据从 MessageBox 数据库移动到 BizTalkDTADb 数据库的 SQL 作业(随后清除 MessageBox 中的数据)未运行,则可能会发生这种情况。 SQL 代理服务必须一直运行,以避免此问题。

  • SQL Server 作业已禁用 即使 SQL Server 代理正在运行,至关重要的是不能禁用任何默认 SQL Server 作业。

  • BizTalkDTADb 数据库增长过多 如果 BizTalkDTADb 数据库增长非常大,导致 BizTalkDTADb 数据库中的插入时间更长,则可能会发生这种情况。 当发生这种情况时,通过跟踪数据传递服务(TDDS)移动数据会变慢,从而导致 MessageBox 数据库中积压。 为了避免此问题,请务必定期在 BizTalkDTADb 数据库上运行 SQL Server 存档和清除作业。

  • 磁盘 I/O 延迟过多 如果传入 MessageBox 数据库中的数据速率快于系统可以处理数据并将其移动到 BizTalkDTADb 数据库的速度,积压工作可以在 MessageBox 数据库中生成。 如果积压工作继续增加,这是一个非常严重的问题,系统性能会随着时间推移而下降。 缓解此问题的一种方法是安装更快的磁盘和/或升级硬件,以帮助确保系统能够从长时间积压的消息中恢复。

规划未来

尽管遵循上述所有最佳做法,但随着时间推移,迁移到 BizTalkDTADb 数据库的跟踪数据量将非常大。 请务必实施数据库维护计划来定期存档跟踪数据,以便系统可以继续以最佳方式执行。

可以在 BizTalkDTADb 数据库中保留的历史数据量取决于通过系统推送的消息量。 对于不受高压力和吞吐量约束的系统,此数据库的速度将增长速度较慢,并且有可能在 BizTalkDTADb 数据库中保留更多历史数据。

建议在 BizTalkDTADb 数据库中保留最少的数据,以便不会牺牲运行时性能。