C# 应用程序切换到实时URL会导致数据库使用过度

C# 应用程序切换到实时URL会导致数据库使用过度,c#,asp.net,amazon-web-services,iis,amazon-ec2,C#,Asp.net,Amazon Web Services,Iis,Amazon Ec2,这里有一个很奇怪的问题。。。提前为文字墙道歉 我们有一套在EC2实例上运行的应用程序,它们都连接到RDS实例 我们在同一台EC2服务器上托管登台和生产应用程序 对于其中一个应用程序,只要将登台应用程序移动到prod,就会打开超过250个到DB的连接,从而导致RDS实例的CPU使用率达到最大,并使整个套件的速度变慢。登台应用程序本身没有此问题 通过我们的八达通设置部署应用程序,也可以将BIN/Views文件夹从staging物理复制粘贴到live,就可以复制这个问题 连接是即时的,在不到一分钟的时

这里有一个很奇怪的问题。。。提前为文字墙道歉

我们有一套在EC2实例上运行的应用程序,它们都连接到RDS实例

我们在同一台EC2服务器上托管登台和生产应用程序

对于其中一个应用程序,只要将登台应用程序移动到prod,就会打开超过250个到DB的连接,从而导致RDS实例的CPU使用率达到最大,并使整个套件的速度变慢。登台应用程序本身没有此问题

通过我们的八达通设置部署应用程序,也可以将BIN/Views文件夹从staging物理复制粘贴到live,就可以复制这个问题

连接是即时的,在不到一分钟的时间内将CPU使用率提高到99%

需要注意的事情

运行将显示批量连接,其中没有一个具有LoginName

FE服务器上的资源监视器将列出所有来自IIS的连接,似乎正在扫描所有出站端口,试图在其端口上连接到DB服务器。FE服务器地址和DB服务器地址分别熄灭。只有所有连接的一个片段。

该应用程序需要用户登录才能执行99.9%的任务。有一个公共的“忘记密码”方法已更新为接受用户名或密码。表单结构或表单操作URL没有更改,只需在后面进行额外检查

其他变化围绕着数据的显示方式以及在特定条件下的付款限制。两者都需要登录

我尝试过的事情

  • 新应用程序池
  • 就给它几天时间,让它忘记曾经发生过的事
  • 不使用八达通发布
  • 检查版本之间更新的所有区域,以查看连接是否未正确关闭
对正在发生的事情真的不知所措。这是我第一次看到这样的东西。特别奇怪的是,登台是好的,但在另一个URL/连接字符串上的同一个应用程序失败得如此严重

我唯一能想到的可能是某种对公共表单进行投票的刮板,但这毫无意义,因为为什么当前的应用程序没有出现这种情况

AWS中是否有可以监视正在进行的呼叫的功能?我模模糊糊地记得纽舍利的某些东西能够做到这一点

欢迎任何建议和/或类似经验

编辑

  • 发行当天(昨天)的日志中没有未完成的内容
  • 没有与所有出站请求匹配的传入流量
  • 应用程序在启动时不执行初始化
更新


大多数查询都使用ADO。已更新查询以从不同的表中获取数据。方法名称和参数没有更改,只是更改了查询的主体。如果我使用sys.dm_exec_sql_text查看发送到DB的内容,我可以看到这是在数百个连接中发送的更新查询。他们都表现出被停职的样子。。。关于如何将查询发送到服务器,没有任何更改,只是查询本身…

因此,在更新中发布的另一个查询破坏了它。我们只恢复了那个查询并部署了一个新版本,一切正常


奇怪的是,它以这样或那样的形式在整个套件中运行。但是在任何一种没有登台的负载下都会死掉,这就是为什么我认为它是最后一个可以查看的地方。

检查您的IIS W3C日志。您是否有大量与这些请求对应的入站流量?还是相当安静?你有没有看到任何可疑的东西,比如重定向循环?现在正在浏览日志。似乎没有任何入站流量。当我们再次切换到测试问题时,DB连接数很低,例如15。将检查重定向循环…因此可能您有启动问题。应用程序是否将访问数据库作为其初始化例程的一部分(例如获取设置)?我猜它正在跌倒,并且一次又一次地重试。您可能有一些特定于环境的配置,或者可能是权限,这些配置都不正常。谢谢John。没有执行任何初始化。即使如此,它也会在暂存数据库上失败?两个数据库都是平等创建的。