Sqlalchemy: соединения не закрываются при переполнении пула - PullRequest
3 голосов
/ 05 апреля 2011

Когда я запускаю 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)

Ответы [ 2 ]

1 голос
/ 05 апреля 2011

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

Не было выпуска с этим исправлением, поэтому вы должны исправить это вручную.

0 голосов
/ 05 апреля 2011

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

...