在我们的系统上,由一个使用数据库sql-azure的web角色实现,我们遇到了特定查询的重复超时。
这些超时在一天中会发生几个小时,然后就不会再出现。
该查询有两个表,其中的行数不是很高(大约800,000行),其中包含使用主键的连接。
执行计划是ok的,索引使用得当,查询通常需要两秒钟才能执行。
没有使用EntityFramework的测试也会得到同样的结果。
瞬时故障处理不适用于超时的情况。
此行为的原因可能是什么?
发布于 2013-07-12 18:09:41
我们在过去使用SQL Azure时遇到过类似的问题;频繁地对少于10行的表运行查询,甚至是标准的.Net成员提供程序查询,所有这些都会间歇性地失败并出现超时。这通常是在我们的服务上几乎没有活动的时候;主要是在晚上。
在通常可以安全重试SQL Timeout (通常是读取操作)的常用区域中,我们已经将timeout异常添加到我们的自定义错误检测策略中,该策略取自Transient Fault Handling Block;然而,正如您所说的,这在大多数情况下是不合适的。
到目前为止,我们从Azure支持部门得到的最好的解释是,因为SQL Azure实际上是一个由多个客户端使用的共享SQL Server实例;如果一个用户执行密集型操作,它可能会以这种方式影响其他用户。然而,相信这是不可接受的,我们仍在与SQL Azure支持人员联系,以确定为什么节流不能阻止此类活动影响我们。
你最好的办法是:
顺便说一句,我们仍然在等待Azure支持人员向我们反馈为什么我们仍然收到超时异常。
https://stackoverflow.com/questions/17447498
复制相似问题