database jboss7.x datasource postgresql-9.1

database - No hay conexiones gestionadas disponibles dentro del tiempo de espera de bloqueo configurado(JBoss 7 y Postgres)



jboss7.x datasource (1)

Su problema principal es probablemente una fuga de conexión, pero tal vez no. En otras palabras, las transacciones de la base de datos están saliendo del grupo y no se devuelven. En este caso, hay algunas cosas específicas con las que empezar porque el problema probablemente sea un problema de código y no un problema de base de datos .

Lo primero que se debe verificar es el estado actual de todo en pg_stat_activity . Esto incluye la consulta más reciente y el estado de la transacción. En una fuga de conexión, es probable que encuentre una gran cantidad de conexiones IDLE con consultas similares. Las consultas pueden ayudarlo a rastrear la fuga de conexión. También en una fuga de conexión, cuando el problema comienza, continuará hasta que reinicies las cosas.

En el caso de que el problema sea, de hecho, muy pocas conexiones disponibles, verá muchas conexiones ACTIVE . En ese caso, aumente el número de conexiones en su grupo. También en este caso, el problema ocurrirá de manera intermitente y luego parecerá que va por sí solo.

Periódicamente me sale un error:

ERROR JDBCExceptionReporter -> javax.resource.ResourceException: IJ000453: No se puede obtener la conexión administrada para java: jboss / datasources / myDB 08: 12: 05,928 ERROR [org.apache.catalina.core.ContainerBase. [Jboss.web]. default-host]. [/ mySoftware]. [jsp]] (ajp - xx.255.0.yyy-8109-21) Servlet.service () para servlet jsp lanzó la excepción: javax.resource.ResourceException: IJ000655: No hay conexiones administradas disponible dentro del tiempo de espera de bloqueo configurado (30000 [ms]) en org.jboss.jca.core.connectionmanager.pool.mcp.SemaphoreArrayListManagedConnectionPool.getConnection (SemaphoreArrayListManagedConnectionPool.java:377) y etc.

.

Por lo tanto, tengo siguiente configuración de fuente de datos. en JBoss AS:

<datasource jta="true" jndi-name="java:jboss/datasources/myDB" pool-name="ssbs-pssbs" enabled="true" use-ccm="true"> <connection-url>jdbc:postgresql://xx.255.0.yyy/myDatabase</connection-url> <driver-class>org.postgresql.Driver</driver-class> <driver>postgresql-jdbc4</driver> <pool> <min-pool-size>30</min-pool-size> <max-pool-size>150</max-pool-size> <prefill>true</prefill> <use-strict-min>false</use-strict-min> <flush-strategy>FailingConnectionOnly</flush-strategy> </pool> <security> <user-name>tick</user-name> <password>tack</password> </security> <validation> <check-valid-connection-sql>SELECT 1</check-valid-connection-sql> <validate-on-match>false</validate-on-match> <background-validation>false</background-validation> </validation> <timeout> <blocking-timeout-millis>30000</blocking-timeout-millis> <idle-timeout-minutes>5</idle-timeout-minutes> </timeout> <statement> <share-prepared-statements>false</share-prepared-statements> </statement> </datasource>

y en mi servidor de Postgres, permito max_connection en 500. ¿Por qué obtengo esta excepción?