如何关闭PostgreSQL数据库上的空闲连接

问题描述:

我一直在使用python3和psycopg2访问postgreSQL数据库。如何关闭PostgreSQL数据库上的空闲连接

我遇到了一个错误,暗示我打开了连接。当我运行SELECT * FROM pg_stat_activity时,我的用户名下出现了一堆连接。它们都处于“闲置”状态,其中许多显示了我从未运行过的“查询”值(例如:select 1,show search_path)。我看过this关于如何自动关闭它们。而且,我还读到使用pg_terminate_backend是危险的,并且会导致数据库重新启动。如何使用python3或SQL自然关闭这些连接?这是一个公司生产数据库,因此重新启动它或作为管理员不是一个选项。让我知道如果我必须是管理员才能解决此问题。

使用pg_terminate_backend(pid int).可以安全地终止您自己的空闲后端进程如果您试图终止您无法访问的进程,您将收到错误消息,并且不会发生任何特殊情况。不要试图终止活动进程。

Per the documentation

pg_terminate_backend(PID INT)

终止后端。如果调用角色是其后端正被终止或调用角色已被授予pg_signal_backend的角色的成员,则也可以使用此功能,但只有超级用户才能终止超级用户后端。