论坛首页 Java企业应用论坛

proxool连接池

浏览 8586 次
精华帖 (0) :: 良好帖 (0) :: 新手帖 (0) :: 隐藏帖 (0)
作者 正文
   发表时间:2011-01-18   最后修改:2011-01-18
最近公司在做的一个项目是分布式的,分为一个数据库服务器,和多个应用服务,所有的应用服务部署后都共享这一台数据服务器中的数据,所以部署后,每个应用服务都有一个连接池,通过连接池访问数据服务器上数据库中的数据,连接池采用proxool,但现在不稳定,会出现些许异常,有时候下面的某一个应用服务从连接池中获取数据连接connection就会发生这样的异常,我调试调了好久,总不能调好,不知道何原因,
其异常信息是:Prototype com.mysql.jdbc.exceptions.jdbc4.MySQLNonTransientConnectionException: Data source rejected establishment of connection,  message from server: "Too many connections".
请牛人指点指点.下面是我连接池的具体配置:
<?xml version="1.0" encoding="UTF-8"?>
<something-else-entirely>
<proxool>
<alias>BAASPool</alias>
<driver-url>
jdbc:mysql://10.71.136.159:3306/baas?useUnicode=true&amp;characterEncoding=utf8
</driver-url>
<driver-class>com.mysql.jdbc.Driver</driver-class>
<driver-properties>
<property name="user" value="root" />
<property name="password" value="toor" />
</driver-properties>
<minimum-connection-count>20</minimum-connection-count>
<maximum-connection-count>100</maximum-connection-count>
<maximum-active-time>300000</maximum-active-time>
<maximum-connection-lifetime>
10800000
</maximum-connection-lifetime>
<simultaneous-build-throttle>80</simultaneous-build-throttle>
<house-keeping-sleep-time>15000</house-keeping-sleep-time>
<house-keeping-test-sql>
select CURRENT_DATE
</house-keeping-test-sql>
<statistics>1m,15m,1d</statistics>
<statistics-log-level>DEBUG</statistics-log-level>
</proxool>
</something-else-entirely>
   发表时间:2011-01-18  
renjy1123 写道
最近公司在做的一个项目是分布式的,分为一个数据库服务器,和多个应用服务,所有的应用服务部署后都共享这一台数据服务器中的数据,所以部署后,每个应用服务都有一个连接池,通过连接池访问数据服务器上数据库中的数据,连接池采用proxool,但现在不稳定,会出现些许异常,有时候下面的某一个应用服务从连接池中获取数据连接connection就会发生这样的异常,我调试调了好久,总不能调好,不知道何原因,
其异常信息是:Prototype com.mysql.jdbc.exceptions.jdbc4.MySQLNonTransientConnectionException: Data source rejected establishment of connection,  message from server: "Too many connections".
请牛人指点指点.下面是我连接池的具体配置:
<?xml version="1.0" encoding="UTF-8"?>
<something-else-entirely>
<proxool>
<alias>BAASPool</alias>
<driver-url>
jdbc:mysql://10.71.136.159:3306/baas?useUnicode=true&amp;characterEncoding=utf8
</driver-url>
<driver-class>com.mysql.jdbc.Driver</driver-class>
<driver-properties>
<property name="user" value="root" />
<property name="password" value="toor" />
</driver-properties>
<minimum-connection-count>20</minimum-connection-count>
<maximum-connection-count>100</maximum-connection-count>
<maximum-active-time>300000</maximum-active-time>
<maximum-connection-lifetime>
10800000
</maximum-connection-lifetime>
<simultaneous-build-throttle>80</simultaneous-build-throttle>
<house-keeping-sleep-time>15000</house-keeping-sleep-time>
<house-keeping-test-sql>
select CURRENT_DATE
</house-keeping-test-sql>
<statistics>1m,15m,1d</statistics>
<statistics-log-level>DEBUG</statistics-log-level>
</proxool>
</something-else-entirely>

你多个服务器是做的什么?做的集群吗?
0 请登录后投票
   发表时间:2011-01-18  
mysql 默认最大连接数是100,
你的连接池在应用端,每个应用最少20个,最多100个,而且最大活动时间是300000,
所以某个时候会产生mysql确实没有连接可分配。
应用端连接池设置吧,适当减小
0 请登录后投票
   发表时间:2011-01-18  
maximum-active-time 缺省为 5 分钟, 其含义是一个线程持有一个连接的最长时间,而不管这个连接是否处于 active 状态, 并且如果线程的持有时间超过这个时间的之后会自动清除掉这个连接. 其单位为毫秒(ms).
0 请登录后投票
   发表时间:2011-01-19  
<minimum-connection-count>20</minimum-connection-count>
服务器启动的时候就加载20个,太多了,5个就够了,不够的时候再建连接,
0 请登录后投票
   发表时间:2011-01-19  
没用过mysql。不过从我使用Oracle的经验来看最大连接数是有限制的。
我们的Oracle曾经从200调整到500
0 请登录后投票
   发表时间:2011-01-19  
message from server: "Too many connections".
这么明显的日志,服务器连接不够用了
0 请登录后投票
   发表时间:2011-01-20  
用完记得要关闭,不然你分到1000还是Too many connections.楼主检查代码吧...
0 请登录后投票
   发表时间:2011-01-20  
很明细连接数超了
0 请登录后投票
   发表时间:2011-01-20  
对头..楼上的顶....连接池取出来用了立即关闭吧!
0 请登录后投票
论坛首页 Java企业应用版

跳转论坛:
Global site tag (gtag.js) - Google Analytics