开发者社区> 问答> 正文

获取连接超时

帮忙看下,谢谢。

数据库运行正常,但是突然出现了获取连接超时的异常,异常堆栈信息:

Caused by: com.alibaba.druid.pool.GetConnectionTimeoutException: wait millis 1000, active 5, maxActive 200, creating 1 at com.alibaba.druid.pool.DruidDataSource.getConnectionInternal(DruidDataSource.java:1422) at com.alibaba.druid.pool.DruidDataSource.getConnectionDirect(DruidDataSource.java:1241) at com.alibaba.druid.pool.DruidDataSource.getConnection(DruidDataSource.java:1221) at com.alibaba.druid.pool.DruidDataSource.getConnection(DruidDataSource.java:1211) at com.alibaba.druid.pool.DruidDataSource.getConnection(DruidDataSource.java:105) at org.springframework.jdbc.datasource.DataSourceUtils.doGetConnection(DataSourceUtils.java:111) at org.springframework.jdbc.datasource.DataSourceUtils.getConnection(DataSourceUtils.java:77)

原提问者GitHub用户mychao

展开
收起
山海行 2023-07-05 20:39:20 186 0
4 条回答
写回答
取消 提交回答
  • 根据提供的信息,出现获取连接超时的异常是由于Druid连接池无法获取到可用的连接,并且已经超过了maxWait设置的等待时间。根据回答者给出的建议,您可以尝试将maxWait参数调大一些,比如将其设置为15000毫秒(15秒)。这样可以增加等待连接的时间,以便连接池有更多的机会获取到可用的连接。

    您可以在Druid连接池的配置文件中找到maxWait参数,并将其值修改为15000。具体位置可能因您的代码而异,通常可以在配置文件或者代码中找到类似以下部分的配置项:

    # 其他配置项...
    maxWait=15000
    

    通过将maxWait增加到一个合理的值,连接池在获取连接时将会有更长的等待时间,从而减少获取连接超时的概率。

    请注意,在调整配置之前,您也可以考虑检查应用程序是否正确地关闭了数据库连接,以避免连接泄露。另外,请确保数据库的最大连接数足够满足应用程序的需求。

    2023-07-30 13:57:06
    赞同 展开评论 打赏
  • 北京阿里云ACE会长

    这个异常是由于Druid连接池无法获取到可用的连接,并且已经超过了maxWait设置的等待时间,从而导致连接获取超时。根据异常信息,当前连接池中有5个活跃连接,最大活跃连接数为200,正在创建1个新的连接,等待时间为1000毫秒,但是没有可用的连接。

    有几个可能的原因导致连接池无法获取到可用的连接:

    连接泄露:应用程序没有正确地释放连接,导致连接池中的连接被占用,无法分配给其他请求。您可以检查应用程序中是否有未正确关闭的连接,比如没有在finally块中关闭连接。

    连接池配置不合理:您的连接池配置可能不合理,导致连接池无法满足应用程序的需求。例如,maxActive设置得太小,无法满足高并发请求;maxWait设置得太小,无法容忍短时间内的高峰请求;或者其他配置项设置得不合理。您可以检查连接池的配置参数是否合理,并根据需要进行调整。

    数据库连接资源不足:数据库连接池中的连接数量受限于数据库的最大连接数。如果数据库连接数已经达到了上限,连接池就无法再获取到新的连接。您可以检查数据库的连接数是否达到了上限,并根据需要调整数据库的配置。

    2023-07-30 13:46:06
    赞同 展开评论 打赏
  • 由于DruidDataSource获取连接时超时导致的。DruidDataSource是Spring框架中默认使用的数据库连接池,它通过Druid API来实现连接池管理。获取连接超时是由于连接池中的连接数量已满,或者等待获取连接的线程队列过长导致的。

    2023-07-11 10:11:52
    赞同 展开评论 打赏
  • maxWait太小了, 改成15000吧

    原回答者GitHub用户wendal

    2023-07-06 11:52:33
    赞同 展开评论 打赏
问答分类:
问答地址:
问答排行榜
最热
最新

相关电子书

更多
低代码开发师(初级)实战教程 立即下载
冬季实战营第三期:MySQL数据库进阶实战 立即下载
阿里巴巴DevOps 最佳实践手册 立即下载