解决一个问题的思路 之“解决已经写满con.close() 仍然出现"但是尚未从池中获取连接"的连接池耗尽问题”
2009-06-07 07:13
323 查看
来cnblogs快一年了,斗胆发一篇在首页,
这篇文章主要写解决一个网上答案不能解决自己问题的时候,解决问题的整个流程,
如果大家觉得这个没价值,还请管理员帮忙撤销发首页
先谢谢各位了。
一年前帮学校做了一个就业信息管理系统,
当时图热闹,觉得虽然说学校人不是很多,但是看惯了大家对GridView的性能的漫骂,
抱着练手的想法,自己用repeater 代替了GridView 来做数据显示
之后系统采用三层架构设计。。。。
之后做好了在自己本机上怎么测都没毛病,觉得差不多了
就向学校申请服务器架设,
结果没用几天,出毛病了, 老是提示
“超时时间已到。超时时间已到,但是尚未从池中获取连接。出现这种情况可能是因为所有池连接均在使用,并且达到了最大池大小。 ”
ok,google 了下,这个一般是因为DbConnection 开启了之后忘记关闭的(参见/article/5480475.html)
自己本身写了个DbHelper,改起来应该很快,
结果一看,雷到了,原来我在DbHelper里面已经关闭了啊
Code
for (int i = 0; i < Bll_JiuyeList.getPageCount(PAGESIZE, getStrWhere()); i++)
{
DropDownList_Jump.Items.Add((i + 1).ToString());
}
DropDownList_Jump.SelectedValue = "1";
想必大家一眼就看到了这个错误,
for语句中 判断是每循环一次都要执行的,然而我在判断i 的时候竟然将判断条件写成了调用“逻辑业务层”,逻辑业务层调用数据链路层,
这样直接导致了循环有多少次,就查了多少次数据库。。。。。。
将这个地方更正,连接数立马下降到5个以内。。。。
至此,遗留了1年的bug,就此解决。。。。。。
ok,总结下吧。
---------------------------------------------------
第一,要相信科学。当出现那个“超时时间已到”的提示,之后google后按照方法做,还是不行的时候,要坚信,这是会解决的。
第二,临时方法靠不住。临时方法临时解决问题,只有找到处问题的根源,才能真正的解决问题。
第三,for语句中的判断条件,一定要慎重,再慎重,除非确定必要,否则坚决不在此使用任何函数,特别是可能操作数据库的函数
---------------------------------------------------
恩恩,写完了,希望本文能给您带来一些收获,
再次感谢您看完这篇文章,也希望多多与大家交流,
第一次发在首页,压力很大,但是真的很想与大家分享这次经验
如果不适合放首页,麻烦管理员撤下,谢谢了
这篇文章主要写解决一个网上答案不能解决自己问题的时候,解决问题的整个流程,
如果大家觉得这个没价值,还请管理员帮忙撤销发首页
先谢谢各位了。
一年前帮学校做了一个就业信息管理系统,
当时图热闹,觉得虽然说学校人不是很多,但是看惯了大家对GridView的性能的漫骂,
抱着练手的想法,自己用repeater 代替了GridView 来做数据显示
之后系统采用三层架构设计。。。。
之后做好了在自己本机上怎么测都没毛病,觉得差不多了
就向学校申请服务器架设,
结果没用几天,出毛病了, 老是提示
“超时时间已到。超时时间已到,但是尚未从池中获取连接。出现这种情况可能是因为所有池连接均在使用,并且达到了最大池大小。 ”
ok,google 了下,这个一般是因为DbConnection 开启了之后忘记关闭的(参见/article/5480475.html)
自己本身写了个DbHelper,改起来应该很快,
结果一看,雷到了,原来我在DbHelper里面已经关闭了啊
Code
for (int i = 0; i < Bll_JiuyeList.getPageCount(PAGESIZE, getStrWhere()); i++)
{
DropDownList_Jump.Items.Add((i + 1).ToString());
}
DropDownList_Jump.SelectedValue = "1";
想必大家一眼就看到了这个错误,
for语句中 判断是每循环一次都要执行的,然而我在判断i 的时候竟然将判断条件写成了调用“逻辑业务层”,逻辑业务层调用数据链路层,
这样直接导致了循环有多少次,就查了多少次数据库。。。。。。
将这个地方更正,连接数立马下降到5个以内。。。。
至此,遗留了1年的bug,就此解决。。。。。。
ok,总结下吧。
---------------------------------------------------
第一,要相信科学。当出现那个“超时时间已到”的提示,之后google后按照方法做,还是不行的时候,要坚信,这是会解决的。
第二,临时方法靠不住。临时方法临时解决问题,只有找到处问题的根源,才能真正的解决问题。
第三,for语句中的判断条件,一定要慎重,再慎重,除非确定必要,否则坚决不在此使用任何函数,特别是可能操作数据库的函数
---------------------------------------------------
恩恩,写完了,希望本文能给您带来一些收获,
再次感谢您看完这篇文章,也希望多多与大家交流,
第一次发在首页,压力很大,但是真的很想与大家分享这次经验
如果不适合放首页,麻烦管理员撤下,谢谢了
相关文章推荐
- “超时时间已到。超时时间已到,但是尚未从池中获取连接。出现这种情况可能是因为所有池连接均在使用,并且达到了最大池大小。”问题的解决方法
- 解决办法之“超时时间已到。超时时间已到,但是尚未从池中获取连接。出现这种情况可能是因为所有池连接均在使用,并且达到了最大池大小 ”
- 解决办法之“超时时间已到。超时时间已到,但是尚未从池中获取连接。出现这种情况可能是因为所有池连接均在使用,并且达到了最大池大小 ”
- 解决办法之“超时时间已到。超时时间已到,但是尚未从池中获取连接。出现这种情况可能是因为所有池连接均在使用,并且达到了最大池大小 ”
- 超时时间已到。超时时间已到,但是尚未从池中获取连接。出现这种情况可能是因为所有池连接均在使用,并且达到了最大池大小。
- 超时时间已到,但是尚未从池中获取连接。出现这种情况可能是因为所有池连接均在使用,并且达到了最大池大小
- [转]超时时间已到。超时时间已到,但是尚未从池中获取连接。出现这种情况可能是因为所有池连接均在使用,并且达到了最大池大小
- 超时时间已到,但是尚未从池中获取连接。出现这种情况可能是因为所有池连接均在使用,并且达到了最大池大
- 超时时间已到。超时时间已到,但是尚未从池中获取连接。出现这种情况可能是因为所有池连接均在使用,并且达到了最大池大小
- “超时时间已到,但是尚未从池中获取连接。”的解决办法
- 一个奇葩的oracle分页问题,已经知道解决办法,但是不晓得产生问题的原音~
- 超时时间已到,但是尚未从池中获取连接。出现这种情况可能是因为所有池连接均在使用,并且达到了最大池大小。
- 百度地图SDK 已经定位到城市,但是用location.getCity()获取到的是NULL问题解决
- 超时时间已到。超时时间已到,但是尚未从池中获取连接。出现这种情况可能是因为所有池连接均在使用,并且达到了最大池大小。
- 超时时间已到。超时时间已到,但是尚未从池中获取连接。出现这种情况可能是因为所有池连接均在使用,并且达到了最大池大小。
- 超时时间已到。超时时间已到,但是尚未从池中获取连接。出现这种情况可能是因为所有池连接均在使用,并且达到了最大池大小。
- *(转)超时时间已到。超时时间已到 但是尚未从池中获取连接。出现这种情况可能是因为所有池连接均在使用 并且达到了最大池大小。
- 超时时间已到。超时时间已到,但是尚未从池中获取连接。出现这种情况可能是因为所有池连接均在使用,并且达到了最大池大小。
- 超时时间已到。超时时间已到,但是尚未从池中获取连接。出现这种情况可能是因为所有池连接均在使用,并且达到了最大池大小。
- 超时时间已到。超时时间已到,但是尚未从池中获取连接。出现这种情况可能是因为所有池连接均在使用,并且达到了最大池大小。