移动到azure后的SQL超时

Nik*_*Nik 6 c# azure azure-sql-database

将我的应用程序部署到Azure后,我遇到了一些数据库密集型报告的SQL超时问题.

我已经尝试在连接字符串中更改sql超时但没有任何影响..我也尝试将数据库从S2升级到P1,然后执行得很好,不会超时..但不幸的是,这不是一个真正的选项我们.

如何更改这些操作的超时值?

这是我收到的错误(之前没有发生在rackspace上)

'/'应用程序中的服务器错误.

等待操作超时

描述:执行当前Web请求期间发生未处理的异常.请查看堆栈跟踪以获取有关错误及其源自代码的位置的更多信息.

异常详细信息:System.ComponentModel.Win32Exception:等待操作超时

来源错误:

在执行当前Web请求期间生成了未处理的异常.可以使用下面的异常堆栈跟踪来识别有关异常的起源和位置的信息.

堆栈跟踪:

[Win32Exception(0x80004005):等待操作超时]

[SqlException(0x80131904):执行超时已过期.操作完成之前经过的超时时间或服务器没有响应.]
System.Data.SqlClient.SqlConnection.OnError(SqlException异常,Boolean breakConnection,Action 1 wrapCloseInAction)+2442634
System.Data.SqlClient.SqlInternalConnection.OnError( SqlException异常,Boolean breakConnection,Action 1 wrapCloseInAction)+5766568

Vol*_*hat 6

如果你将计划从低级更改为更大级并且它可以正常运行,那么它肯定是性能问题.

Azure SQL使用DTU来衡量您使用CPU,IO等的资源数量.因此,如果您使用100%的DTU,您的查询会有所延迟,使用100%会延长您将获得超时异常,因为默认情况下.net连接中有30秒超时.增加可能对您没有帮助,因为问题可能是您多次运行相同的查询并且它开始相互阻塞.

转到您的数据库,然后查询Performance Insight,并查看您的热门查询运行时间.并从那里开始优化.

潜在的地方可能是EntityFramework Include,如果你使用它,这可能会产生大量数据要返回的查询,这会减慢查询速度并使用大量的IO.

如果您仍想增加超时,可以通过添加在.config文件中为连接字符串执行此操作

;Connection Timeout=60
Run Code Online (Sandbox Code Playgroud)

但正如我所说的50/50修复它可以工作,但更好的是看看哪些查询缓慢并改善它们

PS.我最近和我的应用程序有同样的问题,有一个特殊的查询,我永远不会说会使用这么多的DTU.

PS.好吧,我第一次没有正确地阅读你的问题.所以我删除了我以前的答案

  • `Connection Timeout`/`Connect Timeout` 是_创建_连接的时间长度,而不是通过该连接执行命令的可用时间长度。这将取决于您如何在数据库上运行命令以及如何设置超时,但要查找与 _command_ timeout 相关的内容。 (2认同)

use*_*204 5

截至 2019 年 4 月这个月,同样的问题又出人意料地出现了。我们在 S3(标准 3)上准备好推出我们的应用程序,然后突然零件查询不起作用。

使用 Visual Studio 进行调试以查找“我们的错误”,表明查询全部超时。我发现这篇文章指出必须超过最大 DTU。

我想‘啊哈!...这可能是因为我复制了数据库,并且必须多次运行数据插入查询才能更新该数据库。不,只需阅读查找打印即可。

S3,也就是我们所处的位置,最近被更改为“标准”,具有 Microsoft 认为的“典型 IO 工作负载”。查看我们的 DTU 使用情况,我们的比例为 0.7%。不可能将查询超时强制设置为 30 秒或更短。

好的,Premium 现在适用于“IO 密集型工作负载”。好像之前 0.7% 的 DTU 使用量是 IO 密集型的。

我把它改成了P0,宾果!零件查询再次运行。

如果这能让我们赚更多的钱,我会提请我们当权者注意。我昨天花了很多时间来解决这个问题,所以我不希望其他人有同样的经历。

在此输入图像描述