ページの先頭行へ戻る
Enterprise Postgres 15 運用ガイド

8.3 コネクションの自動切断

何らかの原因でアプリケーションがダウンして、アプリケーションが異常終了した場合、データベースサーバ上にアプリケーションとのコネクションが残る可能性があります。この状態が長時間続いた場合、新しいアプリケーションがデータベースサーバに接続してもエラーになったり、テーブルなどが使用中である旨のエラーになることがあります。

そのため、一定時間、アイドル中のコネクションを自動的に切断することを推奨します。

コネクションが自動切断されるまでの時間は、postgresql.confファイルに以下のパラメータを設定してください。

パラメータ名

設定値

説明

tcp_keepalives_idle

keepaliveを送信するまでの時間(秒数)

0の場合はシステムのデフォルト値を使用します。

指定された秒数間、アイドル中のコネクションに対して、keepaliveを送信します。

30秒を指定することを推奨します。

tcp_keepalives_interval

keepaliveの送信間隔時間(秒数)

0の場合はシステムのデフォルト値を使用します。

指定された間隔でkeepaliveを送信します。

10秒を指定することを推奨します。

tcp_user_timeout

サーバからの応答を待機する時間(ミリ秒)

0の場合はシステムのデフォルト値を使用します。

未設定の場合、0が指定された場合と同じ動作になります。

接続の確立後、クライアントからサーバへの送信にてTCP再送処理が動作した場合に、切断とみなすまでの時間を指定します。

本パラメータに0以外を指定した場合、自動切断までの時間は本パラメータに指定した待機時間で判断します。実際の待機時間は、本パラメータで指定した時間を経過した後の、最初のkeepalive再送のタイミングまでとなります。

注意

tcp_user_timeoutパラメータに0以外を指定した場合、tcp_keepalives_idleパラメータおよびtcp_keepalives_intervalパラメータによる待機時間は無効となり、tcp_user_timeoutパラメータの指定値による待機時間となります。

参照

パラメータの詳細については、“PostgreSQL Documentation”の“Server Administration”の“Connection Settings”を参照してください。