<property name="hibernateProperties">
<props>
<prop key="hibernate.c3p0.max_size">?</prop>
</props>
</property>
それは単なる乱数の推測ですか?または、特定のユースケースに特定の範囲を使用することを提案する研究はありますか?
<property name="hibernateProperties">
<props>
<prop key="hibernate.c3p0.max_size">?</prop>
</props>
</property>
それは単なる乱数の推測ですか?または、特定のユースケースに特定の範囲を使用することを提案する研究はありますか?
さて、あなたが本番システムについて話していると仮定すると、「乱数の推測」は間違いなく答えではありません. 実際、「乱数の推測」は、本番環境でのどのような構成についても答えにはなりません。「製品のデフォルトをそのまま受け入れる」場合も同様です。
接続プールのプロパティ ( などmax_size
) は、いくつかの要因に依存します。
予想される使用。たとえば、10 人の同時ユーザーの典型的な使用パターンが予想され、ときどき 20 人のユーザーが急増することが予想される場合、マシンがそれを処理できると考えていても、最大サイズとして 50 という数値を設定する意味はほとんどありません。一見すると無害に思えますが、データベース接続は高価なリソースであることを覚えておく必要があります。また、独自の仮定をテストして、データを把握するためだけに、期待に合わせて実際に使用量を制限したい場合があることを覚えておく必要があります。システムの実際の運用に似た使用パターンと、アプリケーションがリソースを大量に消費して他のアプリケーションに影響を与える可能性を防止します。
利用可能なリソース。データベースが一度に 30 接続しか受け入れられないことがわかっている場合 (そしてそれを簡単に確認できる場合)、アプリケーションの使用パターンに関係なく、30 より大きい数を設定しても意味がありません。
アプリケーションの設計。あなたのアプリケーションは主に短命の接続を使用しますか? 長年のつながり?JDBC 呼び出しのタイムアウトを設定しているので、JDBC 呼び出しは最初から時間制限がありますか? たとえば、操作ごとに 30 秒のタイムアウトを設定していることがわかっている場合に接続プールを構成する方法と、2 分のタイムアウトを設定していることを知っている場合に接続プールを定義する方法には違いがあります。
特定の製品に関する考慮事項。についてはよくわかりませんがc3p0
、コネクション プーリング メカニズムを提供する特定のコンテナは、独自の要因を方程式に持ち込んでいます。コンテナーが提供する接続プール機能を使用している場合は、そのコンテナーのドキュメントを読んで、コンテナーのベンダーが提供する接続プール メカニズムの構成に関して何らかの洞察を持っているかどうかを確認する必要があります。
... 数字を推測しないでください。
...そして、製品のデフォルトを想定しないでください。