postgresql psql:致命错误:角色的连接太多

r1wp621o  于 2022-11-23  发布在  PostgreSQL
关注(0)|答案(5)|浏览(510)

我尝试使用以下命令连接到数据库服务器:

psql -h host_ip -d db_name -U user_name --password

它显示以下行并拒绝连接。

psql: FATAL:  too many connections for role "user_name".

如何关闭活动连接?
我没有数据库的管理员权限。我只是一个普通用户。

093gszye

093gszye1#

从集群的任何DB内部:

第22条:您需要先连接到数据库。也许您可以以其他用户的身份连接?(默认情况下,某些连接是为具有superuser_reserved_connections设置的超级用户保留的。)
要获取此用户的每个连接的详细信息,请执行以下操作:

SELECT *
FROM   pg_stat_activity
WHERE  usename = 'user_name';

作为同一用户或超级用户,您可以取消用户的所有(其他)连接:

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();

最好确保这样做是可以的。您不希望以这种方式终止重要的查询(或连接)。
pg_cancel_backend()pg_terminate_backend()的值。

从Linux shell

你自己启动了那些连接吗?也许是你的挂脚本?你应该可以杀死那些连接(如果你确定可以这么做的话)。
您可以使用ps调查哪些进程可能出错:

ps -aux
ps -aux | grep psql

如果您确定要终止某个进程(最好确保您 * 不 * 希望终止服务器):

kill  123457689 # pid of process here.

或者用SIGKILL代替SIGTERM

kill -9 123457689
f1tvaqid

f1tvaqid2#

我对pgAdmin很陌生,但到目前为止我还没有使用过命令行。我遇到了同样的问题,我发现解决这个问题的最简单方法是删除 Jmeter 板中“Database Activity”(数据库活动)中列出的进程。

(just单击PID左侧的X)
这是一个有点乏味,因为你必须删除每个进程单独,但这样做应该释放您的可用连接。希望这是有用的。

3gtaxfhh

3gtaxfhh3#

您需要连接到postgresql数据库并运行命令:

ALTER ROLE your_username CONNECTION LIMIT -1;
5f0d552i

5f0d552i4#

检查pool_size,这可能是太多或太小的设置值在本地psql设置。你应该首先检查pool_size = 10(如默认)。这应该修复错误的too_many_connections

n1bvdmb6

n1bvdmb65#

请检查该用户允许的连接数,您可以取消该用户的其他连接,然后重新登录。但最好增加该用户的连接限制。
这个问题主要出现在PgAdmin上。看起来这么多年过去了,这个问题仍然存在。

相关问题