Django postgres слишком много свободных соединений - PullRequest
0 голосов
/ 16 марта 2020

Я сталкиваюсь с проблемой слишком большого количества дБ свободных соединений. Я использую движок psycopg2 напрямую, без использования пула. Я играл с параметром «CONN_MAX_AGE» и пытался закрыть соединение в коде приложения везде, где, как я чувствовал, могло помочь, но ничто не помогло в реальности. Ниже приведен декоратор, который я создал для закрытия соединений. Я украсил методы везде, где я читаю / записываю в / из дБ.

def close_db_connection(ExceptionToCheck=Exception, raise_exception=False, notify=False):
    """Close the database connection when we're finished, django will have to get a new one..."""

    def deco_wrap(f):
        @wraps(f)
        def f_wrap(*args, **kwargs):
            try:
                return f(*args, **kwargs)
            except Exception as e:
                raise e
            finally:
                connection.close()

        return f_wrap

    return deco_wrap

У меня есть следующие конфигурации

python 3.7.7 (recently upgraded from 3.5)
django 3.0.4 (recently upgraded from 2.2, in hope of fixing the issue)
gunicorn 19.4.5 (forking 4 workers, I have 4CPU EC2 instance)

Я пробовал следующие проблемы в GitHub / StackOverflow, где все упоминается либо использование pgbouncer в качестве механизма пула соединений для настройки параметра CONN_MAX_AGE , либо закрытие соединений вручную в коде.

Что я делаю неправильно или отсутствует?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...