GAU*_*HOD 2 sql-server availability-groups distributed-availability-groups
我在分布式 AG 设置中观察到 log_send_rate 较低。我知道 AG 使用日志流,所以我认为它不应该与数据有任何关系,但我想知道这是否与它正在传输的数据有关,而不仅仅是操作系统资源(网络、I/O)?
供考虑的基本指标:
在源 AG 上,我没有看到“发送到传输的字节数/秒”计数器的任何内容,因此我无法确定这是否是瓶颈。
如果我遗漏了任何我应该包含的内容,请提出建议。
Sean Gallardy 的帖子是深入研究这一问题的一个很好的资源:网络吞吐量歇斯底里
首先要确保您正在比较相同的事物。来自帖子:
我几乎从未见过有人以 SQL Server 将其用于 AG 流量的方式来测试其网络,正如我之前所说,每个数据库副本一个线程。
Sean 建议使用ntttcp来测量单线程、单核网络吞吐量。这样做将为您提供更好的基线来与 20 MB/s 进行比较。
如果仍然存在很大的差距需要解释,您可能需要更深入地研究延迟发生在流程中的确切位置。这是 Microsoft 支持人员撰写的一篇关于如何做到这一点的优秀文章:
对同步提交 AlwaysOn 可用性组之间的数据移动延迟进行故障排除
从图中可以看出,将日志块传输和强化到辅助设备的过程中有很多步骤。经济放缓可能发生在任何地方。该博客文章末尾有一个免费工具的链接,该工具将为您分析扩展事件跟踪(仅供参考)。
就您提供的数据而言:
从故障转移的角度来看,目标上的内存差异并不理想(您的工作负载可以使用 1/12 的 RAM 有效运行吗?),但由于您没有看到高 REDO 队列,如果它有助于您看到的发送队列堆积起来。
副本位于同一个 DC 中是件好事 - 这使得整体网络延迟不太可能受到指责(您不会尝试复制到云或跨越半个地球)。
再说一次,ROBOCOPY 测试可能不是一个很好的比较。