2016-09-21 10 views
0

私は、JDBCを使用してローカルのMySQLに話し、私の春ブーツ1.4アプリケーションで次のプロパティとなっている -SpringBootアプリケーションで作成されたJDBC接続プールスレッドを見つける方法は?

  • spring.datasource.test-しばらくアイドル=真
  • spring.datasource.testオンボロー=真
  • spring.datasource.validationクエリ= 1
  • spring.datasource.initialサイズ= 50
  • spring.datasource.max活性= 100
  • spring.datasource.max-アイドル= SELECT 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は、私が知っている最後の4行は、繰り返しですが、私はにそれらを保持しています任意の組み合わせが機能するかどうか試してみてください。 Springブートのドキュメントによると、すべてのデータソースのtomcatプロパティはspring.datasource.tomcat。*の下になければなりません。一方、最初の3行はSpringBoot 1.3と1.4で動作しています。したがって、接続プールのパラメータも期待されていました。

アプリケーションを起動した後、私はVisualVM内のすべてのスレッドをチェックしました。カウントは〜20です。私が設定した50よりはるかに少ないです。 Springデータリポジトリを使用してMySQLと対話する1000回のREST呼び出しを実行した後、スレッド数は50を超えて増加しています。 〜10人のワーカースレッドがアイドル状態のままになっています。

私の質問は、SpringブートアプリケーションのスレッドプールでJDBC接続プールスレッドをどのように検出するのでしょうか?

また、プロパティ設定で何が問題になりますか?予想されるスレッド数のJDBC接続プールが作成されないのはなぜですか?

答えて

1

接続プールはスレッドを作成しません(または、ハウスキーピング用に1または2を作成することもできますが、それはそれです)。接続プールは、データベースへのJDBC接続を作成(および追跡)して、アプリケーションから要求されたときに渡します。プール自体に接続ごとにスレッドを持つ必要はありません。

ほとんどのスレッドは、Java自体(ガベージコレクションなど)とHTTP接続を処理するために必要なスレッド(アイドル時に増加する可能性があります)と、アプリケーションによってスピンアップされる他のスレッドコード。

+0

ありがとうございました!私はTomcat JDBC Pool Cleanerスレッドしか見なかったので、作成スレッドや個々のスレッドについては疑問がありました。 – Martin

関連する問題