База данных Postgresql выдает ошибки при подключении
Я запускаю базу данных Postgresql на AWS, а бэкендом является Django. После нескольких запросов, допустим 50, он выдает ошибку "OperationalError: terminating connection due to administrator command SSL connection has been closed unexpectedly", но база данных остается активной. Сначала вылетала ошибка "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 proxy, но все еще без надежды.
Вот как я подключаюсь к БД из 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
}
}
Ошибки, которые вы видите, вызваны вашим скриптом, который закрывает ваши соединения.
Вместо случайного уничтожения сессий устраните утечку соединений в вашем приложении (и не спрашивайте нас, как это сделать - мы не можем отлаживать вашу программу).