Pessoal, boa tarde!
Tenho uma aplicação utilizando EJB 2.1 rodando no Jboss 4.2.3.
Utilizo como base de dados, um SQL Server 2008.
Para fazer a conexão ao banco de dados, utilizo essa configuracao de datasource:
<datasources>
<local-tx-datasource>
<jndi-name>SYSDS</jndi-name>
<connection-url>jdbc:sqlserver://10.0.1.20:1433;databaseName=sysProd;</connection-url>
<driver-class>com.microsoft.sqlserver.jdbc.SQLServerDriver</driver-class> -->
<user-name>usuario</user-name>
<password>senha</password>
<min-pool-size>5</min-pool-size>
<max-pool-size>20</max-pool-size>
<blocking-timeout-millis>10000</blocking-timeout-millis>
<idle-timeout-minutes>5</idle-timeout-minutes>
<metadata>
<type-mapping>MS SQLSERVER2000</type-mapping>
</metadata>
<check-valid-connection-sql>SELECT 1</check-valid-connection-sql>
</local-tx-datasource>
</datasources>
Através do MBean: org.jboss.resource.connectionmanager.JBossManagedConnectionPool, utilizando o atributo InUseConnectionCount, eu monitoro como esta o consumo do meu de pool de conexoes.
Normalmente, fica entre 1 a 5 conexoes em uso.
Porém em determinados momentos (cerca de 1 vez por dia, em horarios bem aleatorios). O numero de conexões eleva instantaneamente até esgotar o pool, e com isso trava a minha aplicação.
O sistema fica travado por uns minutos e com as 20 conexoes do pool utilizadas.
E logo em seguida libera tudo, e o sistema volta a funcionar normalmente.
Minha primeira suspeita, foi que estava gerando bloqueios no banco de dados, e em função disso as conexões ficavam esperando a liberação do bloqueio, gerando assim o esgotamento do pool. Porém conversei com o DBA responsavel pelo banco de dados, e ele fez um acompanhamento, quando ocorrem esses travamentos não existem bloqueios no banco de dados. Então descartei essa possibilidade.
Então, gostaria de recorrer aos amigos ? Alguem poderia me auxiliar em saber como identificar o que esta gerando esse problema ? Existe alguma espécie de bloqueio a nível de aplicação ?
Obrigado pela ajuda,
Daniel