【问题标题】:How to close idle connection on PostgreSQL database如何关闭 PostgreSQL 数据库上的空闲连接
【发布时间】:2017-10-31 11:55:40
【问题描述】:

我一直在使用 python3 和 psycopg2 访问 postgreSQL 数据库。

我遇到了一个错误,暗示我有打开的连接。当我运行SELECT * FROM pg_stat_activity 时,我的用户名下出现了一堆连接。它们都处于“空闲”状态,其中许多显示了我从未运行过的“查询”值(例如:select 1show search_path)。

我已经看到this 了解如何自动关闭它们。而且,我还读到使用pg_terminate_backend 很危险,会导致数据库重新启动。如何使用 python3 或 SQL 自然地关闭这些连接?它是一个公司生产数据库,因此无法重新启动它或成为管理员。让我知道我是否必须成为管理员才能解决此问题。

【问题讨论】:

  • 我有同样的问题,我正在使用 c3p0,pg_stat_activity 中有很多 idle 连接,而且数量还在不断增长。你解决了这个问题吗?

标签: python sql database postgresql psycopg2


【解决方案1】:

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

Per the documentation:

pg_terminate_backend(pid int)

终止后端。如果调用角色是其后端被终止的角色的成员,或者调用角色已被授予 pg_signal_backend,这也是允许的,但是只有超级用户可以终止超级用户后端。

【讨论】:

    猜你喜欢
    • 2012-09-05
    • 2020-12-31
    • 1970-01-01
    • 2021-07-10
    • 1970-01-01
    • 2015-04-23
    • 1970-01-01
    • 2021-11-21
    • 1970-01-01
    相关资源
    最近更新 更多