我的Azure角色从数据库中获取处理的内容 - 它持有一个System.Data.SqlClient.SqlConnection
实例,并定期创建一个SqlCommand
实例并执行SQL查询。
现在,偶尔(通常是几天一次),运行查询将触发一个SqlException
异常
服务在处理您的请求时遇到错误。请重试。错误代码40143。 当前命令发生了严重错误。如有任何结果,请放弃。
我已经看到了很多次了,现在我的代码捕获它,调用Dispose()
关闭SqlConnection
实例,然后重新打开连接并重试查询。后者通常会导致另一个SqlException
异常
超时已过期。操作完成之前超时时间已过或服务器未响应。
这看起来很像SQL Azure服务器无法响应或由于某种原因不可用。
目前,我的代码没有捕获后面的异常,它被传播到RoleEntryPoint.Run()
之外,并重新启动角色。重新启动通常需要约十分钟,一旦完成,问题就消失了一天左右。
我不喜欢我的角色重新启动 - 这需要一段时间,我的服务功能受到阻碍。我想做一些更聪明的事情。
解决这个问题的策略是什么?我应该重试几次查询,以及多少次和间隔多少时间?我应该做些别的吗?什么时候放弃并让角色重新启动?