Что это значит, когда процесс PostgreSQL "бездействует в транзакции"?
Что означает, когда процесс PostgreSQL является "незанятым в транзакции"?
На сервере, на котором я смотрю, вывод "ps ax | grep postgres" я вижу 9 процессов PostgreSQL, которые выглядят следующим образом:
postgres: user db 127.0.0.1(55658) idle in transaction
Означает ли это, что некоторые из процессов зависают, ожидая совершения транзакции? Любые указатели на соответствующую документацию оценены.
Ответы
Ответ 1
Руководство по PostgreSQL указывает, что это означает, что транзакция открыта (внутри BEGIN) и неактивна. Скорее всего, пользователь подключается к монитору, который думает или печатает. У меня тоже много таких в моей системе.
Если вы используете Slony для репликации, Slony-I FAQ предлагает idle in transaction
может означать, что сетевое подключение было прекращено резко. Ознакомьтесь с обсуждением в этом FAQ для более подробной информации.
Ответ 2
Как упоминалось здесь: Re: BUG # 4243: Idle in transaction, вероятно, лучше всего проверить свою таблицу pg_locks, чтобы увидеть, что блокируется и это может дать вам лучшую подсказку, где проблема.