Como melhor depurar vazamentos de conexão JDBC no Glassfish v2?

1

Alguém tem alguma boa dica sobre a depuração de vazamentos de conexão no GlassFish?

No momento estou depurando um servidor GlassFish que contém um aplicativo que tem vazamentos de memória esporadicamente, levando a ter que reiniciar o servidor para liberar o pool (a limpeza do pool está disponível apenas no Glassfish 3).

Quando eu depurar esses tipos de erros hoje, eu examino o log do servidor quando percebo que o nosso monitoramento relatou que o pool cresceu e veja se há algum erro interessante ou semelhante em torno desse ponto.

Alguém tem alguma maneira melhor de depurar problemas como esses?

Todas as aplicações são EJB / EAR que usam anotações para injetar fontes de dados. Os aplicativos, em seguida, usam a fonte de dados para obter uma conexão. É claro que todas as conexões devem ser fechadas pelos programadores, mas acho que alguém esqueceu isso em um caso aqui.

    
por Chris Dale 25.08.2011 / 16:01

2 respostas

1

Acho que uma boa maneira de rastrear vazamentos de memória é anexar o VisualVM ao processo Java em execução (neste caso, uma instância do GF) e examinar a árvore de referência dos dumps de heap.

Outra maneira que me vem à mente, mas requer algum trabalho, seria escrever seu próprio wrapper de conexão / pool de conexão e registrar um rastreio de pilha sempre que a conexão for retirada do pool e também fechada.

    
por 12.12.2011 / 17:43
0

Você pode configurar as opções "Recuperação de vazamento de conexão" para os pools de conexão e pode obter rastreamentos completos da pilha indicando as causas raiz em um log do servidor.

Consulte a página da documentação - link .

    
por 21.06.2013 / 02:08