2016-09-21 77 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