2017-05-24 1 views
5

に「アイドル」状態でクエリを「COMMIT」持続します。彼らは長く続き、消えません。しばらくすると、私のアプリケーションはhibernate.c3p0.max_size(プール内のJDBC接続の最大数)に達し、データベースの使用を停止します。ロングは私が照会した場合をpg_stat_activity

一部のアプリケーションの実装の詳細は、他のSOスレッドで説明されています Guice DAO Provider in thread pool - queries become 'idle in transation'

は、なぜそれが起こるのでしょうか?この問題を解決するには?

+1

プール内の接続が何らかの理由で再利用されないと考えています –

答えて

7

セッションが「アイドル」の場合、クエリ列には接続が実行されたの最後のステートメントが表示されます。 ではなく、の「現在の」クエリであるため、接続はではなく、コミットを完了するのを待ってになります。 statusactiveを示している場合

query列は唯一現在文を示します。

「アイドル」接続はで、問題はありません。と本質的には接続プールを使用して再利用できる理由があります。しかし、「トランザクションアイドル」で非常に長く滞在するセッションは、に問題があります。しかし、あなたの接続は「アイドル」状態であると述べました。

接続プールが上限に達した場合、これはおそらく、アプリケーションが接続をプールに正しく返さないことを意味します。これは、アプリケーションで修正する必要があるものです。

関連する問題