Mi11er
@Mi11er
A human...

Как поправить ошибку FATAL: remaining connection slots are reserved for non-replication superuser connections?

Перерыл кучу инфы, что то не нашел ответ, либо плохо ищу.
Есть Django 3.2, есть postgres, есть куча прямых SQL запросов чере
with connection.cursor() as cursor:
        cursor.execute

То есть, закрытие соединения на уровне кода..
У psql настроено 300 соединений
Стоит настройка
SET SESSION idle_in_transaction_session_timeout = '2min';


Пробовал в setting поставить
CONN_MAX_AGE = 120
Думал может будет держать соединение...

Но нет, IDLE соединения копятся очень быстро, достигая лимита...

Помогает либо сброс соединений, с выборкой idle > 5 минут
SELECT pg_terminate_backend(pid)
FROM inactive_connections
WHERE rank > 1;


либо ребут psql, если даже выше не получается...

idle соединения могут висеть долго, такое чувство, что все же не сбрасываются автоматом.
Как проверить.. не знаю.
61b24f07d552d591762324.png
  • Вопрос задан
  • 3337 просмотров
Решения вопроса 3
@galaxy
То есть, закрытие соединения на уровне кода..

Да? Это вам кто сказал?
Connections can be used as context managers. Note that a context wraps a transaction: if the context exits with success the transaction is committed, if it exits with an exception the transaction is rolled back. Note that the connection is not closed by the context and it can be used for several contexts

https://www.psycopg.org/docs/connection.html
Тем более у вас контекст на курсор.

SET SESSION idle_in_transaction_session_timeout = '2min';

Снова мимо. IDLE и IDLE IN TRANSACTION, очевидно, разные состояния.

Закрывайте соединения как положено.
Ответ написан
rozhnev
@rozhnev
Fullstack programmer, DBA, медленно, дорого
Поставьте PgBouncer для переиспользования пула соединений
Ответ написан
sergey-gornostaev
@sergey-gornostaev Куратор тега PostgreSQL
Седой и строгий
Во-первых, работать напрямую с БД из Django - такая себе идея. Во-вторых, судя по симптомам, у вас где-то открываются соединения, но не закрываются. Небось ещё и потоки или асинхронность используете?
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы