开发者社区> 问答> 正文

mybatis自带连接池链接过期问题?报错

自带连接池配置的配置如下,明明配置了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> 

展开
收起
爱吃鱼的程序员 2020-06-08 13:46:46 744 0
1 条回答
写回答
取消 提交回答
  • https://developer.aliyun.com/profile/5yerqm5bn5yqg?spm=a2c6h.12873639.0.0.6eae304abcjaIB

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

    每次借之前检查一下。

    引用来自“guangguangguang”的评论

    每次借之前检查一下。是不是你设的这个36000的问题。设成0试试呢

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

    2020-06-08 13:47:05
    赞同 展开评论 打赏
问答排行榜
最热
最新

相关电子书

更多
Java Spring Boot开发实战系列课程【第6讲】:Spring Boot 2.0实战MyBatis与优化(Java面试题) 立即下载
低代码开发师(初级)实战教程 立即下载
阿里巴巴DevOps 最佳实践手册 立即下载