2016-09-21 74 views
0

我已经在我的春节,启动1.4应用程序中使用JDBC交谈本地MySQL以下属性 -如何查找在SpringBoot应用程序中创建的JDBC连接池线程?

  • spring.datasource.test,而空闲=真
  • spring.datasource.test上,借=真
  • spring.datasource.validation查询= SELECT 1
  • spring.datasource.initial尺寸= 50
  • spring.datasource.max活性= 100
  • spring.datasource.max空闲= 50
  • spring.datasource.min空闲= 50
  • spring.datasource.initial尺寸= 50
  • spring.datasource.tomcat.max活性= 100
  • spring.datasource.tomcat.max空闲= 50
  • spring.datasource.tomcat.min空闲= 50
  • spring.datasource.tomcat.initial尺寸= 50

我知道最后四行是重复的,但我一直对那些尝试一下,如果任何组合工作。 Spring Boot文档说所有数据源tomcat属性都应该在spring.datasource.tomcat。*下。另一方面,前三条线正在处理SpringBoot 1.3和1.4。所以,期望是连接池参数也可以工作。

启动应用程序后,我在VisualVM中检查了它的所有线程。计数是〜20,比我设定的小得多。在发布说1000个使用Spring Data存储库与MySQL交谈的REST调用之后,我看到线程数增加到50以上。但是,一旦REST调用结束并稍后,线程数就会减少到30。我看到〜10个工作线程闲置。

因此,我的查询是,您将如何检测Spring Boot应用程序线程池中的JDBC连接池线程?

另外,属性配置有什么问题?为什么预计线程数的JDBC连接池没有被创建?

回答

1

连接池不会创建线程(或者:它可能为内务管理创建1或2,但就是这样)。连接池创建(并跟踪)到数据库的JDBC连接,以便在您的应用程序请求时发送。池中不需要每个连接都有一个线程。您看到的大多数线程都来自Java本身(例如垃圾收集等)以及处理HTTP连接所需的线程(可能会在负载下增加并在空闲时减少)以及应用程序启动的任何其他线程码。

+0

谢谢!我只看到了Tomcat JDBC Pool Cleaner线程,因此对创建线程或单个线程持怀疑态度。 – Martin