对同一个接口调用50次,发现druidDatasource获取的连接是同一个,这个是什么问题?
下面是配置:
原提问者GitHub用户lit2430
接池是一种用于管理和维护数据库连接的技术,它可以提高应用程序的性能和可靠性,避免频繁地创建和关闭数据库连接。一般来说,连接池会维护一定数量的数据库连接,这些连接可以被多个线程共享使用。每个线程在使用连接池时,可以从连接池中获取一个空闲的连接,并在使用完毕后将连接释放回连接池中。
根据您提供的信息,连接池中有5个核心线程连接,但在使用连接池时总是获取同一个连接,这可能是因为以下原因:
连接池中只有一个连接可用:连接池中的5个核心线程连接可能都已经被其他线程占用,导致连接池中只有一个连接可用。在这种情况下,每次从连接池中获取连接时都会获取到同一个连接。
连接池的最大连接数等于核心连接数:如果连接池的最大连接数等于核心连接数,那么连接池在初始化时就会创建5个连接,并将这些连接作为核心连接。在这种情况下,连接池中的所有连接都是核心连接,每次从连接池中获取连接时都会获取到同一个连接。
获取连接的方式不正确:如果在使用连接池时,每次都创建一个新的连接,而不是从连接池中获取连接,那么每次获取的连接都是新创建的连接,这可能会导致多个线程获取到不同的连接,而不是同一个连接。
连接池初始化好了之后,会放在一个DruidConnectionHolder[] connections数组里面,每个getConnection的时候,都是取这个数组的最后一个元素。所以你测试的场景,每次都是同一个连接。
原回答者GitHub用户fengzhizi2022
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。