关于java通过proxool连接数据库多数据源的问题
2014-12-04 10:33
363 查看
公司一直是处理大数据这个方面,对数据库操作频繁在所难免,关于数据库连接方式换了很多,各有优缺点,具体就不在这解释了。
之前一直在用C3P0创建数据源,但C3P0占用资源不能及时的释放,导致数据库连接数经常抛出警告信息(被锁死),虽然不影响运行,但这样下去也不是办法,所以决定换个数据源方式,通过proxool创建数据源。
其他配置不许改变,只是需要改下配置数据源信息即可
修改后运行没有问题,但有的项目模块存储需要创建多个数据源的情况,问题就此产生了......
配置两个数据源后,程序运行总是识别第一个加载的数据源,第二个无法加载成功(但不报错)
查了好多资料都没有这方面的详细说法,没办法只能看源代码了和运行日志
在才发现proxool识别不同的数据源是根据别名来区别的,由于人比较懒,就把别名省略了,哎、
经实践证明,在配置信息上加上别名就解决了多个数据源的问题
这个问题解决了,有发现了一个新的问题,在对系统进行压力测试时,多个线程同时操作数据库,过一段时间会出现如下问题
We are already in the process of making 11 connections and the number of simultaneous builds has been throttled to 10
可以说是线程太多造成的(连接数不能及时释放),但这不是根本原因,现在正在测试阶段,后续会更新......
之前一直在用C3P0创建数据源,但C3P0占用资源不能及时的释放,导致数据库连接数经常抛出警告信息(被锁死),虽然不影响运行,但这样下去也不是办法,所以决定换个数据源方式,通过proxool创建数据源。
其他配置不许改变,只是需要改下配置数据源信息即可
<span style="font-size:18px;"><bean id="XXX" class="org.logicalcobwebs.proxool.ProxoolDataSource"> <span style="color:#ff0000;"><!-- <property name="alias" value="XXX"></property> --></span> <property name="driver" value="oracle.jdbc.driver.OracleDriver"></property> <property name="driverUrl" value="jdbc:oracle:thin:@IP:1521:ORCL"></property> <property name="user" value="XXX"></property> <property name="password" value="XXX"></property> <!-- <property name="houseKeepingSleepTime" value="90000"></property> --> <property name="prototypeCount" value="5"></property> <property name="maximumConnectionCount" value="100"></property> <property name="minimumConnectionCount" value="10"></property> <property name="trace" value="true"></property> <property name="verbose" value="true"></property> </bean></span>引用的JAR:
<span style="white-space:pre"> </span><dependency> <groupId>proxool</groupId> <artifactId>proxool</artifactId> <version>0.9.1</version> </dependency> <dependency> <groupId>proxool</groupId> <artifactId>proxool-cglib</artifactId> <version>0.9.1</version> </dependency>
修改后运行没有问题,但有的项目模块存储需要创建多个数据源的情况,问题就此产生了......
配置两个数据源后,程序运行总是识别第一个加载的数据源,第二个无法加载成功(但不报错)
查了好多资料都没有这方面的详细说法,没办法只能看源代码了和运行日志
在才发现proxool识别不同的数据源是根据别名来区别的,由于人比较懒,就把别名省略了,哎、
[2014-12-04 10:29:59] - INFO: Shutting down 'null' pool immediately [Shutdown Hook] [2014-12-04 10:29:59] - INFO: Stopping Prototyper thread [2014-12-04 10:29:59] - INFO: Stopping HouseKeeper thread
<pre name="code" class="html"><strong>如果加上别名就变成这样了</strong>
[2014-12-04 10:29:59] - INFO: Shutting down '别名' pool immediately [Shutdown Hook] [2014-12-04 10:29:59] - INFO: Stopping Prototyper thread [2014-12-04 10:29:59] - INFO: Stopping HouseKeeper thread
经实践证明,在配置信息上加上别名就解决了多个数据源的问题
这个问题解决了,有发现了一个新的问题,在对系统进行压力测试时,多个线程同时操作数据库,过一段时间会出现如下问题
We are already in the process of making 11 connections and the number of simultaneous builds has been throttled to 10
可以说是线程太多造成的(连接数不能及时释放),但这不是根本原因,现在正在测试阶段,后续会更新......
相关文章推荐
- 关于Java图形化连接微软SQL server(含2005,2008,2012等)数据库的问题
- 关于java数据库连接的问题
- 关于java连接redis数据库报: Connection refused: connect 的问题
- 关于oracle设置不活动自动断开连接导致java访问数据库时发生异常的问题
- Windows下,关于Oracle新建数据库之后,无法通过 / as sysdba 连接到orcl 问题
- 关于打开现有项目时数据库连接配置遇到的问题 连接字符串中的数据源值指定未安装的SQL Server的实例。要解决此问题,可选择安装匹配的SQL Server实例或修改连接字符串中的数据源值
- 关于Java web中servlet连接数据库的一个细节问题
- JAVA连接数据库不用设数据源问题
- 关于javaweb连接数据库无任何报错信息的问题
- 学习java(二)-----关于jdbc连接的"擦屁股"问题
- 通过连接池连接数据库--JAVA
- Struts通过数据源连接数据库
- 关于插件项目中连接数据库的问题
- java 连接 mysql 数据库"javax.servlet.ServletException: org.gjt.mm.mysql.Driver"是什么问题,怎样解决?
- 关于struts 连接数据库的问题
- 关于在java中连接MS SQL Server 2005 JDBC的问题及解决办法
- 通过VS中的数据源选择对话框简单实现数据库连接配置
- 关于水晶报表的自定义连接数据源问题
- 关于数据库技术的连接查询问题
- WebSphere使用数据源连接数据库的事务问题