zoukankan      html  css  js  c++  java
  • com.alibaba.druid.pool.GetConnectionTimeoutException: wait millis 6000, active 20, maxActive 20

    异常现象

    com.alibaba.druid.pool.GetConnectionTimeoutException: wait millis 6000, active 20, maxActive 20, creating 0

    异常描述

    从异常现象中 com.alibaba.druid.pool.GetConnectionTimeoutException 可以看到错误信息提示是阿里巴巴Druid数据库连接池的数据库获取连接超时异常原因,具体为 active 20,活动的连接数为20, maxActive 20, 最大的连接数为20, 意思很明显,活动的连接数与最大连接数相同,连接用完了,在等待(我写的配置是6000毫秒即6秒)新的连接,却没有新连接可用,然后超时了。

    解决方案

    在配置中添加如下Druid的配置即可:(我的是properties配置,所以我选择的是第一种)

    1、properties配置文件中:

    #druid recycle Druid的连接回收机制
    #超过时间限制是否回收
    spring.datasource.druid.removeAbandoned = true
    #超时时间;单位为秒。180秒=3分钟
    spring.datasource.druid.removeAbandonedTimeout = 180
    #关闭abanded连接时输出错误日志
    spring.datasource.druid.logAbandoned = true

    2、xml配置文件中:

    <!-- 超过时间限制是否回收 -->  
    <property name="removeAbandoned" value="true" />  
    <!-- 超时时间;单位为秒。180秒=3分钟 -->  
    <property name="removeAbandonedTimeout" value="180" />  
    <!-- 关闭abanded连接时输出错误日志 -->  
    <property name="logAbandoned" value="true" />

    添加如上配置还可以很清楚地看到是在哪里打开的连接未关闭一直在占有。但是会影响程序的性能。

    注意事项

    此配置项会影响性能,只在排查的时候打开,系统运行时最好关闭。 

  • 相关阅读:
    go语言从零学起(三) -- chat实现的思考
    go语言从零学起(二)--list循环删除元素(转载)
    go语言从零学起(一) -- 文档教程篇
    Spring框架事务支持模型的优势
    Thymeleaf
    社保到底是多交好,还是少交好?
    使用静态工厂方法而不是构造器
    EJB、RMI、XMLRPC、Hessian、Thrift 、Protobuf
    MySQL存储过程
    MySQL常用功能语句分类总结
  • 原文地址:https://www.cnblogs.com/itboys/p/14009268.html
Copyright © 2011-2022 走看看