首页 新闻 会员 周边 捐助

IIS回收的问题

0
悬赏园豆:30 [已解决问题] 解决于 2017-05-04 08:43

 数据库服务器挂了,程序出错。后来数据库服务器搞好了,程序还是跑不起来。后来研究了一番,吧IIS里的程序池回收一下就ok了。请问大神们,谁能给讲解一下。

土墙的主页 土墙 | 初学一级 | 园豆:112
提问于:2017-05-03 09:41
< >
分享
最佳答案
1

这个问题很难说,在你程序出错后如果代码写的不够严谨可能会导致各种问题,从最简单的连接未回收到outofmemory等。iis回收相当于重启应用程序,当然可以在短时间内掩盖这些问题,这个和看病多喝水电脑出问题重装一个道理。

收获园豆:25
Daniel Cai | 专家六级 |园豆:10424 | 2017-05-03 10:20

 归根结底的意思是还是程序上对错误的处理不够严谨。是不是在连接数据库的时候出现异常的时候应该将SqlConnection对象做Dispose。

土墙 | 园豆:112 (初学一级) | 2017-05-03 10:59

 IIS里应用程序池回收的时候,应该就是做了Dispose吧

土墙 | 园豆:112 (初学一级) | 2017-05-03 11:01

@土墙: 这种实现IDisposeable接口的对象绝大部分都需要在使用完进行回收,一般场景下用using套起来即可,connection对象会在dispose方法中判定是回连接池还是真的释放连接。

应用程序池回收就是一个hard reset,全部重启,和dispose没太大关系。

Daniel Cai | 园豆:10424 (专家六级) | 2017-05-03 11:56
其他回答(1)
0

每来一个请求后->IIS 创建work->work 创建 sql 连接;

现在数据库挂了,你设想一下在工作中死掉和非工作中无法访问的。

工作中死掉的,要释放掉取决于客户端超时;非工作中死掉的,正常默认超时时间也很长;

因此请求稍微多一点,work池很快就满载了,只有随着一个个缓慢超时释放出来,才会有资源。

收获园豆:5
花飘水流兮 | 园豆:13617 (专家六级) | 2017-05-03 17:47

 池的意义就是在于用有限对待相对的无限,但池满则无法“进水”

支持(0) 反对(0) 花飘水流兮 | 园豆:13617 (专家六级) | 2017-05-03 17:49
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册