On 01-02-2013 15:09, direisc wrote:
> Eu tenho uma aplicação JBOSS utilizando hibernate e postgres e outros
> detalhes talves menos importante que gera frequentemente uma conexão *<IDLE>
> in transaction*, gostaria de saber se isso é comum se há como contornar ou
> se eu devo desesperadamente migrar para um lugar que não faça isso.
> 
Isso é um problema na sua aplicação ou no servidor de aplicações e *não* do
postgres. Investigue quais são as funcionalidades da aplicação que estão
deixando transações neste estado e corrija-as.

> Pergunto isso pois estou num ambiente deveras controlado, onde as conexões
> *<IDLE> in transaction * são encerradas pelo administrador quando passam
> mais de 10 minutos nesse estado.
> 
Por que? Se for simplesmente para conter o esgotamento de conexões, isso seria
somente um paliativo (que pode causar problemas sérios -- vide último caso
abaixo). Ideal seria corrigir a aplicação para não deixar conexões ociosas
(aka idle).

 "Idle in transaction" quer dizer que o banco de dados estão no meio de uma
transação e, se a conexão for encerrado, as modificações serão perdidas. Isso
pode ou não ser um problema para você. Se for um simples:

BEGIN;
... aguardando alguma coisa...
... depois de 10 min...
... finalizar a transação...

não há problema algum. Porém se for:

BEGIN;
SELECT ...
INSERT ...
SELECT ...
DELETE ...
... aguardando alguma coisa ...
... depois de 10 min ...
... finalizar a transação ...

você estará cancelando algo que pode ser "importante".


-- 
   Euler Taveira de Oliveira - Timbira       http://www.timbira.com.br/
   PostgreSQL: Consultoria, Desenvolvimento, Suporte 24x7 e Treinamento
_______________________________________________
pgbr-geral mailing list
[email protected]
https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral

Responder a