我有一个最近推出的白标网站(同一网站的多个版本)。目前还没有大量流量 - 主要是机器人,但每天可能有 800 个用户。它托管在 Azure 上,具有 Azure 数据库以及位于非 Azure 服务器上的管理面板。两个站点都连接到同一 Azure 数据库。还有一些工作角色正在运行来处理数据 - 99% 的时间他们不做任何事情,但他们会定期检查。
我总是遇到随机错误,持续几秒钟,然后又好了,例如:
从服务器接收结果时发生传输级错误。 (提供程序:TCP 提供程序,错误:0 - 现有连接被远程主机强制关闭。)
然而今天早上,我们遇到了一个更严重的问题。它开始于:
System.ComponentModel.Win32Exception:远程主机强制关闭现有连接
这种情况发生在机器人(Google、百度、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 http://go.microsoft.com/fwlink/?LinkId=267637' 寻求帮助。
这种情况在最后一个小时断断续续地发生——主要是针对工人角色。然后我试图找出是什么占用了所有这些请求,我发现了这个命令:
从 sys.dm_exec_requests 中选择*
当我一遍又一遍地运行它时,它只返回 1 或 2 个请求。
所以我的问题是:
1) 是否有其他人经历过与 Azure 上托管的服务器相对定期(一天一次,也许两次)临时断开连接的情况?
2) 上述事件列表是否表明存在特定问题?当大量管理员同时登录时,这一切都可能发生。
3)当我收到180 limit消息时,如何更好地调试对数据库的请求数量?
提前致谢。