【问题标题】:Azure sql database related exceptionsAzure sql 数据库相关异常
【发布时间】:2016-08-22 13:41:57
【问题描述】:

我有一个带有标准 s2 版本的 azure 数据库。在我的应用程序日志中,我总是看到许多例外情况:

1.

System.Data.SqlClient.SqlException:登录前连接初始化过程出错,客户端无法建立连接。可能的原因包括:客户端尝试连接到不受支持的 SQL Server 版本;服务器太忙而无法接受新连接;或者服务器上存在资源限制(内存不足或允许的最大连接数)。 (提供者:TCP Provider,错误:0 - 远程主机强制关闭现有连接。)---> System.ComponentModel.Win32Exception:远程主机强制关闭现有连接

2.

System.Data.Entity.Core.EntityException:底层提供程序在打开时失败。 ---> System.InvalidOperationException:超时已过期。在从池中获取连接之前超时时间已过。这可能是因为所有池连接都在使用并且达到最大池大小

3

System.Data.SqlClient.SqlException (0x80131904):登录前连接初始化过程出错,客户端无法建立连接。可能的原因包括:客户端尝试连接到不受支持的 SQL Server 版本;服务器太忙而无法接受新连接;或者服务器上存在资源限制(内存不足或允许的最大连接数)。 (提供者:TCP Provider,错误:0 - 现有连接被远程主机强行关闭。)---> System.ComponentModel.Win32Exception (0x80004005):现有连接被远程主机强行关闭。

我使用 SqlAzureExecutionStrategy,因此在重试几次后会引发此异常。

我在 azure portla 上看到了不同的性能指标,但似乎还可以。

如何识别问题?

【问题讨论】:

  • How can I identify the problem? > 使用 Azure SQL DB 打开支持案例。
  • 您的 AzureSQL 数据库是否与您的应用程序代码位于同一 Azure 区域?您是否直接通过 Internet 连接到 Azure SQL 数据库(例如通过桌面客户端软件?)。
  • 还可以在 azure 中查看您的事件日志表以了解更多详细信息
  • @Dai,是的,两者都位于我们东部,是的
  • @RemusRusanu,我没有支持计划,首先我决定问堆栈

标签: c# sql-server azure azure-sql-database


【解决方案1】:

我认为您的数据库负载过重,或者您有一些查询仍在运行或未释放连接。

我使用这个查询来查看正在运行的内容:

SELECT (SELECT TOP 1 SUBSTRING(s2.text,statement_start_offset / 2+1 , 
  ( (CASE WHEN statement_end_offset = -1 
     THEN (LEN(CONVERT(nvarchar(max),s2.text)) * 2) 
     ELSE statement_end_offset END)  - statement_start_offset) / 2+1))  AS sql_statement,
     s1.* FROM sys.dm_exec_requests s1
CROSS APPLY sys.dm_exec_sql_text(sql_handle) AS s2 
ORDER BY 1

查看您是否有仍在运行的查询,或密切关注 Azure 门户中的 CPU 使用情况。

S2 数据库不是特别好,它会限制您的请求,因此如果您执行大量请求(即使是小请求),它可能会拒绝它们。

您的重试策略也可能使问题变得更糟,但是当它已经被填满时会向它抛出更多请求。如果是这种情况,您可以尝试使用指数回退。

【讨论】:

    【解决方案2】:

    这三个都可以通过您的连接池设计来解释。你是在重复使用你的连接,还是每次调用数据库都打开它自己的连接?您是否在每个 DBContext 结束时关闭连接?您是否正在实施任何类型的缓存层以将您的数据库的往返次数减少到最低限度?

    这里有一种方法可以查看您的池是否存在问题。从门户转到相关数据库,查看资源利用率图,然后点击编辑。

    然后从选择列表中添加会话百分比和工人百分比,然后点击确定。

    如果您的池化是一个问题,您会发现您的会话和工作人员百分比很高,并且可能会在一段时间内固定为 100%。如果您达到 100%,您可能会被拒绝新连接长达 5 分钟,直到当前会话和工作人员完成或被终止。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2012-10-20
      • 1970-01-01
      • 1970-01-01
      • 2013-04-19
      • 1970-01-01
      • 2011-09-19
      • 1970-01-01
      • 2016-03-10
      相关资源
      最近更新 更多