Tengo una aplicación muy intensiva en base de datos que se ejecuta durante muchas horas y utiliza varios hilos, todos hablando con Postgresql a través de JDBC. El síntoma que estoy viendo es que de vez en cuando (de una a tres veces por cada "ejecución") termino con una o más conexiones JDBC atascadas, que parecen estar esperando una respuesta de la base de datos pero parecen estar esperando por siempre. El vertedero de hilo es el siguiente:Postgresql 8.4 colgar ocasionalmente con acceso JDBC
"Thread-4367355" daemon prio=6 tid=0x04920c00 nid=0x1e88 runnable [0x04bef000]
java.lang.Thread.State: RUNNABLE
at java.net.SocketInputStream.socketRead0(Native Method)
at java.net.SocketInputStream.read(SocketInputStream.java:129)
at org.postgresql.core.VisibleBufferedInputStream.readMore(VisibleBufferedInputStream.java:135)
at org.postgresql.core.VisibleBufferedInputStream.ensureBytes(VisibleBufferedInputStream.java:104)
at org.postgresql.core.VisibleBufferedInputStream.read(VisibleBufferedInputStream.java:73)
at org.postgresql.core.PGStream.ReceiveChar(PGStream.java:255)
at org.postgresql.core.v3.QueryExecutorImpl.processResults(QueryExecutorImpl.java:1165)
at org.postgresql.core.v3.QueryExecutorImpl.execute(QueryExecutorImpl.java:191)
- locked <0x2c023e10> (a org.postgresql.core.v3.QueryExecutorImpl)
at org.postgresql.jdbc2.AbstractJdbc2Statement.execute(AbstractJdbc2Statement.java:452)
at org.postgresql.jdbc2.AbstractJdbc2Statement.executeWithFlags(AbstractJdbc2Statement.java:337)
at org.postgresql.jdbc2.AbstractJdbc2Statement.execute(AbstractJdbc2Statement.java:329)
yo hubiera pensado en algún tipo de bloqueo problema excepto que muchas veces sólo se está atascado. Al menos una de las consultas que he visto en este estado era un REINDEX, por lo que es posible que la consulta lleve bastante tiempo. Con la esperanza de encontrar una solución, actualicé el controlador JDBC de 8.4 a 9.1, pero el problema aún ocurre. No hay nada inusual en los registros Postgresql tampoco. ¿Alguna idea para más diagnósticos (aparte de usar pg_locks)?
¿Pudo resolver el problema? Estamos frente a la misma 'suspensión' también en 9.1 –
Estoy experimentando el mismo problema, Postgresql 8.4, controlador JDBC 9.1. La consulta es una eliminación compleja. El proceso en el servidor comienza a usar el 100% de la CPU y de repente cae al 0% y permanece en 0% para siempre. El hilo del cliente sobresale justo como el de arriba. – BrunoJCM
NB que si se cuelga y dice "BLOQUEADO esperando el objeto XXX" puede significar que su conexión postgres está intentando ser utilizada por múltiples hilos [no es el caso en esta instancia, por supuesto, solo como una nota] – rogerdpack