Azure SQL连接延迟



我有一个.NET Core Azure Functions应用程序,托管在应用程序服务计划中。该计划专用于独立的定价层。函数应用程序已打开Always On设置。由于某些原因,该应用程序在连接到Azure SQL数据库时出现问题。该数据库与Functions应用程序在同一地区运行,并具有业务关键型定价层。

我在Application Insights中看到API调用需要几秒钟才能完成,因为代码路径正忙于等待获得SQL连接。实际的数据库操作在毫秒内完成。

我已经在本地运行了该应用程序,并将数据库连接字符串设置为Azure SQL数据库,没有看到任何延迟。每个请求都在毫秒内完成。然后,我在现有的应用服务环境之外创建了一个新的Azure功能应用程序,并制定了一个专门的应用服务计划。结果是一样的,没有任何延迟。

问题

有人以前遇到过这种问题吗?或者知道问题可能是什么?Azure应用程序服务环境使用的任何网络网关是否可能导致此问题?

附言:应用程序服务环境中还有其他应用程序也面临这个问题,但请求量较小。

根据以下情况重试SQL数据库和SQL托管实例连接或再次建立连接:

·连接尝试过程中出现瞬态错误

延迟几秒钟后,重试连接。

·在执行SQL数据库和SQL托管实例查询命令时发生暂时错误

不要立即重试该命令。相反,在延迟之后,会重新建立连接。然后重试该命令。

重试间隔增加

您需要等待5秒钟才能进行第一次重试。延迟小于5秒后重试可能会使云服务不堪重负。对于随后的每次重试,延迟应该呈指数级增长,最长可达60秒。

使用ADO.NET的客户端的阻塞期,请参阅连接池(ADO.NET(.

设置程序自行终止之前的最大重试次数。

请参阅此处以解决常见的SQL连接问题

当您在SQL server中使用MARS时,序列执行不会影响连接行为。

MARS中的连接池

启用MARS的连接与任何其他连接一样是池连接。如果一个应用程序打开了两个连接,一个启用了MARS,另一个禁用了MARS,则这两个连接位于不同的池中。

对于MARS连接,默认执行环境与连接相关联。给定连接下的每个执行都会接收默认环境的副本。执行完成后,执行设置将复制到默认环境中。

请参阅此处以启用/禁用多个活动结果集(MARS(

最新更新