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