Назад | Перейти на главную страницу

flask, gunicorn (gevent), sqlalchemy (postgresql): слишком много соединений

я создал Flask WSGI-приложение, использующее gunicorn как WSGI-сервер, для БД он использует PostgreSQL через Flask SQLAlchemy расширение. Это все размещено на Heroku.

конфигурация пулеметчика

Конфигурация Heroku PostgreSQL

Для всего остального используется конфигурация по умолчанию.

Я получаю такую ​​ошибку: sqlalchemy.exc.OperationalError: (psycopg2.OperationalError) FATAL: too many connections for role <id>. Очевидно, я превысил допустимое количество подключений к БД.

Я пробовал вот это исправить:

Ничего из этого не работает. Я все еще получаю эту ошибку даже при минимальной конфигурации Gunicorn (1 рабочий с 18 подключениями). Я действительно начал не понимать, что происходит на самом деле.

Я думал, что это работает так: у каждого воркера есть собственный экземпляр движка, и у каждого движка свой размер пула. Итак, если есть 2 воркера с конфигурацией двигателя по умолчанию (размер пула 5), то у нас есть 2 * 5 = 10 максимальных подключений к БД. Но похоже, что это действительно не так.

Вопросы