数据库镜像连接重试算法
连接重试算法,数据库整体连接重试算法
不论是初次与会议建立连接,还是中断已建立连接后重新连接,数据访问接口都遵循连接重试算法。打开连接之后,还需要一些时间完成登录的步骤。
默认的登录超时期限为15秒,建议登录超时期限至少为5秒。如果指定较短的超时期限,则可能导致连接尝试失败。
当初始伙伴名称和故障转移伙伴名称均可用时,客户端会交替使用这两个名称,反复尝试重新连接到服务器。
在第一轮连接尝试中,数据访问接口将首先尝试使用初始伙伴名称,如果连接尝试失败(或者重试时间过期)且未超过登录期限,则数据访问接口还会尝试使故障转移伙伴名称。如果连接尝试仍然失败,则进行第二轮连接尝试,还是首先尝试使用初始伙伴名称,如果尝试失败(且未超过登录期限)则使用故障转移伙伴名称。如此反复,直到登录期限超时。
第一轮每次重试时间为总登录时间的 8%;后续每轮依次递增 8%。以15秒的登录超时期限为例,前 4 轮中分配的重试时间如下:
轮次 | 比例 | 每次尝试重试的时间 |
1 | 8 % | 1.2 秒 |
2 | 16 % | 2.4 秒 |
3 | 24 % | 3.6 秒 |
4 | 32 % | 4.8 秒 |
下图说明了15秒时的重试时间。
在上例中,前三轮连接尝试耗时 14.4 秒,在登录期限超时之前仅剩下 0.6 秒的时间。在这种情况下,第4轮仅允许使用初始伙伴名称进行最后的快速连接尝试。
3.7.3 故障转移期间的重试延迟时间
如果客户端尝试连接到正在进行故障转移的伙伴,则此伙伴会立即做出响应,表明它处于不活动的状态。在这种情况下,每轮连接尝试都会比分配的重试时间更短暂,从而导致在登录期限超时之前会发生多轮连接尝试,这会增加伙伴在故障转移期间的负载。因此,这种情况下,数据访问接口将在每轮尝试之后增加短暂的重试延迟时间。
在第一轮之后,延迟时间为 100 毫秒。在接下来的3轮之后,重试延迟时间加倍,分别达到 200、400和800毫秒。由于最大的重试延时时间为1秒,因此第5轮及所有的后续轮次,重试延迟时间为1秒,直到连接尝试成功或超时。
下图说明了在手动故障转移期间重试延迟时间对连接尝试的影响。登录超时期限为15秒。
参考资料:https://docs.microsoft.com/zh-cn/previous-versions/sql/sql-server-2008-r2/ms365783%28v%3dsql.105%29
转自:http://www.mssqlmct.cn/dba/?post=71
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· SQL Server 2025 AI相关能力初探
· AI编程工具终极对决:字节Trae VS Cursor,谁才是开发者新宠?
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南