【问题标题】:Timeouts in Azure SQL DatabaseAzure SQL 数据库中的超时
【发布时间】:2020-07-08 04:32:12
【问题描述】:

我最近使用 Azure SQL Analytics 为我的 Azure SQL DB 设置了一些分析。 (https://docs.microsoft.com/en-us/azure/azure-monitor/insights/azure-sql)

衡量的指标之一是超时。我登录了我的应用程序,没有看到任何阻塞或死锁,也没有看到任何查询实际失败的地方。

我的问题是——什么是超时?

作为一个额外的问题,大多数时候我会同时看到四个超时。这是一个 node.js 应用程序,我使用繁琐的驱动程序与数据库交互。是否有一些繁琐的事情是重试查询四次等?

【问题讨论】:

    标签: node.js sql-server timeout azure-sql-database tedious


    【解决方案1】:

    连接超时是因为应用程序无法连接到服务器。一个可能的原因可能是登录后阶段经过的最大毫秒数。连接可能在等待服务器完成登录过程并响应时超时;或者它可能在尝试创建多个活动连接时超时。

    Azure SQL 数据库将关闭超过 30 分钟的空闲连接。摘录:“例如,如果您通过 SQL Server Management Studio 连接到数据库超过 30 分钟而没有任何活动请求,您的会话将超时,并且因为没有活动请求,SQL Azure 无法返回错误”。来源是here

    在尝试连接到 Azure SQL 数据库时,您需要一个重试逻辑。我的建议是使用乏味的connection pool,因为池重试连接。

    设置重试延迟参数。此参数是连接失败后,在重试之前等待的毫秒数。默认值 = 5000。

    idleTimeout 参数是关闭未使用连接之前的毫秒数。默认值 = 300000,这对于 Azure SQL 连接来说已经足够了。

    【讨论】:

    • 谢谢你,阿尔贝托。我们确实为我们的连接池使用了乏味的。我的问题是——什么是超时?
    • 我不认为这是连接超时。我可以看到已执行的查询。如果它从未连接,我怎么能做到这一点?
    • Azure SQL DB 会在一段时间后关闭空闲连接。请阅读azure.microsoft.com/en-us/blog/connections-and-sql-azure 这将导致超时。我再次更新了我的答案。
    猜你喜欢
    • 2016-05-08
    • 1970-01-01
    • 1970-01-01
    • 2020-11-14
    • 1970-01-01
    • 2012-01-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多