PostgreSQL зависает при «транзакции отката» с сериализуемой транзакцией? - PullRequest
0 голосов
/ 21 апреля 2020

У нас есть веб-сервис, где все пользовательские транзакции чтения / записи выполняются с уровнем изоляции SERIALIZABLE. Однако у нас были проблемы, когда длина транзакции некоторых соединений проходит через крышу, и кажется, что в большинстве (всех?) Случаях проблема была в запросе ROLLBACK TRANSACTION. Соединения, останавливающиеся в этом состоянии, видны в таблице pg_stat_activity.

Если только я что-то не так понял, откат транзакции SERIALIZABLE всегда должен быть успешным без каких-либо блокировок и практически не требует ресурсов для выполнения на PostgreSQL.

Что может вызвать зависание транзакции SERIALIZABLE на ROLLBACK TRANSACTION?

Мы запускаем соединения через pgbouncer версии 1.7, работающие на localhost, используя pool_mode=transaction в случае, если это имеет значение. Выполнение select pg_terminate_backend(123), где 123 - нарушающее соединение, не сразу освобождает запрос с точки зрения клиента. Клиент видит что-либо только через 1 ч после запроса, а затем я получаю ответ:

57P01 terminating connection due to administrator command
08P01 server conn crashed?
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...