mybatis自带连接池链接过期问题

UWl1cmY 发布于 2017/06/12 15:59
阅读 908
收藏 0

自带连接池配置的配置如下,明明配置了poolPingConnectionsNotUsedFor校验链接是否正常,还是有时候会报错:

The last packet successfully received from the server was 92,942,346 milliseconds ago.  The last packet sent successfully to the server was 0 milliseconds ago

Cause:com.mysql.jdbc.exceptions.jdbc4.CommunicationsException: Communications link failure

  <!--数据源连接池配置  -->

   <environment id="development">  
            <transactionManager type="JDBC"/>  
            <dataSource type="POOLED">  
                <property name="driver" value="${jdbc.driver}"/>  
                <property name="url" value="${jdbc.url}"/>  
                <property name="username" value="${jdbc.username}"/>  
                <property name="password" value="${jdbc.password}"/> 
                <property name="poolPingEnabled" value="true"/> 
                <property name="poolPingQuery" value="select 1"/>
                <property name="poolPingConnectionsNotUsedFor" value="3600000"/>
                <property name="poolMaximumActiveConnections" value="60"/> <!-- 在任意时间可以存在的活动(也就是正在使用)连接数量,默认值:10 -->
                <property name="poolMaximumCheckoutTime" value="5000"/> <!-- 在被强制返回之前,池中连接被检出(checked out)时间,默认值:20000 毫秒(即 20 秒) --> 
                <property name="poolTimeToWait" value="5000"/> 
                <property name="poolMaximumIdleConnections" value="5"/> <!--  任意时间可能存在的空闲连接数。 -->
            </dataSource>  
        </environment> 

加载中
0
UWl1cmY
UWl1cmY

读了几天源码毫无收获,最后的解决方案是弃用mybatis自带的连接池,mybatis直接注册使用第三方数据源DBCP,加上一些缓存框架,就完美解决了。

0
g
guangguangguang
每次借之前检查一下。
0
UWl1cmY
UWl1cmY

引用来自“guangguangguang”的评论

每次借之前检查一下。

     <property name="poolPingEnabled" value="true"/> 
      <property name="poolPingQuery" value="select 1"/>
      <property name="poolPingConnectionsNotUsedFor" value="3600000"/>

这就是检查链接有效性的设置,并没有用。

g
guangguangguang
是不是你设的这个36000的问题。设成0试试呢
0
说出来你可能不信
说出来你可能不信

顶一下,遇到同样的问题,当连接池执行校验sql是比如select  1 。会一直卡在socket.read0()

OSCHINA
登录后可查看更多优质内容
返回顶部
顶部