Как заставить "PAUSE" в pgBouncer, используя pool_mode = session? - PullRequest
0 голосов
/ 04 октября 2018

Я использую pgBouncer в режиме пула сеансов, но, как и у большинства людей, у меня возникают проблемы, когда я запускаю PAUSE для переключения базы данных, потому что любые сеансы, которые выдавали any SQL, будут вызыватьэто повесить.В основном я ищу "Принудительную" ПАУЗУ, где любые сеансы, которые не находятся в режиме ожидания, будут отключены.

То, что я пробовал:

1) ПАУЗА ... но если у вас есть какие-либо блокирующие сеансы, то это не может быть убито, и вам нужно искать их на сервере.

2) SET query_timeout = 1 ,затем PAUSE ... но query_timeout не применяется к паузе, поэтому он просто зависает навсегда.

3) SUSPEND ... но это не совсем то же самое, и автоматически RESUME d при отключении.

4) KILL ... но это без разбора все убивает, и клиенты получают жесткое отключение.

Я понимаю, что лучшее решение - это использовать pool_mode=transaction, но, как обычно, я не могу заставить своих разработчиков играть в мяч.

Есть ли что-то, чего мне здесь не хватает в лучшем способесделать переключение / переключение при использовании pgBouncer на серверах приложений в режиме пула сеансов?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...