ila*_*lan 5 sql structuremap asp.net-mvc entity-framework azure
我们在Windows Azure和SQL Azure上运行了一组5个在线拍卖系统.每个系统由一个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 Transient Fault Handling Blocks中 - 但正如此处所讨论的那样http://social.msdn.microsoft.com/Forums/en-US/ssdsgetstarted/thread/7a50985d-92c2-472f-9464-a6591efec4b3,他们没有抓住超时,根据"Valery M",这是有充分理由的.
虽然asp.net成员资格信息存储在数据库中,但我们不会在数据库中存储任何会话信息.
我们使用1个"SQL Azure服务器实例",它承载所有5个数据库,两个用于登台,三个用于生产.所有5个系统通常同时处于活动状态,尽管在任何给定时间不可能有多个系统处于活动负载状态.所有Web角色,辅助角色和SQL Azure服务器都位于同一Azure地理区域中.
关于我们应该在哪里寻找的任何想法?它是否有助于为每个系统提供自己的SQL Azure服务器?...我们自己的解决方案失败了 - 是否有可能让微软打开一张支持票,并了解我们的应用程序正在进行的工作 - 如何解决这个问题?
提前致谢.
宜兰
SQL Azure是一个多租户系统,您可能会遭受其他租户的过度使用.微软通过阻止其他租户受到限制做得很好,但偶尔会有SQL Azure查询超时.
与微软公开支持访问此页:https://support.microsoft.com/oas/default.aspx?gprid=14919&st=1&wfxredirect=1&sd=gn