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