🔋
postgresの接続切れをテストで再現する
背景
PostgreSQLを使ったサービスを運用していて、ちょいちょい接続切れが発生していた。
エラー内容としてはNode.js用のクライアントライブラリである pg が投げているエラーで
Connection terminated unexpectedly
というもの。
これをテストで再現したかった。
再現方法
まさにpgのテストで再現されていた。
同様にクエリ投げてみて再現することが確認できた。
pg_terminate_backend について
pg_cancel_backendとpg_terminate_backendは(それぞれ、SIGINTまたはSIGTERM)シグナルをプロセス識別子で特定されたバックエンドプロセスに送ります。使用中のバックエンドのプロセス識別子はpg_stat_activityビューのprocpid列から、もしくは、(Unixではps、WindowsではTask Managerにより)サーバ上のpostgresプロセスをリストすることで見つけられます。
https://www.postgresql.jp/docs/9.0/functions-admin.html
pg_backend_pid について
現在のセッションに結びついたサーバプロセスのプロセスID
https://www.postgresql.jp/docs/9.0/functions-info.html
Discussion