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
如果你将计划从低级更改为更大级并且它可以正常运行,那么它肯定是性能问题.
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.好吧,我第一次没有正确地阅读你的问题.所以我删除了我以前的答案
截至 2019 年 4 月这个月,同样的问题又出人意料地出现了。我们在 S3(标准 3)上准备好推出我们的应用程序,然后突然零件查询不起作用。
使用 Visual Studio 进行调试以查找“我们的错误”,表明查询全部超时。我发现这篇文章指出必须超过最大 DTU。
我想‘啊哈!...这可能是因为我复制了数据库,并且必须多次运行数据插入查询才能更新该数据库。不,只需阅读查找打印即可。
S3,也就是我们所处的位置,最近被更改为“标准”,具有 Microsoft 认为的“典型 IO 工作负载”。查看我们的 DTU 使用情况,我们的比例为 0.7%。不可能将查询超时强制设置为 30 秒或更短。
好的,Premium 现在适用于“IO 密集型工作负载”。好像之前 0.7% 的 DTU 使用量是 IO 密集型的。
我把它改成了P0,宾果!零件查询再次运行。
如果这能让我们赚更多的钱,我会提请我们当权者注意。我昨天花了很多时间来解决这个问题,所以我不希望其他人有同样的经历。
| 归档时间: |
|
| 查看次数: |
10553 次 |
| 最近记录: |