SQL Azure的:更多的间歇性超时 [英] SQL Azure: More Intermittent Timeouts

查看:206
本文介绍了SQL Azure的:更多的间歇性超时的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我们有一组在Windows Azure上与放跑5网上拍卖系统; SQL Azure上。每个系统由一个单一的网络工作者和一个或多个网络的角色。每个系统都使用ASP.NET MVC 3和Entity Framework,Repository模式和StructureMap。

We have a set of 5 online auction systems running on Windows Azure & SQL Azure. Each system consists of a single web worker and one or more web roles. Each system is using ASP.NET MVC 3 and Entity Framework, Repository Pattern and StructureMap.

辅助角色,负责家务和运行两组过程。一组被运行每十秒,其他每一秒。每个进程可能会运行一个数据库查询或存储过程。这些计划与Quartz.net

The worker role is responsible for housekeeping and runs two groups of processes. One group is run every ten seconds, the other every second. Each process will likely run a database query or stored procedure. These are scheduled with Quartz.net

该网站的作用,服务于公共接口和后台。除其他基本CRUD功能,这两种提供屏幕其中,开放时,将重复呼叫控制器的方法,这将导致在存储过程中只读查询的执行。重复的频率为每客户约2-3秒。一个典型的用例是5回办公室的窗户打开,25最终用户打开窗户 - 所有反复击打系统

The web role serves the public interface and back office. Among other basic crud functionality, both of these provide screens which, when open, will repeatedly call controller methods which will result in execution of stored procedure read-only queries. The frequency of repetition is about 2-3 seconds per client. A typical use case would be 5 back office windows open, and 25 end user windows open – all hitting the system repeatedly.

在很长一段时间,我们一直在经历间歇性SQL超时错误。最常见的三个是:

For a long time we have been experiencing intermittent SQL timeout errors. Three of the most common ones are:

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

System.Data.SqlClient.SqlException: A transport-level error has occurred when receiving results from the server. (provider: TCP Provider, error: 0 - An existing connection was forcibly closed by the remote host.)

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

System.Data.SqlClient.SqlException: A transport-level error has occurred when receiving results from the server. (provider: TCP Provider, error: 0 - The semaphore timeout period has expired.)

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

System.Data.SqlClient.SqlException: Timeout expired. The timeout period elapsed prior to completion of the operation or the server is not responding.

只有predictable情形是,特定的控制器拍卖中 - >存储过程启动事件(由于负荷presumably)期间超时。错误出现在所有其他时间是完全随机的,进来单打,二的,三公司等,即使在用户活动的时间。例如,系统会18小时没有一个错误,然后可能是5 - 从不同的看家方法10个错误,或者一个用户登录和查看他们的帐户

The only predictable scenario is during an auction where a specific controller -> sproc starts to timeout during the event (presumably due to load). All other times the errors appear to be completely random and come in singles, two’s, and three’s etc. even during periods of user inactivity. For example the system will go 18 hours without an error and then could be 5 – 10 errors from different housekeeping methods, or perhaps a user logged on and viewed their account.

其他信息:

我试图运行的SQL Azure中使用本地SSMS和Azure的基于Web的查询工具受影响的查询/存储过程 - 似乎都快速执行,最长1秒。查询计划没有显示什么太可疑虽然我绝不是一个SQL查询性能专家,或任何其他类型的专家对于这个问题Ĵ

I have tried to run the affected queries/sprocs on SQL Azure using both local SSMS and Azure web-based query tool – all seem to execute quickly, 1 second max. Query plans not showing anything too suspicious although I am by no means a SQL query performance expert, or any other kind of expert for that matter J

我们已经包裹在SQL Azure的瞬态故障所有受影响地区处理块 - 但这里讨论的<一个href=\"http://social.msdn.microsoft.com/Forums/en-US/ssdsgetstarted/thread/7a50985d-92c2-472f-9464-a6591efec4b3\" rel=\"nofollow\">http://social.msdn.microsoft.com/Forums/en-US/ssdsgetstarted/thread/7a50985d-92c2-472f-9464-a6591efec4b3,他们不抓超时,并根据瓦列里·M这是有原因的。

We have wrapped all affected areas in Azure SQL Transient Fault Handling Blocks – but as is discussed here http://social.msdn.microsoft.com/Forums/en-US/ssdsgetstarted/thread/7a50985d-92c2-472f-9464-a6591efec4b3, they do not catch timeouts, and according to "Valery M" this is for good reason.

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

We are not storing any session information in the database, although asp.net membership information is stored in the database.

我们使用它承载所有5个数据库,两个用于分期和三个生产1SQL Azure的服务器实例。所有5系统一般活性同时尽管这是不可能的多于一个将在活载使用的状态在任何给定的时间。
所有Web角色,辅助角色和SQL Azure的服务器驻留在同一个Azure的地理区域。

We use 1 "SQL Azure server instance" which hosts all 5 databases, two for staging and three for production. All 5 systems are generally active at the same time although it is unlikely that more than one will be in a state of live load use at any given time. All web roles, worker roles and the SQL Azure server reside in the same Azure Geographical Region.

这是我们应该寻找有什么想法?它是否有助于让每一个它自己的SQL Azure的服务器系统? ......我们自己做不到的解决方案 - 这可能让微软打开一个支​​持票,并采取在与我们的应用是怎么回事引擎盖下看看? - 一个人如何去这个

Any thoughts on where we should be looking? Would it help giving each system it's own SQL Azure server? ... Failing a solution by ourselves - is it possible to get Microsoft to open a support ticket and take a look under the hood at what’s going on in with our application – how does one go about this?

先谢谢了。

宜兰

推荐答案

SQL Azure是一个多租户系统,你可以从潜在的在从其他租户使用情况的痛苦。微软做一个OK的工作通过保持其他租户节流,但过一段时间SQL Azure的查询时间做了..

SQL Azure is a multitenant system and you could be suffering from potential over usage from other tenants. Microsoft does an OK job by keeping other tenants throttled, but once in a while SQL Azure queries do time out..

要与微软公开支持访问此页:<一href=\"https://support.microsoft.com/oas/default.aspx?gprid=14919&st=1&wfxredirect=1&sd=gn\" rel=\"nofollow\">https://support.microsoft.com/oas/default.aspx?gprid=14919&st=1&wfxredirect=1&sd=gn

To open support with Microsoft visit this page: https://support.microsoft.com/oas/default.aspx?gprid=14919&st=1&wfxredirect=1&sd=gn

这篇关于SQL Azure的:更多的间歇性超时的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆