Использование Doctrine ORM с пулом соединений Postgres и PGBouncerPhp

Кемеровские программисты php общаются здесь
Ответить
Anonymous
 Использование Doctrine ORM с пулом соединений Postgres и PGBouncer

Сообщение Anonymous »

Есть ли у кого-нибудь опыт настройки Doctrine ORM для базы данных Postgres с пулом соединений PGBouncer? Мы используем базу данных Postgres, управляемую Digital Ocean, и нам разрешено 22 одновременных подключения к БД.
Наше приложение не сможет подключиться, если у нас большой трафик, который вызывает более 22 одновременных HTTP-запросов ( каждый из которых требует подключения к БД). Иногда мы видим ошибки, такие как FATAL: оставшиеся слоты подключения зарезервированы для ролей с атрибутом SUPERUSER.
С нашим приложением Symfony Doctrine создаст новое соединение с БД при загрузке app для запроса, а затем во время завершения работы ядра соединение с БД будет закрыто, что освободит его для других запросов. Это 1 соединение с БД на каждый веб-запрос.
Чтобы смягчить эту проблему, мы включили пул соединений Postgres от Digital Ocean, который мультиплексирует до 5000 соединений с БД в меньший набор реальных соединений с Postgres. экземпляр — для пула соединений используется PGBouncer. Однако, когда PGBouncer находился в режиме «транзакции», мы начали видеть такие ошибки, как ОШИБКА: текущая транзакция прервана, команды игнорируются до конца блока транзакции.
Я думаю, для PHP приложений режим «транзакция» не подходит, поскольку приложение загружается каждый раз при получении запроса.
Затем мы переключили PGBouncer для работы в режиме «сеанса», но это привело к появлению предупреждений. о таймаутах закрытия сеансов PHP (данные сеанса также хранятся в Postgres), например Предупреждение PHP: Uncaught PDOException: SQLSTATE[HY000]: Общая ошибка: 7 FATAL: query_wait_timeout\nSSL-соединение было неожиданно закрыто в /app/vendor/symfony/http-foundation/Session/ Storage/Handler/PdoSessionHandler.php:564.
На данный момент у нас есть удалено объединение пулов соединений, но снова разрешено небольшое количество физических подключений к БД. Не могу поверить, что это не более распространенная проблема, но Google не раскрывает ничего сверх того, что я описал о переключении PGBouncer из режима «транзакция» в режим «сеанс».

Подробнее здесь: https://stackoverflow.com/questions/793 ... on-pooling
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «Php»