没有可用的数据库连接 这个问题如何解决 !!!

wenjie4892543 2012-12-28 11:25:43
没有可用的数据库连接 这个问题如何解决 !!! 程序部署在别的公司的服务器上,,运行一段时间后就出现这个问题,重启服务又可以了,,,但程序运行一段时间又出现了!!急急!!!求牛人解决下。。。。。。。。。
...全文
904 24 打赏 收藏 转发到动态 举报
写回复
用AI写文章
24 条回复
切换为时间正序
请发表友善的回复…
发表回复
yujian10962 2013-01-25
  • 打赏
  • 举报
回复
[引用 10 楼 scottxzj 的回复:] 1.没释放连接池,一直被占用 2.连接池设置的小了,真的是连接池数目满了 顶 一下
s478853630 2013-01-24
  • 打赏
  • 举报
回复

import oracle.jdbc.pool.OracleDataSource;

try {
			OracleDataSource dataSource = new OracleDataSource();
			dataSource.setURL("jdbc:oracle:thin:@localhost:1521:orcl");
			dataSource.setUser("system");
			dataSource.setPassword("sa");
			for (int i = 0; i < 5000; i++) {
				System.out.println(dataSource.getConnection());
			}
		} catch (Exception e) {
			e.printStackTrace();
		}
试试这个,连续取出5000个Connection,不用关闭,也不会出现你说的那种情况。
冰思雨 2013-01-24
  • 打赏
  • 举报
回复
没有可用连接,大多数情况,是由于,你的程序,用完连接,没有释放连接造成的。 咱们1楼的兄弟,已经给出了排查方案了,很可行的。 如果你的程序,每次用完连接都能及时的释放连接,那么,问题有可能出现在连接池的上面。 比如,你的程序,最多情况下,可能同时需要8个数据库连接来并发完成这个系统的处理流程,而你的连接池, 最多能分配5个连接给应用程序,这时,有的连接池,就会抛出没有可用连接的异常来。 当然,大部分连接池,都不这样配置,所以,最常见的,还是数据库抛出的这个异常。 还是看看程序吧,看看那里没有释放连接,或者由于异常抛出而没有执行释放连接的代码。
沉默andy 2013-01-23
  • 打赏
  • 举报
回复
解决: 1:如果你用的jdbc直接连,建议修改成数据库联接池。 2:如果你用的数据库联接池,那么你可以放大数据库默认的连接数,只有基数大了你才可以修改你的配置文件中的连接数。 最后还有建议,最好还要检查一下代码是不是有获取连接没有释放或是获取连接的业务过多而执行较慢,释放的速度赶不上被获取的速度,所以就会造成运行一段时间后不够用。
duiduiaa 2013-01-23
  • 打赏
  • 举报
回复
必须是有的连接一直占用着,没有释放,所以才会连接不够的。
  • 打赏
  • 举报
回复
引用 17 楼 wenjie4892543 的回复:
。。 报错 的 地方 不确定 。。 我报错 后 我 如何 知道 是 哪里的 连接 没 释放 错误: 没有可用的连接数 大牛--文杰:(328897842) 16:44:21 debug 不用说了。 大牛--文杰:(328897842) 16:44:49 java.sql.SQLException: 没有可用的数据库连接 14:22……
他会报这个错,证明你确实有没有关闭的资源,我不清楚你是用什么做的dao层,但既然你说finall都关闭了,我给你的建议:会不会是你try里多次会话用的是不同的session,
  • 打赏
  • 举报
回复
引用 6 楼 jianqiangking 的回复:
引用 楼主 wenjie4892543 的回复:没有可用的数据库连接 这个问题如何解决 !!! 程序部署在别的公司的服务器上,,运行一段时间后就出现这个问题,重启服务又可以了,,,但程序运行一段时间又出现了!!急急!!!求牛人解决下。。。。。。。。。 运行一段时间后就出现这个问题 具体是什么问题?
你还真够笨的,楼主都说了“没有可用的数据库连接”啊,就好比你的jdbc配置不对一个吊样
wenjie4892543 2013-01-16
  • 打赏
  • 举报
回复
。。 报错 的 地方 不确定 。。 我报错 后 我 如何 知道 是 哪里的 连接 没 释放 错误: 没有可用的连接数 大牛--文杰:(328897842) 16:44:21 debug 不用说了。 大牛--文杰:(328897842) 16:44:49 java.sql.SQLException: 没有可用的数据库连接 14:22:39,961 ERROR [STDERR] at com.egosystems.apputil.pool.ConnectionFactory.getFreeConnection(ConnectionFactory.java:342) 14:22:39,961 ERROR [STDERR] at com.egosystems.apputil.pool.DbPool.getFreeConnection(DbPool.java:52) 大牛--文杰:(328897842) 16:45:32 拿不到 连接数 可能是 哪里的 代码 没释放 连接 但是 我看了下 基本 的 finally 都 有 关闭 连接 。。 大牛--文杰:(328897842) 16:45:53 所以 我 找不到 这个 错误 是哪里 报的 后台 也是 时有时无的 出现 求大神!!!!!!!!!!
fw347969680 2013-01-15
  • 打赏
  • 举报
回复
围观大神。
tianfang 2013-01-15
  • 打赏
  • 举报
回复
和上面说的一样,最大可能就是数据库连接没有释放。 在自己的开发环境,打开数据库的连接监控,模拟一次调用,看看是否是连接数增加后下降?
wenjie4892543 2013-01-14
  • 打赏
  • 举报
回复
引用 楼主 wenjie4892543 的回复:
没有可用的数据库连接 这个问题如何解决 !!! 程序部署在别的公司的服务器上,,运行一段时间后就出现这个问题,重启服务又可以了,,,但程序运行一段时间又出现了!!急急!!!求牛人解决下。。。。。。。。。
第一种方式,我应该如何去操作。。不是很了解 ,,有点文档资料没????
rome_wu 2013-01-07
  • 打赏
  • 举报
回复
有可能程序调用数据库的时候没有释放连接导致!
yjflinchong 2013-01-07
  • 打赏
  • 举报
回复
连接池满了。 释放掉没? 还是打开的连接 太少了?
snow-is-my-Love 2013-01-07
  • 打赏
  • 举报
回复
1.没释放连接池,一直被占用 2.连接池设置的小了,真的是连接池数目满了。
hhhddd123 2013-01-07
  • 打赏
  • 举报
回复
引用 1 楼 ldh911 的回复:
基本上说明有链接泄漏,存在程序Bug,没有释放连接。 排查方式两种: 1、生产环境上,出现无可用连接后,在数据库端检查所有会话最后执行的SQL语句是啥,基本可以定位到模块级别; 2、测试环境上,数据库可用连接和应用的连接池设置很小,比如10个,然后做稳定性测试,检查问题出在哪里。 推荐第一种方式,但需要提前先用工具连上数据库,否则等连接耗尽,你也没法连上数……
正解,顶个 如果用的是hibernate会自动帮你关闭 如果是自己手动连接每次用完必须关闭,肯定是某个地方忘记关闭了
已经存在 2013-01-07
  • 打赏
  • 举报
回复
数据库连接被占用满了?数据库没关?
熊猫大虾 2012-12-28
  • 打赏
  • 举报
回复
引用 楼主 wenjie4892543 的回复:
没有可用的数据库连接 这个问题如何解决 !!! 程序部署在别的公司的服务器上,,运行一段时间后就出现这个问题,重启服务又可以了,,,但程序运行一段时间又出现了!!急急!!!求牛人解决下。。。。。。。。。
运行一段时间后就出现这个问题 具体是什么问题?
笑莫问 2012-12-28
  • 打赏
  • 举报
回复
一楼大神,围观!
悲催的程序猿 2012-12-28
  • 打赏
  • 举报
回复
圍觀!有點不明白LZ的意思。
李陵少 2012-12-28
  • 打赏
  • 举报
回复
高手呀,围观下
加载更多回复(1)

67,541

社区成员

发帖
与我相关
我的任务
社区描述
J2EE只是Java企业应用。我们需要一个跨J2SE/WEB/EJB的微容器,保护我们的业务核心组件(中间件),以延续它的生命力,而不是依赖J2SE/J2EE版本。
社区管理员
  • Java EE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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