構成プロパティでc3p0プロパティmaxIdleTimeを使用しましたが、c3p0プロパティはc3p0.
を使用して構成されています。 プレフィックスまたはhibernate.c3p0.
。 c3p0
のいずれかを有効にすることに注意してください プロパティは、休止状態のヒューリスティックによって対応する接続プロバイダーを自動的に有効にします。ログには、c3p0を使用していることが表示されません。データソースが設定されていない場合、Hibernateはhibernate.connection.provider_class org.hibernate.connection.DriverManagerConnectionProvider
を使用します 。この接続プロバイダーには、hibernate.connection.pool_size
を設定できる基本的な接続プールが組み込まれています。 、ただし、開発目的でのみ使用されます。実稼働環境では絶対に使用しないでください。
トピック
- ファイアウォールまたはルーターがアイドル状態の接続を制限する場合があります(MySQLクライアント/サーバープロトコルは通知しません)。
- MySQLサーバーは、
wait_timeout
を超えるアイドル状態の接続を閉じている可能性があります またはinteractive_timeout
しきい値。
これらの問題のトラブルシューティングに役立てるために、次のヒントを使用できます。
- 最新(5.1.13以降)バージョンのJDBCドライバーが使用されています。
-
wait_timeout
であることを確認してください およびinteractive_timeout
十分に高く設定されています。interactiveClient
かどうかを確認します 使用されます。 -
tcpKeepalive
であることを確認してください 有効になっています。 - 構成可能なファイアウォールまたはルーターのタイムアウト設定で、予想される最大の接続アイドル時間を確保できるようにします。
- 接続プールから使用するときに接続が有効であることを確認します。
/* ping */
で始まるクエリを使用します 完全なクエリの代わりに軽量のpingを実行します。 pingの構文は、ここで指定されているとおりである必要があることに注意してください。 - 接続が長期間アイドル状態のままになっている場合は、接続を使用する前に明示的に検証してください。
- 他のアプリケーションロジックが実行されている間、接続オブジェクトがアイドル状態のままになる時間を最小限に抑えます。
このオプションのいくつかに準拠するには、Hibernateで使用できる接続プールを使用することをお勧めします。 Hibernateはcommons(dbcp、c3p0、およびproxool)をサポートしています。また、Hibernateで使用するようにWebサーバー上のJNDIデータソースを構成できます。これには接続プールがあります。 第7章を参照してください。 Connector/Jを使用した接続プール 。
c3p0でHibernateを設定する場合は、このC3P0接続プールを設定する方法> 。 dbcpの設定例については、この投稿 MySQL、Hibernate、およびBroken PipeException を確認する必要があります。 。使用する接続プールはすべてあなた次第です。