Sqlalchemy: соединения не закрываются при переполнении пула

Когда я запускаю ab (бенчмарк apache) на своем сайте (с SQLAlchemy и postgresql, размещенными на веб-сервере Apache), SQLAlchemy делает много соединений с postgre, и я получаю слишком много ошибок соединений.

Я проследил проблему и обнаружил, что проблема в пуле (на самом деле QueuePool).

Документация по адресу http://www.sqlalchemy.org/docs/core/pooling.html#sqlalchemy.pool.Pool говорит, что если пул заполнен, возвращаемые соединения (которые были открыты, потому что max_overflow разрешил создание этих дополнительных соединений) будут отброшены и отключены. Но похоже соединения на самом деле не закрылись! Они молча выпали из бассейна, не закрываясь.

Таким образом, SQLAlchemy постоянно открывает новые соединения, игнорирует их (не закрывая!) и открывает новые.

Увеличение размера пула не является реальным решением, проблема в том, что дополнительные соединения не закрываются.

(Настройки по умолчанию для QueuePool: pool_size=5 и max_overflow=10)


person Taha Jahangir    schedule 05.04.2011    source источник


Ответы (2)


Похоже на ошибку в SQLAlchemy, исправленную 2 недели назад: http://hg.sqlalchemy.org/sqlalchemy/rev/aff95843c12f#l2.17

Релиза с этим исправлением не было, поэтому вам придется исправлять его вручную.

person Denis Otkidach    schedule 05.04.2011

я думаю, что это ошибка и исправлена ​​​​... установите из исходного кода и получайте удовольствие;)

person Mohammad Efazati    schedule 05.04.2011