没有可用的数据库连接 这个问题如何解决 !!! 没有可用的数据库连接 这个问题如何解决 !!! 程序部署在别的公司的服务器上,,运行一段时间后就出现这个问题,重启服务又可以了,,,但程序运行一段时间又出现了!!急急!!!求牛人解决下 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 基本上说明有链接泄漏,存在程序Bug,没有释放连接。排查方式两种:1、生产环境上,出现无可用连接后,在数据库端检查所有会话最后执行的SQL语句是啥,基本可以定位到模块级别;2、测试环境上,数据库可用连接和应用的连接池设置很小,比如10个,然后做稳定性测试,检查问题出在哪里。推荐第一种方式,但需要提前先用工具连上数据库,否则等连接耗尽,你也没法连上数据库去排查问题了。 正解,顶个如果用的是hibernate会自动帮你关闭如果是自己手动连接每次用完必须关闭,肯定是某个地方忘记关闭了 。。 报错 的 地方 不确定 。。 我报错 后 我 如何 知道 是 哪里的 连接 没 释放 错误: 没有可用的连接数大牛--文杰:(328897842) 16:44:21 debug 不用说了。 大牛--文杰:(328897842) 16:44:49java.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 所以 我 找不到 这个 错误 是哪里 报的 后台 也是 时有时无的 出现 求大神!!!!!!!!!! 你还真够笨的,楼主都说了“没有可用的数据库连接”啊,就好比你的jdbc配置不对一个吊样 他会报这个错,证明你确实有没有关闭的资源,我不清楚你是用什么做的dao层,但既然你说finall都关闭了,我给你的建议:会不会是你try里多次会话用的是不同的session, 解决:1:如果你用的jdbc直接连,建议修改成数据库联接池。2:如果你用的数据库联接池,那么你可以放大数据库默认的连接数,只有基数大了你才可以修改你的配置文件中的连接数。最后还有建议,最好还要检查一下代码是不是有获取连接没有释放或是获取连接的业务过多而执行较慢,释放的速度赶不上被获取的速度,所以就会造成运行一段时间后不够用。 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,不用关闭,也不会出现你说的那种情况。 [引用 10 楼 scottxzj 的回复:]1.没释放连接池,一直被占用 2.连接池设置的小了,真的是连接池数目满了顶 一下 程序出的问题 struts <html:select> 动态获得数据怎么会提交的时候有时出错 想请大家出个注意~明天就要上报本科毕业论文的选题了~想写个关于DAO或者工厂模式的 对web中应用j2ee的理解 急 代码出错~~~~ 这世界太疯狂了!关于tomcat和resin! 生成excel out of memory 问题 struts开发实践—读写xml实例 小弟刚学java与struts,对一小段代码不清楚,还请高人指点,问题会者不难,在线等,决解马上解贴 发布CMPBean时出现问题,怎么回事? Java获取USB数字证书信息的问题 acegi 下消息传输后的乱码问题
1、生产环境上,出现无可用连接后,在数据库端检查所有会话最后执行的SQL语句是啥,基本可以定位到模块级别;
2、测试环境上,数据库可用连接和应用的连接池设置很小,比如10个,然后做稳定性测试,检查问题出在哪里。推荐第一种方式,但需要提前先用工具连上数据库,否则等连接耗尽,你也没法连上数据库去排查问题了。
如果用的是hibernate会自动帮你关闭
如果是自己手动连接每次用完必须关闭,肯定是某个地方忘记关闭了
大牛--文杰:(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
所以 我 找不到 这个 错误 是哪里 报的 后台 也是 时有时无的 出现 求大神!!!!!!!!!!
1:如果你用的jdbc直接连,建议修改成数据库联接池。
2:如果你用的数据库联接池,那么你可以放大数据库默认的连接数,只有基数大了你才可以修改你的配置文件中的连接数。最后还有建议,最好还要检查一下代码是不是有获取连接没有释放或是获取连接的业务过多而执行较慢,释放的速度赶不上被获取的速度,所以就会造成运行一段时间后不够用。
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,不用关闭,也不会出现你说的那种情况。
1.没释放连接池,一直被占用 2.连接池设置的小了,真的是连接池数目满了
顶 一下