O que significa quando um processo PostgreSQL está “ocioso na transação”?
-
09-06-2019 - |
Pergunta
O que significa quando um PostgreSQL o processo está "ocioso na transação"?
Em um servidor que estou vendo, a saída de "ps ax | grep postgres" vejo 9 processos PostgreSQL parecidos com os seguintes:
postgres: user db 127.0.0.1(55658) idle in transaction
Isso significa que alguns dos processos estão travados, aguardando a confirmação de uma transação?Quaisquer indicações para documentação relevante serão apreciadas.
Solução
O Manual do PostgreSQL indica que isso significa que a transação está aberta (dentro de BEGIN) e inativa.Provavelmente é um usuário conectado através do monitor que está pensando ou digitando.Eu também tenho muitos deles no meu sistema.
Se você estiver usando o Slony para replicação, no entanto, o Perguntas frequentes sobre Slony-I sugere idle in transaction
pode significar que a conexão de rede foi encerrada abruptamente.Confira a discussão nesse FAQ para mais detalhes.
Outras dicas
Conforme mencionado aqui: Ré:ERRO #4243:Ocioso na transação provavelmente é melhor verificar sua tabela pg_locks para ver o que está sendo bloqueado e isso pode lhe dar uma pista melhor de onde está o problema.