データベース接続プーリングの特定のシナリオを理解しようとしています。これに関する指針は非常に役立ちます。
セットアップ:
- Tomcat ウェブサーバー
- MySQL サーバー (最大接続数 = 18)
webapp の構成: webapp
の context.xml には、データベース接続プール用の次のパラメーターがあります。
<Context path=...
<Resource name=... maxActive="20" maxIdle="18"
removeAbandoned="true" removeAbandonedTimeout="60" logAbandoned="true"
validationQuery="select 1" testOnBorrow="true"... />
</Context>
シナリオ:
webapp が多数の接続を開いたり閉じたりします。ただし、プールは、webapp が dB でこれ以上トランザクションを行わない場合、それらのうちの 18 個を (maxIdle=18 として) 保持します。
この時点で、別の Pure Java スタンドアロン アプリケーションがデータベース接続を要求します。MySQL サーバーはどのように応答しますか?
- プールによって保持されているアイドル状態の接続を閉じることによって、接続を提供しますか?
- 最大数の dB 接続が既に開いている (プールによって保持されている) ため、接続を拒否しますか?
シナリオがよくわからない場合はお知らせください。さらに詳しく説明します。
乾杯、ロヒテシュ