我们有时会看到 HADR_SYNC_COMMIT 的等待时间非常长,并且在使用 iperf3 等进行一些诊断工作后,我们认为可能存在网络带宽问题。
然而,我们不是中央 sql 人员,我们主要做数据库调整工作,所以我只是想尝试澄清一些我似乎无法在谷歌上得到明确答案的事情。
我们有两台服务器(AL 和 BE),每台服务器上都有多个实例。对某些人来说是主要的,对另一些人来说则是次要的。
我们知道 sql 使用单个连接进行同步,这就是我们进行 iperf3 测试的方式。有时带宽似乎下降到零或接近零。
我们不完全确定的是它的应用级别。它是实例级别的,以便每个实例都有自己的同步连接吗?或者,如果有多个可用性组,每个可用性组是否都会获得自己的连接?
我希望这是清楚的。我们仍在学习这些东西。
谢谢
是的,每个实例有一个连接。每个实例只允许一个“镜像”端点,所有流量都通过它。如果您使用类似 的内容查看实例的 tcp 连接,您也可以看到这一点
netstat -p tcp -ano
。请注意,此连接与同一实例上的所有项目共享,并且没有用于共享的特定 QoS(服务质量)。有一个端点和一个 TCP/IP 流。然而,在不同的层面上,彼此之间存在着虚拟的联系。例如,如果您有两个可用性组 AG1 和 AG2,托管在同一实例上,其中 AG1 为主实例,AG2 为辅助实例,则 AG1 的每个辅助副本(或转发器)将有 1 个不同的传入 (TCP) 连接,并且是 AG2 主节点的镜像端点的 1 个出站 (TCP) 连接。同样的设置在副本和数据库级别具有各种“虚拟”连接,这些连接不是物理连接,而是通过物理连接进行的通信。
不用担心。如果您有兴趣,我还写了以下内容,可能会有所帮助。
了解 HADR_SYNC_COMMIT
网络吞吐量歇斯底里
AG 常见问题解答