2017-05-31 43 views
2

私はWebベースのJavaアプリケーション用のPostgres 9.5データベースを持っています。時々、長い実行中のクエリのためにセッションの数が突然増加し、これらのセッションはすぐにクリアされません。 pg_stat_activityをチェックすると、クエリ列にはアイドル状態のステージがあるCOMMITまたはROLLBACKが表示されます。これは、Postgresがmax_connectionsの高いしきい値に達する原因となり、生産停止を引き起こす可能性があります。Postgresセッションはquery = COMMITまたはROLLBACKでアイドル状態です

query |ロールバック 状態|アイドル 件数| 167

query | | COMMIT 状態|アイドル 件数| 280

  1. これらのCOMMIT/ROLLBACKアイドルセッションは何ですか?
  2. これらのアイドルセッションをすぐにクリアするにはどうすればよいですか?
  3. これらのアイドルセッションの数を減らすにはどうすればよいですか?

おかげ

+0

pg \ _stat \ _activityの[idle]状態の長期にわたる 'COMMIT'クエリの可能な複製(https://stackoverflow.com/questions/44156050/long-lasting-commit-queries-with-idle- stat-activity-in-pg-stat-activity) –

答えて

3

これらは、別のクエリのために待機している接続されています。彼らは何もしていない。だからこそ、彼らは遊んでいる。

あなたのアプリは接続プールを使用して、接続を絶たずに再接続する必要がないようにします。アクティブなクエリより多くの接続がある場合、一部のクエリはアイドル状態になり、表示されたクエリは最後に完了したクエリになります。

これはまったく正常であり、心配することはありません。変更または修正する必要はありません。

+0

ありがとう@Craig Ringer。これらの新しいセッションが何を実行していたかを正確に見つける方法はありますか? pg_stat_activity.queryはその情報を提供しません。私が確認できるオプションはありますか? – Murali

+0

@ムラリ最新のクエリのみを保持します。 'log_statement = 'all''を使用し、session-idやxidを含む' log_statement_prefix'を追加する必要があります。そうすれば、トランザクションのアクティビティ全体を再構成することができます。 –

関連する問題