PostgreSQL
 sql >> Datenbank >  >> RDS >> PostgreSQL

psql:FATAL:zu viele Verbindungen für Rolle

Aus einer beliebigen DB des Clusters:

Fang 22:Sie müssen zuerst mit einer Datenbank verbunden sein. Vielleicht kannst du dich als anderer Benutzer anmelden? (Standardmäßig sind einige Verbindungen für Superuser mit dem superuser_reserved_connections Einstellung.)

So erhalten Sie detaillierte Informationen für jede Verbindung dieses Benutzers:

SELECT *
FROM   pg_stat_activity
WHERE  usename = 'user_name';

Als derselbe Nutzer oder als Superuser können Sie alle (anderen) Verbindungen eines Benutzers kündigen:

SELECT pg_cancel_backend(pid)     -- (SIGINT)
    -- pg_terminate_backend(pid)  -- the less patient alternative (SIGTERM)
FROM   pg_stat_activity
WHERE  usename = 'user_name'
AND    pid <> pg_backend_pid();

Stellen Sie besser sicher, dass dies in Ordnung ist. Auf diese Weise möchten Sie wichtige Abfragen (oder Verbindungen) nicht beenden.

pg_cancel_backend() und pg_terminate_backend() im Handbuch.

Von einer Linux-Shell

Hast du diese anderen Verbindungen selbst gestartet? Vielleicht eine hängende Schrift von Ihnen? Sie sollten in der Lage sein, diese zu töten (wenn Sie sicher sind, dass dies in Ordnung ist).

Sie können dies mit ps untersuchen welche Prozesse schuld sein könnten:

ps -aux
ps -aux | grep psql

Wenn Sie einen zu beendenden Prozess identifizieren (stellen Sie besser sicher, dass Sie dies nicht tun wollen den Server killen):

kill  123457689 # pid of process here.

Oder mit SIGKILL statt SIGTERM :

kill -9 123457689