Pegar número de conexões ativas

8 respostas
F

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.

8 Respostas

S

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

F

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.

G

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.

P

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.

F

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.

S

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

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.

F

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.

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.

Criado 14 de setembro de 2012
Ultima resposta 14 de set. de 2012
Respostas 8
Participantes 5