Could not get JDBC Connection; nested exception is com.alibaba.druid.pool.GetConnectionTimeoutException: wait millis 8000, active 300, maxActive 300, creating 0 用的是druid + mybatis 在并发条件下 数据库报错 查询数据库 300个连接有200多sleep的 但是还是会拿新的连接 不知道 这个应该怎么配置
原提问者GitHub用户yihuiyu
看起来是在并发条件下使用 JDBC 连接池时出现了连接池耗尽的异常。这种情况通常是由于连接池中的连接被过度消耗,导致连接不足而引发的异常。
为了解决这个问题,可以考虑以下几个方面:
调整连接池的大小。如果连接池中的连接数不足,可以考虑增加连接池的大小,以满足更高的并发访问需求。请注意,增加连接池的大小也会增加系统的资源消耗,需要谨慎操作。
调整连接的超时时间。如果连接池中的连接被占用时间过长,可以考虑缩短连接的超时时间,以便及时回收连接并释放资源。请注意,缩短连接的超时时间可能会增加连接池的负担,需要根据实际情况进行调整。
检查数据库连接的配置。如果数据库连接的配置存在问题,例如连接池中的连接数过少、连接超时时间过长等,都可能会导致连接池耗尽。可以检查连接池配置和数据库配置,确保其符合实际需求。
优化代码逻辑。如果代码逻辑存在问题,例如频繁创建和关闭连接、长时间占用连接等,都可能会导致连接池耗尽。可以优化代码逻辑,减少对连接池的消耗,提高连接池的利用率。
根据您提供的信息,您在使用Druid连接数据库时遇到了问题。该问题可能是由于您在Druid的配置文件中没有正确配置数据库连接驱动导致的。具体来说,您在Druid的配置文件中使用了错误的驱动名称,导致Druid无法正确连接数据库。
为了解决这个问题,您可以考虑在Druid的配置文件中正确配置数据库连接驱动。
你遇到的问题是无法获取 JDBC 连接,报错信息中显示了 com.alibaba.druid.pool.GetConnectionTimeoutException
异常。根据异常信息可以分析出,在并发条件下,数据库连接数达到 300 个后,有200多个连接处于 sleep 状态,但仍然会创建新的连接。
这种情况通常是由于连接池配置不合理引起的。你可以尝试调整以下几个参数来优化连接池的配置:
maxActive
:该参数定义了最大活动连接数,即连接池中最多同时存在的连接数量。你可以根据系统负载和数据库性能来调整该值,确保它能够满足并发需求,但不要设置过高以至于超出数据库的最大连接数限制。
maxWait
:该参数定义了获取连接时的最大等待时间,单位为毫秒。如果连接池已经达到最大活动连接数,并且所有连接都处于忙碌状态,那么在此时间内如果没有可用连接,将会抛出超时异常。你可以适当增加该值,使得等待时间更长,但也要注意合理设置,以免长时间的等待影响系统性能。
minIdle
:该参数定义了连接池中最小空闲连接数。当连接池中的连接数少于该值时,连接池会自动创建新的连接。你可以适当增加该值,确保连接池中始终有足够的连接可用。
你可以在 Druid 配置文件中找到这些参数进行调整。一般来说,Druid 的配置文件是以 druid.properties
或 druid.yml
的形式存在。根据你的具体配置方式,修改对应的参数值,并重新启动应用程序,观察是否能够解决连接获取问题。
如果问题仍然存在,请提供更多关于你当前的 Druid 和 MyBatis 配置的细节以及数据库的相关信息,我将尽力帮助你找到解决方案。
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。