Что это означает, когда процесс PostgreSQL «простаивает в транзакции»? - PullRequest
70 голосов
/ 09 сентября 2008

Что это означает, когда процесс PostgreSQL находится в состоянии «бездействия в транзакции»?

На сервере, который я смотрю, вывод "ps ax | grep postgres", который я вижу, 9 процессов PostgreSQL, которые выглядят следующим образом:

postgres: user db 127.0.0.1(55658) idle in transaction

Значит ли это, что некоторые процессы зависли, ожидая транзакции? Любые указатели на соответствующую документацию приветствуются.

Ответы [ 2 ]

41 голосов
/ 09 сентября 2008

Руководство PostgreSQL указывает, что это означает, что транзакция открыта (внутри BEGIN) и простаивает. Скорее всего, пользователь, подключенный с помощью монитора, думает или печатает. У меня их тоже много.

Если вы используете Slony для репликации, однако, Slony-I FAQ предполагает, что idle in transaction может означать, что сетевое соединение было разорвано внезапно. Проверьте обсуждение в этом FAQ для получения более подробной информации.

14 голосов
/ 17 сентября 2008

Как упомянуто здесь: Re: BUG # 4243: Неиспользуемые транзакции , вероятно, лучше проверить вашу таблицу pg_locks, чтобы увидеть, что заблокировано, и это может дать вам лучшее представление о том, в чем заключается проблема.

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