ASP.NET网站对SQL Server Express实例的连接产生了疑问 – 如何
这是一个相当大的,编码很糟糕的ASP.NET网站,我目前负责维护.我不确定如何解决的一个问题是,在看似随机的时间,实时网站将完全锁定,页面访问是可以的,但任何触及数据库的内容都会导致应用程序无限期挂起.
原因似乎是对数据库的更多开放连接,而不是对低级别流量网站的期望.活动监视器显示150个打开的连接,大多数具有应用程序值“.NET SqlClient Data Provider”,并具有网络服务登录. 一个快速的解决方案是重新启动SQL Server服务(我还回收了ASP.NET应用程序池,只是为了确保应用程序可以解决任何问题,并阻止任何代码重新尝试打开连接,如果存在某种循环过程我不知道的.但这并不能帮助我解决问题. 该应用程序使用Microsoft SQLHelper类,这是一个非常常见的库,所以我相信使用此类的代码将在需要时关闭连接. 然而,我发现了一些未正确关闭的DataReader.我认为我说对,DataReader可以保持底层连接打开,即使该连接已关闭,因为它是一个连接类(如果我错了,请纠正我). 它所特有的是其中一个管理员重新启动服务器(不是数据库服务器,实际服务器)和immediatley,该站点将再次挂起.罪魁祸首又是150个开放的数据库连接. 有没有人有任何诊断技术,他们可以与我分享,以解决这种情况发生的原因? 更新:SQL Server日志文件显示许多这样的条目(30) 2010-10-15 13:28:53.15 spid54启动数据库’test_db’. 我想知道服务器是否被攻击者击中了.这可以解释启动后的许多连接,以及看似随机的时间. 更新:已更改AutoClose属性,但仍在寻求解决方案! 更新2:请参阅我对该问题的答案以获得解决方案! 解决方法
更新:
大量启动数据库:将AutoClose属性设置为false:REF 您的DataReader是正确的:请确保关闭它们.但是,即使连接正确关闭,我也遇到了许多连接产生失控的问题.连接池似乎没有按预期工作,因为每个post-back都创建了一个新的SqlConnection.为了避免这种看似不必要的重新创建连接,我采用了Singleton方法来处理我的DAL.所以我创建了一个DataAdapter并通过它发送我的所有数据请求.虽然我被告知这是不明智的,但我还没有得到任何支持这个说法(我仍然渴望阅读任何文件/意见:我希望变得更好,而不是现状).我有一个DataAdapter类供您考虑,如果您愿意. 如果您使用的是SQL 2005,则应该能够使用Activity Monitor查看每个连接的“详细信息”,这有时会为您提供最后执行的语句.也许这会帮助您将语句追溯到代码中的某个位置. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
- asp.net – 为什么DataBind()方法是必要的?
- ASP.NET Web API v2并使用E??LMAH记录所有错误/异常
- asp.net-mvc – git和ASP MVC
- asp.net – 如何让Html Link(锚点)回发像LinkBut??ton一样?
- asp.net core生成路由连接,请求参数如何获取和模型绑定
- asp.net – System.Web.HttpContext.Current在检查Cache后自
- Asp.Net Mvc突出显示当前页面链接技术?
- asp.net – 在IIS中,为什么窗口验证不显示为我的Web应用程序
- asp.net – 联合身份验证和“加密操作期间发生错误”
- asp.net – 移动到新服务器后报告查看器问题