【发布时间】:2016-09-21 06:40:41
【问题描述】:
在我的 Spring Boot 1.4 应用程序中,我使用 JDBC 与本地 MySQL 通信,具有以下属性 -
- spring.datasource.test-while-idle=true
- spring.datasource.test-on-borrow=true
- spring.datasource.validation-query=SELECT 1
- spring.datasource.initial-size=50
- spring.datasource.max-active=100
- spring.datasource.max-idle=50
- spring.datasource.min-idle=50
- spring.datasource.initial-size=50
- spring.datasource.tomcat.max-active=100
- spring.datasource.tomcat.max-idle=50
- spring.datasource.tomcat.min-idle=50
- spring.datasource.tomcat.initial-size=50
我知道最后四行是重复的,但我保留了这些以尝试任何组合是否有效。 Spring Boot 文档说所有数据源 tomcat 属性都应在 spring.datasource.tomcat.* 下。另一方面,前三行是在 SpringBoot 1.3 和 1.4 上工作的。因此,期望连接池参数也可以工作。
启动应用程序后,我在 VisualVM 中检查了它的所有线程。计数约为 20,远小于我设置的 50。在使用 Spring Data 存储库触发 1000 个与 MySQL 对话的 REST 调用后,我看到线程数增加到 50 以上。但是,一旦 REST 调用结束并过一会儿,线程数就会下降到 ~30。我看到大约 10 个工作线程保持空闲状态。
那么,我的问题是,你将如何检测 Spring Boot 应用程序线程池中的 JDBC 连接池线程?
另外,属性配置有什么问题?为什么没有创建预期线程数的 JDBC 连接池?
【问题讨论】:
标签: tomcat jdbc spring-boot connection-pooling visualvm