gpt4 book ai didi

sql-server - Azure SQL Server - 偶尔丢失连接

转载 作者:行者123 更新时间:2023-12-02 17:29:52 24 4
gpt4 key购买 nike

我有自己的 Azure WebApp,它有自己的 Azure SQL Server 实例。我注意到,当我在本地计算机上进行 WebApp 开发时,有时与 SQL Server 实例的连接会失败。我收到此错误“指定的网络名称不再可用”。如果我继续处理异常(或重新运行 WebApp),然后刷新网页,下次就会正常连接。再次尝试之间也没有几分钟的时间。只需几秒钟就可以再次工作。

我不知道为什么会发生这种情况。有时它会工作一个小时,然后就停止工作。我在网上进行了研究,我发现的唯一的东西就是制定某种“重试政策”。我不确定我是否需要这个,因为我还没有在生产环境中看到这种情况发生(敲木头)。

这可能是某种 DNS 问题吗?有人对如何克服这个问题有建议吗?我可以解决它,但这很烦人。

最佳答案

这个问题的答案相当广泛,但欢迎来到云计算的世界, transient 故障必然会发生。你需要做的事情是对的,但你不应该这样做的原因是错误的。仅仅因为您在生产中没有看到它们并不意味着它们不会发生和/或将要发生。基本上,如果这个应用程序需要有任何类型的稳定性要求或超过少数人或多人使用它,那么你真的应该“防御性编码”并预先烘焙它。

什么是瞬时故障?

基本上,它们是由于数据包丢失、超时(由于之前运行的查询或限制)等原因时不时发生的故障。下面链接的文章中的引用:

These are mainly network issues. If you perform an operation in Azure and sometimes it does not work however if you try after some time, it works well. This odd and non-predictable behavior is nothing but transient faults. When we talk about SQL Azure, transient faults are common. The article Azure SQL Database Resource Management - http://msdn.microsoft.com/library/azure/dn338083.aspx mentions the scenarios in which you may face transient fault of SQL Azure. I highly recommend you to go through the all this documents and related links. Very informative!! Now, very common transient error of SQL Azure is throttling.

为什么我现在必须担心它们在云端?

因为大多数开发人员习惯于在同一台机器上或至少在同一网络上使用 SQL Server 进行开发。由于距离的原因,响应时间和丢包的机会都很小。 Azure 数据中心与您不在同一栋大楼内,因此出现暂时错误的可能性会增加。

如何修复它?

方法有很多,但我强烈建议您阅读一些有关 transient 故障处理 block 的实现以及如何使用 SQL Azure 实现的文章。 Here is one讨论如何启用 Entity Framework 。该框架允许您指定重试次数、重试频率以及使用什么方法来确定重试频率(线性为 10 毫秒,指数退避为 10 毫秒,然后是 100 毫秒,然后是 1000 毫秒)。

我希望能给您一个代码示例,但您的问题不仅仅是简单的一行代码修复。此外,每当您使用任何基于云的提供商(Sql Azure、Blob 存储、服务总线)时,您都应该了解并实现 transient 故障处理 block 。

关于sql-server - Azure SQL Server - 偶尔丢失连接,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35024637/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com