Java - Informix

Estou com um grande problema.

Desenvolvi uma aplicação em java, que acessa o banco de dados Informix.

Criei um pool de conexões para controlar as conexões com o banco de dados.

Setei várias propriedades como:

objPool.setIfxIFX_AUTOFREE(true);
objPool.setIfxENABLE_TYPE_CACHE(false);
objPool.setIfxLOBCACHE(0);
objPool.setIfxOPTOFC(“1”);

para que o programa não gere cache e não fique nenhuma consulta presa no banco de dados.

Criei no servlet principal o método destroy() para que quando executado feche todas as conexões e o pool de conexões.

Até então, com um número menor de usuários, os processo estavam ocorrendo normalmente e o cache estava sendo liberado corretamente sem interferir na performance do banco de dados.

Porém, esta aplicação vou liberada para mais usuários, e o cache aumenta muito, fazendo com que às vezes o banco de dados caia, parando totalmente os processos e trazendo um grande prejuizo para a empresa.

Alguém já teve este problema?

Será que só configurando o Garbage Collector para rodar num intervalo menor isso será resolvido?

Preciso colocar o método destroy() e mais objetos para fechar a conexão e não apenas no servlet principal?

Se alguém puder me auxiliar seria muito Grato.

Obrigado :slight_smile:

Como foi codificada sua aplicação Java? Já que você usa um pool, na sua aplicação você tem sempre que pegar uma conexão do pool, usá-la e devolvê-la o mais rápido possível.

Desculpe mas não entendi.

O que você quis dizer com devolver a conexão o mais rápido possível?

Obrigado

Uma sugestão: verifique se o sistema não está jogando muitos atributos em cada session de usuário.

O que você quiz dizer é que depois de executar o processo no banco eu devo dar um close tanto para a Connection como para o Statement.
Certo?

Obrigado

[quote=botuva]O que você quiz dizer é que depois de executar o processo no banco eu devo dar um close tanto para a Connection como para o Statement.
Certo?

Obrigado[/quote]

Correto.

Olá

mesmo fechando meu objeto Connection e o Statement depois do acesso
o cache não é limpo.

Se eu der um restart do Oc4J esses acessos são retirados do cache.

Obrigado