【发布时间】:2022-08-05 15:54:45
【问题描述】:
我托管了一个 azure appservice,有时它会随机超时查询通常需要 1 毫秒才能完成的查询。 SQL 服务器也托管在 azure 中,它们在专用网络中相互通信。可能出了什么问题。当没有负载并且我打一个电话时,它甚至会发生。 99% 的电话都有效,但只有 1% 的电话经常发生。它无缘无故地导致 40 秒超时。
打开的连接几乎为零。数据库为 1200 DTU。 appservice 是 p3v2 并且一直在运行。除非查询随机花费很长时间,否则数据库的性能似乎非常好。天蓝色骨干网中似乎存在连接问题。它似乎几乎每 40 个数据库请求发生一次。瞬态错误率比我在任何应用程序上看到的都要高。我们从未达到 20% 以上的 DTU,但错误仍然发生在 1% DTU 左右。两周前在微软进行维护后随机开始发生。在那段时间里,我们没有部署新代码。
我看到的例外是:
建立与 SQL Server 的连接时发生与网络相关或特定于实例的错误。服务器未找到或无法访问。验证实例名称是否正确以及 SQL Server 是否配置为允许远程连接。 (提供者:TCP Provider,错误:0 - 连接尝试失败,因为连接方在一段时间后没有正确响应,或者建立连接失败,因为连接的主机没有响应。)连接尝试失败,因为连接方没有一段时间后没有正确响应,或者由于连接的主机没有响应而建立的连接失败。
-
可能的瞬时错误。您是否实施了重试策略? docs.microsoft.com/en-us/azure/azure-sql/database/…
-
@CSharpRocks 这些瞬时错误似乎在 40 次调用中发生 1 次,并且需要 40 多秒。这真的应该发生吗?在其他应用程序中,我从未见过这样的事情。
-
你有数据库关闭计时器吗?您是否检查过糟糕的 DNS、糟糕的网络连接?您是否正确处理/关闭所有连接(并因此通过连接池重用它们),否则您可能会遇到套接字耗尽和/或服务器过载。
-
@Joey,在您的情况下,40 人中有 1 人似乎很高,拥有高级应用程序计划和那么多 DTU。我会提交一个支持案例,让某人查看您的特定环境。作为旁注,我还计划从 DTU 购买模式转变为 vCore 购买模式,这种模式更有意义,并且提供更多的透明度和理解。没有人真正了解 DTU 是什么:-)
-
我们正在与微软联系,但仍然没有修复。在这一点上,微软的骨干有些东西被打破了。所以我们遇到这种情况是很不幸的。
标签: sql-server azure tcp