Pegar número de conexões ativas

Bom dia,

Gostaria de pegar o número de conexões que estão abertas no meu banco em runtime.
Estou usando Spring 3 + Hibernate, alguém já tentou fazer isso?

Grato.

Já fiz isso sim… utilizando por exemplo o banco Postgress, com a ferramenta PGADMIN da pra você verificar em SERVER STATUS.

Então, com essa query eu consigo listar todas as conexões com o banco e se a transação esta aberta:

Mas eu gostaria de pegar o número de conexões livres do pool de conexões.

Então amigo, pelo que eu saiba o hibernate usa um pool de conexões(dbcp) para abrir ou fechar as transações.

Um modo que eu posso te sugerir, é que você crie um objeto estatico ou melhor, um objeto singleton que guarde a quantidade de conexões abertas, e vá se modificando conforme transações forem abertas ou fechadas.

Qual a necessidade disso atrelada a aplicação em produção e dentro dela ??? Falo isso pois o certo é vc monitorar por alguma ferramenta que exibe tudo do container.

Estou realizando teste de carga e tenho problema com deadlock de conexões.
Não achei nenhuma ferramenta que eu consiga visualizar o número de conexões que estão sendo usadas. Com a query acima, ele mostra o número total de conexões que eu defini no meu pool e se existe ou não transação aberta para cada conexão.

Então já tinha usado este mesmo comando sql mais pra falar a verdade nem lembrava dele :slight_smile: foi até bom que você comentou.

Outra coisa … existe uma ferramenta Lambda Probe (Jboss e Tomcat) nesta ferramenta no items DATASOURCE você consegue verificar:

(M) maximum number of connections in the pool
(E) number of established connection that can be reused
(B) number of busy connections cannot be reused

Acho que pode ser util.

Abraço

Deadlock de conexões? Não seria deadlock de tabela ou registro?

Ou seria número de conexões insuficientes? Se estiver usando pool de conexões, é só ajustar a quantidade maxima para as suas necessidades e verificar se o as conexões estão sendo liberadas corretamente no seu programa.

Deadlock de conexões? Não seria deadlock de tabela ou registro?

Ou seria número de conexões insuficientes? Se estiver usando pool de conexões, é só ajustar a quantidade maxima para as suas necessidades e verificar se o as conexões estão sendo liberadas corretamente no seu programa.[/quote]

O problema mesmo seria deadlock de conexões.
Estou usando um framework chamado activiti, e quando eu inicio um certo processo por ele, ele abre uma sessão e fecha somente no final. O problema é que estou tento que abrir outra sessão no meio deste processo, e o spring não esta aproveitando a mesma sessão, por isso o problema.