我的tomcat最近总是报资源耗尽的问题但是我的代码每次调用都close链接了啊
经过debug发现
我的代码里在创建链接对象的时候每次请教都会生成不同的新对象。这样会造成链接池资源取尽的问题吗?如何解决呢?写单例吗?这样会造成很多人同时使用同一个链接对象吗。会有问题吗?
看你使用的是什么框架咯.
一般连接是放在连接池(缓存起来的)
[color=red]创建链接对象的时候每次请教都会生成不同的新对象[/color]
其实并没有去创建新对象,只是从连接池中获取了一个不同连接对象罢了.
解决办法
1.还是要细心检查程序是否没有关闭连接
2.增大连接池,可以存放更多的连接
[color=red]这样会造成很多人同时使用同一个链接对象吗。会有问题吗?[/color]
同一时刻只会有一个人用,不然就会抛异常了
一个链接关闭后,返回给连接池,链接数+1,你设一个适当的最大连接数吧..
如果调用创建链接对象太多次是会导致资源浪费,你应该用连接池来管理连接
比如开源的dbcp,c3p0等
应该还是代码问题吧,如果正常关闭的话,不可能同时有太多的数据库连接同时进行,也就不应该出现资源耗尽的问题;如过真的代码有问题的话,设置了最大连接可能会导致数据库操作阻塞那不更糟糕吗?还是在调试状态下,看一看数据连接池中连接对象的状态,查找一下到底是什么原因引起的connection对象不能被正常释放吧;
有个奇怪的感觉,不知LZ是否是采用自己写的数据库连接池来实现的.
如果是的资源被耗尽可能会有两种可能:
一种是超过最大连接数,一种是连接池里面没有了链接.
LZ"每次调用都close链接了",是不是把实际的链接给close了,而不是释放回链接池了.
猜测之,望有用. :wink:
超过最大连接数的话,应该是等待,还不是出错。
我估计是你取连接的时候,没有使用连接池。我用过c3p0, 但是觉得不如proxool好用。现在proxool的版本是0.9.1, 感觉很稳定。虽然已经很长时间没有更新了。
最好参照别人的例子,或者官方网站的例子来写。