【问题标题】:Postgresql database throwing errors on connectionPostgresql 数据库在连接时抛出错误
【发布时间】:2022-11-20 19:49:32
【问题描述】:

我在 AWS 上运行 Postgresql 数据库,后端是 Django。在一些请求之后,比如说 50,它会引发错误“OperationalError:由于管理员命令 SSL 连接意外关闭而终止连接”,但数据库仍将保持活动状态。起初,它在一些请求后抛出“OperationalError: FATAL: remaining connection slots are reserved for non-replication superuser connections”,所以我有一个脚本可以关闭打开的连接。这是脚本:

export PGPASSWORD='mypassword'
psql --host=dbhost.myregion.rds.amazonaws.com --port=5432 --username=user --dbname=name \
     -c "SELECT pg_terminate_backend(pid) FROM pg_stat_activity
WHERE pid <> pg_backend_pid()
AND state in ('idle', 'idle in transaction', 'idle in transaction (aborted)', 'disabled')
AND usename != 'rdsadmin';"

但错误不断出现。我也试过将 max_connections 增加到 150,但仍然无济于事。我也尝试过使用 AWS RDS 代理,但仍然没有希望。

以下是我如何从 Django 连接到数据库:

DATABASES = {
    'default': {
        'ENGINE': config('DB_ENGINE'),
        'NAME': config('DB_NAME'),
        'USER': config('DB_USER'),
        'PASSWORD': config('DB_PASSWORD'),
        'HOST': config('DB_HOST'),
        'PORT': config('DB_PORT'),
        'CONN_MAX_AGE': 0
    }
}

【问题讨论】:

    标签: django postgresql amazon-web-services amazon-rds


    【解决方案1】:

    您看到的错误是由关闭连接的脚本引起的。

    与其随机终止会话,不如修复应用程序中的连接泄漏(不要问我们该怎么做——我们无法调试您的程序)。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2019-01-08
      • 2018-11-30
      • 1970-01-01
      • 2014-03-03
      • 1970-01-01
      • 2017-12-16
      • 2014-10-25
      相关资源
      最近更新 更多