Obtener múltiples consultas con "mostrar nivel de aislamiento de transacción" en pg_activity

10

Estoy usando el servidor PostgreSQL para mi uso de producción.

Cuando disparo una consulta como

select * from pg_stat_activity

en mi servidor, recibo el 98% de las consultas como

SHOW TRANSACTION ISOLATION LEVEL

y mi servidor acepta solo 100 conexiones, por lo que no puedo continuar.

¿Por qué está pasando esto? ¿Cómo puedo bloquear todas estas consultas?

Yogesh Prajapati
fuente
44
Postgres no crea conexiones por sí mismo. Es su aplicación la que crea esas conexiones y ejecuta esas consultas. Posiblemente un grupo de conexiones o algo similar.
a_horse_with_no_name
2
¿Estás ejecutando una aplicación Java? ¿Usando HikariCP u otra opción de agrupación de conexiones? Estoy usando HikariCP y veo algo similar cuando inicio sesión psqly hago select query from pg_stat_activity;... También me preguntaba por qué ocurre esto; Supongo que este es un mecanismo por el cual HikariCP mantiene las conexiones "frescas".
Chris W.

Respuestas:

2

Si ellos están ahí; están allí, pero no salieron mágicamente de la nada. Si bien me encantaría que regreses y nos digas cuáles fueron en tu caso, generalmente es una de dos cosas,

  1. Agrupación de conexiones
  2. Abstracción ORM o SQL

A veces estos tipos se conectan y comienzan transacciones vacías, o preparan una transacción. Siempre es el resultado de una mala biblioteca. Es excusable si la biblioteca es nueva o nueva en la base de datos. Si la biblioteca tiene años y está haciendo esto, sospecho que no tienen demasiados ojos en ella y buscan alternativas.

De los comentarios,

Postgres no crea conexiones por sí mismo. Es su aplicación la que crea esas conexiones y ejecuta esas consultas. Posiblemente un grupo de conexiones o algo similar. - a_horse_with_no_name 10 de septiembre de 13 a las 9:03

¿Estás ejecutando una aplicación Java? ¿Usando HikariCP u otra opción de agrupación de conexiones? Estoy usando HikariCP y veo algo similar cuando inicio sesión en psql y selecciono la consulta de pg_stat_activity; ... También me preguntaba por qué ocurre esto; Supongo que este es un mecanismo por el cual HikariCP mantiene las conexiones "frescas". - Chris W. Jan 16 '16 a las 19:22

Si bien es posible, es un intento de mantener una conexión "fresca". La forma kosher de hacerlo es algo como esto

result = PQexec(imp_dbh->conn, "/* DBD::Pg ping test v3.6.0 */");

Es posible que desee presentar un informe de error para utilizar ese método en su lugar.

Evan Carroll
fuente