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

StackOverflow https://stackoverflow.com/questions/51019

  •  09-06-2019
  •  | 
  •  

Вопрос

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

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

postgres: user db 127.0.0.1(55658) idle in transaction

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

Это было полезно?

Решение

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

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

Другие советы

Как упоминалось здесь: Ре:ОШИБКА № 4243:Простой в транзакции вероятно, лучше всего проверить таблицу pg_locks, чтобы увидеть, что блокируется, и это может дать вам лучшее представление о проблеме.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top