1

Hibernate 4.1.1 と Spring 3.1.1 と Postgres 9.2 を使用する Web アプリケーションがあります。また、Spring トランザクション API と c3p0 接続プールも使用します。DBサーバーは別のサーバーにあり、pgbouncerはインストールされておらず、Postgresのみがインストールされています。

DB接続をチェックアウトできないというログに多くのエラーがあります。しかし、Postgres サーバーのステータスを表示すると ("SELECT datname,procpid,current_query FROM pg_stat_activity")、これらの接続の 95% が "IDLE" です。

それはどのように起こったのですか?このゴースト接続では、通常のクエリを実行できません。

エラー:

Caused by: com.mchange.v2.resourcepool.TimeoutException: A client timed out while waiting to acquire a resource from com.mchange.v2.resourcepool.BasicResourcePool@4bbf8a41 -- timeout at awaitAvailable()
4

2 に答える 2

1

接続はプールに返されません。これの一般的な原因は、getSession() の使用です。スレッドにバインドされたセッションに依存するか、releaseSession() と組み合わせて使用​​します。

一般に、HibernateTemplate を使用することをお勧めします: getHibernateTemplate()

于 2013-09-29T13:20:03.940 に答える