问题描述
大家好,本人网站是用.net实现,最近发现网站经常会出现"超时时间已到。在操作完成之前超时时间已过或服务器未响应。"的异常,大概每天会出现一次,网站服务器每天晚上会重启一次。本人已经检查过网站代码数次,实在找不到数据库连接打开没有关闭的情况。出现上述问题的时候发现SQLServerManagemantStuido连接到服务器也出现“起时时间已到。在操作完成之前超时时间已过或服务器未响应。(MicrosoftSQLServer)”的错误。在此请问高手,如果是代码忘记关闭数据库连接,有什么办法或者工具检测到呢?有没有办法知道连接池还有多少连接可用,还有多少连接没有使用?这具问题已经百度过多次,如果是可以百度到的答案请不要说了。会不会有其它问题会导致这样的问题呢?网站的访问量其实还不大,有没有是服务器没有配置好呢?谢谢大家回复,在些先谢过大家了!!!回帖均有会送的~~~
解决方案
解决方案二:
你先通过日志将具体的错误贴出来呢,数据库连接池是个可能的问题,但你连工具都连不上,那也可能是连接都无法连接你也可以查所有的SqlDataReader,SqlConnection就这两个需要关闭,其它貌似都不需要关闭的
解决方案三:
数据库操作链接最好使用using(){}关键字用了using再也不怕使用完后没有关闭数据库链接另外超时是不是由于SQL语句执行过长,或死锁等待引起?
解决方案四:
引用楼主jetsoft444的回复:
在此请问高手,如果是代码忘记关闭数据库连接,有什么办法或者工具检测到呢?有没有办法知道连接池还有多少连接可用,还有多少连接没有使用?这具问题已经百度过多次,如果是可以百度到的答案请不要说了。
这是开发方法、开发理念的不同,而不是靠什么网上下载的工具。例如我们的网站,不论是前端还是服务器端,每天都可能进行成千上万次自动化测试,不但顺序执行(大乱次序执行)许多遍测试,而且使用上百个线程去并发测试,然后才敢上线。而你的,显然是“听天由命式的”开发方法。开发方法的不同,背后的东西就有本质的不同,因此当你只知道固守自己的那种思路里,有些解决方案跟你说了你也可能还是看不懂了。这就好象一个是找一帮小孩子去手工捶打汽车,另一个是专业的造车厂,产品肯定不同。想靠免费地从互联上下载什么软件、靠一个点子就卖出去汽车,而自己不改变设计师和工人的素质,很难。所以知道了一些理论概念,也仍然可能是初学者。因为行动力才是最重要的,而不是仅仅靠知道一些理论概念。
解决方案五:
经常有人问“还能列出哪些原因可能造成这个问题呢?”、“会不会有其它问题会导致这样的问题呢?”。其实如果你有了行动力,首先就会发现纠结是非真的很令人烦恼。例如有人说“数据库逻辑连接应该即时关闭”,那么有行动力的人就会去问“我已经有上万行代码了,我如何能够高强度地找出(而且是每天都回归地找出)没有即时关闭数据库逻辑连接呢?”。只会提出问题的人都是懒人,因为你一看提问的方式就会发现,只问是非问题,而没有能力做高强度的测试。
解决方案六:
你从百度找不到答案,其实不是没有答案,而是你看不到该做的事情。
解决方案七:
2楼说的检查一下还需要检查一下sql语句是否执行时间过长如果数据库服务器跟web服务器不是一台的话,还需要检查两个服务器之间是否通讯阻塞
解决方案八:
主要看日志。不过目测是连接池的问题。