Azure SQL数据库连接问题 - 连接太多?

McG*_*Gaz 15 c# connectivity azure-sql-database

我有一个网站,这是我最近推出的白色标签(同一网站的多个版本).目前还没有大量的流量 - 主要是机器人,但每天可能有800个用户.除了位于非天蓝服务器上的管理面板之外,它还在Azure上托管Azure数据库.两个站点都连接到同一个Azure数据库.还有一些工作人员角色正在运行以处理数据 - 99%的时间他们没有做任何事情,但他们会定期检查.

我总是遇到随机错误,持续几秒钟然后再次没问题,例如:

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

然而,今天早上,我们遇到了一个更严重的问题.它始于:

System.ComponentModel.Win32Exception:远程主机强制关闭现有连接

这是在机器人(谷歌,百度,AhrefsBot和Wiseguys.nl)索引该网站时发生的.我从这些中得到了一个或多个错误.然后我得到了:

System.Data.SqlClient.SqlException:服务在处理您的请求时遇到错误.请再试一次.错误代码40143.当前命令发生严重错误.结果(如果有的话)应该被丢弃.

这是在ExecuteReader阶段.

10分钟后,真正的问题来了 - 这意味着没有人可以登录到管理界面,但是当我测试它时,Azure托管的网站似乎没问题,尽管机器人仍然会出现错误.问题是:

System.ComponentModel.Win32Exception:等待操作超时

这继续随机连接打开和关闭大约一个小时.然后我遇到了另一个问题:

System.Data.SqlClient.SqlException:资源ID:1.数据库的请求限制为180且已达到.有关帮助,请参阅" http://go.microsoft.com/fwlink/?LinkId=267637 ".

这发生在最后一小时的开关 - 主要是工人角色.然后我试图找出占用所有这些请求的内容,我发现了这个命令:

SELECT*FROM sys.dm_exec_requests

当我一遍又一遍地运行它时,它只返回了1或2个请求.

所以我的问题是:1)是否有其他人经常相对定期(一次,可能一天两次)与Azure上托管的服务器暂时断开连接?2)上述事件列表是否表明存在特定问题?当大量管理员一次登录时,可能都会发生这种情况.3)当我收到180限制消息时,如何更好地调试对数据库的请求数?

提前致谢.

McG*_*Gaz 7

几年前我写了这个问题,并通知了标题的一个小改动.经历了更多的Azure SQL数据库之后,我现在知道了这个问题的答案.为了其他人的利益,只需将您的数据库设置为太低的层.

Azure的定价级别在性能方面存在巨大差异.为了实现这一目标,他们限制了许多性能指标,例如CPU功率,每分钟请求等.

这意味着,如果您正在推动您的层,您的请求将开始排队,因为CPU功率/请求量太高而无法处理.这导致超时,然后请求限制随着请求等待处理而增长.最终,它达到了数据库本质上下降的程度.

我的经验是较低的数据库级别,例如S0和S1,实际上是不足的,不应该用于除开发或非常基本的站点之外的任何其他内容.

Azure门户中有一些很棒的工具允许您调试数据库的运行情况,例如CPU图,索引顾问和查询性能洞察.