0 0

proxool连接池链接不能自动释放的问题5

项目中使用的是mybatis+proxool,数据库是mysql。在进行压力测试的时候发现。proxool获得链接之后不会释放掉。会一直保持在连接池中。
proxool配置如下:
<property name="prototypeCount" value="5" />
		<!--proxool自动侦察各个连接状态的时间间隔(毫秒),侦察到空闲的连接就马上回收,超时的销毁 默认30秒-->  
		<property name="houseKeepingSleepTime" value="30000" />
		<!--最小连接数(默认5个) -->
		<property name="minimumConnectionCount" value="5" />
		<!--最大连接数(默认15个),超过了这个连接数,再有请求时,就排在队列中等候,最大的等待请求数由maximum-new-connections决定 -->
		<property name="maximumConnectionCount" value="200" />
		<!-- 如果侦察线程发现闲置连接,则会使用这个SQL语句来对这些连接进行检查 -->
		<property name="houseKeepingTestSql" value="select CURRENT_DATE" />
		<!-- 最大并发连接数-->
		<property name="simultaneousBuildThrottle" value="50" />
<!-- 活动时间-->
		<property name="maximumActiveTime" value="300000" />


项目刚启动的时候我查看了下数据库链接就只有几个。我正常操作系统链接数不会发生太大的变化。。如果我同时50个并发访问。就问增加几个连接。。诡异的是这个链接一直不会被销毁。。会一直保持在。。我看了数据库链接的确是按照我设置houseKeepingSleepTime来进行刷新。链接时间一旦过了30秒就会重置为0。。但是为毛一直不销毁啊。。按理说。如果这个链接超过了maximumActiveTime。然后houseKeep监测到超时就应该销毁啊。。但是链接数会始终保持在那。。不会销毁。。也就是说。如果我同时500人访问。。链接数会打到最大值250个。。然后就会一直保持这个链接不会销毁。。我想问下这到底是为什么。难道是我哪个地方配置的不对?其中houseKeepingSleepTime在springmvc配置会出错。所以我新建一个类。继承了ProxoolDataSource。然后就重写了一下houseKeepingSleepTime的get和set方法。。这应该没影响吧。有知道的朋友告诉我一声!
2013年9月10日 21:22

2个答案 按时间排序 按投票排序

0 0

没有设置maximum-connection-lifetime的值吧,这个值默认是4小时(4 * 60 * 60 * 1000ms)。如果配置文件中没设置,就要从链接被创建开始,等待4个小时后才销毁。

2015年1月21日 14:16
0 0

这个应该和mysql配置有关系
看一下show variables like '%timeout%'
interactive_timeout和wait_timeout设置值时要注意

2013年9月11日 10:20

相关推荐

Global site tag (gtag.js) - Google Analytics