Pool de conexoes esgotando

1 resposta
danielwc

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

1 Resposta

E

verifica se não está rodando alguma query pesada quando ocorre isso.

Criado 18 de maio de 2012
Ultima resposta 18 de mai. de 2012
Respostas 1
Participantes 2