Ferramentas do usuário

Ferramentas do site


postgresql:matando_processos

Matando processos

Para encontrar um PID em execução, use a seguinte query:

  select procpid,* from pg_stat_activity where current_query<>'<IDLE>' order by xact_start;

Você encontrará o procpid na primeira coluna da esquerda, e na primeira linha é geralmente a query que você deseja encerrar. Vamos assumir que o pid da query é 1234.

Você pode cancelar a query através do comando (ou seja, sem precisar acessar o console, mas provavelmente você precisará ter acesso de superusuário na base da dados):

  select pg_cancel_backend(1234);

Este é a maneira “light”. A query não irá desaparecer imediatamente. Se você está com um pouco de pressa, tente este comando:

  select pg_terminate_backend(1234);

Se você tem acesso ao console do PostgreSQL, você pode tentar também o comando abaixo:

  kill 1234

Este sempre funciona para mim, mas você já leu em algum lugar que o jeito correto de se fazer é com o comando:

  kill -INT 1234

NÃO FAÇA ISSO:

  kill -9 1234

… este comando geralmente resulta no encerramento forçado do serviço do PostgreSQL.

“idle in transaction” significa que a transação não foi finalizada com um “commit” ou um “rollback”, significando que a aplicação está bugada ou não foi propriamente desenhada para trabalhar com bancos de dados transacionais. Transações de longa duração deve ser evitadas, pois são as principais causas de problemas de performance.

Fonte: http://stackoverflow.com/questions/11291456/heroku-postgres-terminate-hung-query-idle-in-transaction

postgresql/matando_processos.txt · Última modificação: 27/04/2021 12:05 por 127.0.0.1

Donate Powered by PHP Valid HTML5 Valid CSS Driven by DokuWiki