はじめに
PostgreSQLでユーザ(Role)あたりのコネクション数を制限したいときは、ALTER ROLE ~ CONNECTION LIMIT N;
を使いましょう。
(PostgresqlはユーザもRoleとして表現されます)
サンプル
ユーザは shase-san
というのを使っています。
ALTER ROLEの発行
ALTER ROLE shase-san CONNECTION LIMIT 5;
確認
foodb=> \du shase-san
List of roles
Role name | Attributes | Member of
--------------+---------------+-------------------------------------------------
shase-san | 5 connections | {}
実際にpsqlコマンドで試した所、上記の場合5接続しかできなくなっています。
おまけ
特定ユーザの現在のコネクションをすべてkill
SELECT
pg_terminate_backend(pid)
FROM
pg_stat_activity
WHERE
usename = 'shase-san'
AND
pid <> pg_backend_pid();
おわりに
PostgreSQL の達人に教えてもらいました。感謝