SQL Azure:更多间歇性超时

时间:2012-06-21 22:08:09

标签: sql asp.net-mvc entity-framework azure structuremap

我们在Windows Azure上运行了一套5个在线拍卖系统。 SQL Azure。每个系统由一个Web工作者和一个或多个Web角色组成。每个系统都使用ASP.NET MVC 3和Entity Framework,Repository Pattern和StructureMap。

工作人员负责管理并运行两组流程。一组每十秒运行一次,另一组每秒运行一次。每个进程都可能运行数据库查询或存储过程。这些是使用Quartz.net

安排的

Web角色服务于公共接口和后台。在其他基本的crud功能中,这两者都提供了屏幕,当打开时,它们将重复调用控制器方法,这将导致执行存储过程只读查询。每个客户重复的频率约为2-3秒。一个典型的用例是打开5个后台办公室窗口,打开25个最终用户窗口 - 所有窗口都重复打到系统。

很长一段时间以来,我们一直遇到间歇性的SQL超时错误。其中三个最常见的是:

  

System.Data.SqlClient.SqlException:从服务器接收结果时发生传输级错误。 (提供者:TCP提供者,错误:0 - 远程主机强行关闭现有连接。)

     

System.Data.SqlClient.SqlException:从服务器接收结果时发生传输级错误。 (提供者:TCP提供者,错误:0 - 信号量超时期限已过期。)

     

System.Data.SqlClient.SqlException:超时已过期。操作完成之前经过的超时时间或服务器没有响应。

唯一可预测的情况是在拍卖期间,特定控制器 - >事件期间sproc开始超时(可能是由于负载)。所有其他时间错误似乎是完全随机的,即使在用户不活动期间也会出现单个,两个和三个等。例如,系统将持续18个小时没有错误,然后可能是来自不同管家方法的5-10个错误,或者可能是用户登录并查看了他们的帐户。

其他信息:

我尝试使用本地SSMS和Azure基于Web的查询工具在SQL Azure上运行受影响的查询/ sprocs - 所有这些似乎都可以快速执行,最多1秒。查询计划没有显示任何过于可疑的事情,虽然我绝不是SQL查询性能专家,或任何其他类型的专家J

我们已将所有受影响的区域包装在Azure SQL瞬态错误处理块中 - 但正如此处http://social.msdn.microsoft.com/Forums/en-US/ssdsgetstarted/thread/7a50985d-92c2-472f-9464-a6591efec4b3所讨论的那样,它们没有捕获超时,根据“Valery M”,这是有充分理由的。

我们没有在数据库中存储任何会话信息,尽管asp.net会员信息存储在数据库中。

我们使用1个“SQL Azure服务器实例”,它承载所有5个数据库,2个用于登台,3个用于生产。所有5个系统通常同时处于活动状态,尽管在任何给定时间不可能有多个系统处于活动负载状态。 所有Web角色,辅助角色和SQL Azure服务器都位于同一Azure地理区域中。

有关我们应该在哪里寻找的任何想法?它是否有助于为每个系统提供自己的SQL Azure服务器? ...我们自己没有解决方案 - 是否有可能让微软打开支持票并深入了解我们的应用程序正在进行的工作 - 如何解决这个问题?

提前致谢。

伊兰

1 个答案:

答案 0 :(得分:5)

SQL Azure是一个多租户系统,您可能会遇到其他租户过度使用的可能性。微软通过阻止其他租户进行限制来做好工作,但偶尔SQL Azure查询会超时...

要向Microsoft开放支持,请访问此页面:https://support.microsoft.com/oas/default.aspx?gprid=14919&st=1&wfxredirect=1&sd=gn