何らかの原因でアプリケーションがダウンして、アプリケーションが異常終了した場合、データベースサーバ上にアプリケーションとのコネクションが残る可能性があります。この状態が長時間続いた場合、新しいアプリケーションがデータベースサーバに接続してもエラーになったり、テーブルなどが使用中である旨のエラーになることがあります。
そのため、一定時間、アイドル中のコネクションを自動的に切断することを推奨します。
コネクションが自動切断されるまでの時間は、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”を参照してください。