Что означает, когда процесс PostgreSQL «простаивает в транзакции»?
-
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, чтобы увидеть, что блокируется, и это может дать вам лучшее представление о проблеме.