我在AWS上运行Postgresql数据库,后台是Django。在一些请求之后,比如说50个请求,它会引发错误“OperationalError:由于管理员命令而终止连接SSL连接已意外关闭”,但数据库仍将保持活动状态。最初,它会引发“OperationalError:FATAL:剩余的连接插槽是为非复制超级用户连接保留的”,因此我有一个脚本来关闭打开的连接。
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连接到DB:
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
}
}
1条答案
按热度按时间ddrv8njm1#
您看到的错误是由关闭连接的脚本引起的。
与其随机终止会话,不如修复应用程序中的连接泄漏(不要问我们如何做--我们无法调试您的程序)。