Что это значит

Сессия открыла транзакцию, ничего не делала дольше idle_in_transaction_session_timeout, и база её закрыла. Таймаут ставят специально: простаивающая транзакция держит блокировки и не даёт autovacuum чистить таблицы, база пухнет и медленнее работает.

Если ошибка появилась сразу после того, как таймаут включили, он делает свою работу: раньше такие сессии висели незаметно.

Как проверить

  1. Кто так себя ведёт сейчас:
select pid, usename, application_name, now() - state_change as idle, left(query, 100)
from pg_stat_activity where state = 'idle in transaction'
order by idle desc;
  1. application_name и последний запрос показывают сервис и место в коде.
  2. Значение таймаута: show idle_in_transaction_session_timeout;

Что сделать

  1. Оставить таймаут включённым. Для Directum RX разумно 20–30 минут.
  2. Передать разработчикам сервис и запрос, после которого транзакция остаётся открытой: это дефект кода, транзакцию забыли закрыть.
  3. Ручные сессии администраторов в psql и pgAdmin тоже попадают сюда: открытую транзакцию в консоли нужно завершать сразу.