请问有没有连接池超时的终极解决方案?

interbanker 2006-01-17 01:41:55
超时时间已到。在从池中获取连接之前超时时间已过。出现这种情况可能是因为所有池连接都已被使用并已达到最大池大小。每次connect.close()后面我都跟一个GC.colloct().
如adminconn.Close();GC.Collect();或者dgvideo.DataBind();GC.Collect();速度感觉很慢了。可是
玩猛点还是有这种情况发生。....请哪位高手指点个终极解决方案.谢谢了。
...全文
278 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
我心狞静 2006-01-17
  • 打赏
  • 举报
回复
及时关闭连接才是最好的办法。
fantiny 2006-01-17
  • 打赏
  • 举报
回复
楼主看看GC.colloct的回收机制,这个乱用反而降低性能。一般情况都是用思归同学说的方法。
xuandhu 2006-01-17
  • 打赏
  • 举报
回复
是你程序的问题,不是环境的问题.

原因: 你的连接没有关(虽然你写了CLOSE命令).

解决: SQL(查询器)输入命令,看没关的连接: SP_WHO
控制器: 管理-->进程--> 可以看到没有关闭进程的COMMAND命令
我不懂电脑 2006-01-17
  • 打赏
  • 举报
回复
根据超时出现的频率,动态调整连接池的大小
gngnandgngn 2006-01-17
  • 打赏
  • 举报
回复
没有必要调用gc.collect()
正常情况不应该导致连接池经常用满的,首先你确定所有连接都及时关闭的,也可以相应调整连接池的连接数(调地太大同样影响性能),然后就是优化程序了,看看是不是没必要地反复在连接数据库,编码的时候就要有意识,数据库连接是很宝贵的资源自己要小心。
bingbingcha 2006-01-17
  • 打赏
  • 举报
回复
主要的优化,还是观察性能监测器的数据,根据情况调整最大池的数目.

并且保证你的Conn已经关闭,方法就是实现IDispose接口,或者finally.

不要自己调用GC.colloct()方法..这样只会增加系统的负担..
saucer 2006-01-17
  • 打赏
  • 举报
回复
没终极解决方案一说

>>>每次connect.close()后面我都跟一个GC.colloct().

1。别这样调用GC.Collect(),这样做只会造成性能问题
2。确认你启用了连接池(Pooling='true',默认情形)
3。使用Dispose模式或者
try
{
//....
}
finally
{
connect.Close();
}

确认你关闭了所有打开的连接

4。通过日志等手段研究一下你的服务器的负载情形,然后根据情形适当增加Max Pool Size,以及Connect Timeout 等参数

62,041

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术交流专区
javascript云原生 企业社区
社区管理员
  • ASP.NET
  • .Net开发者社区
  • R小R
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

.NET 社区是一个围绕开源 .NET 的开放、热情、创新、包容的技术社区。社区致力于为广大 .NET 爱好者提供一个良好的知识共享、协同互助的 .NET 技术交流环境。我们尊重不同意见,支持健康理性的辩论和互动,反对歧视和攻击。

希望和大家一起共同营造一个活跃、友好的社区氛围。

试试用AI创作助手写篇文章吧