最近碰到一个比较头疼的问题,我们用asp.net开发的网站,部署到IIS上后,总是在运行过程中连接不上数据库。这种情况没有周期性可言,有时候几个月都不出现,有时候几天出现一次,有时候一天出现很多次,一直没有找到问题的原因,搞的头大。不知道大家有没有碰到过这种问题,或者有没有解决的思路,望指教。
服务器操作系统:windows server 2008
IIS是系统自带的
数据库是Sql Server 2008
应用和数据库部署在同一台服务器上的
检查系统日志,检查以下情况。
1、连接不上时,sqlserver的服务是否启动。
2、是否网站发起的数据库连接过多。
1,服务肯定是启动的,如果在IIS中添加两个网站,都是同样的应用,如果一个连接不上了,另外一个缺可以。而且还有一个CS版的小程序一只在使用,从来没有出现连接不上的情况。
2、整个网站的客户端最多不超过50个,是局域网访问的
@Ven: 应该是连接数过多。如果两个网站,一个可以连接,一个不可以的时候,把可以连接的网站停掉,看看不可以的能不能连接了。
@飞来飞去: 只要重启IIS就可以连接了
@Ven: 检查一下程序,或者用ssms看看到底是什么在占着连接不释放。这肯定是连接数的问题。
@飞来飞去: 我只是举例,是为了做测试才建立两个网站的,只有一个网站的时候也会出现这种情况
@Ven: 这正说明这一个网站会占着连接不释放啊。IIS重启的时候强制是否数据库连接,所以重启后又可以连接了。
@飞来飞去: 你是指网站建立的和数据库的连接一直处于连接状态,由于不同的客户端的访问,建立的连接数越来越多,致使连接资源被耗尽?
@Ven: 是这样的
@飞来飞去: 这种情况之前也考虑过,还特意把系统中和数据库访问有关的代码找出来看过,都是使用后关闭了链接的。倒是另外一个同事用CS开发的地磅系统是一只保持链接,没有断开过,不过那边只有两台电脑
是连接超时还是连接不上?数据库有日志的
根本就连接不上,就是所有要和数据库打交道的程序都无法正常获取或者更新数据
看看端口有没被占用?
什么端口?
@Ven: 1433
@捂汗: 不是的
你应该把异常打印出来,这样猜是没有用的。
嗯,是要输出才能分析
把异常信息放出来看看
现在的异常记录程序还没记录到这个异常,还要在另外加一个具体的捕获
杀毒软件 防火墙 程序代码问题 换个iis试下
杀毒软件装的事360的那个,防火墙没开,只能先排查是不是程序本身的问题了,IIS倒是没换了试过,一只都用的事win server2008系统自带的版本
最好是能够在数据库操作的地方加上一些try catch代码,看看是不是有什么可用的具体的错误信息。
会不会有datareader没有及时的dispose
如果只close了没有dispose会不会有影响
我之前把所有和数据库操作相关的代码都找出来看了一遍,除了使用using的,其他都是显示close的
你是怎么解决的,我也碰到这个问题了