Cantidad de conexiones activas a la base de datos

Buenas noches,
Estamos en la versión 3.20.2 y tenemos problemas con la cantidad de conexiones a la base de datos.
Si ejecuto la siguiente consulta:

SELECT * FROM pg_stat_activity;

Veo que hay conexiones activas que están desde hace 7 horas.
Esto nos está pasando luego del cambio de versión de la 3.19 a 3.20
Habrá que correr algo sobre la base para crear índices o será algo de alguna de las aplicaciones, Gestión y Autogestión?
Si reinicio el servidor apache de Autogestión se borran todas las conexiones que están activas desde hace 7 horas.
Saludos
Marcela

Hola Marcela,

¿Si ejecutas con los siguientes filtros cuantos registros te devuelve?

SELECT * FROM pg_stat_activity WHERE datname = '<NOMBRE BD>' and state = 'active';

Referencia:
https://stackoverflow.com/questions/27435839/how-to-list-active-connections-on-postgresql

saludos.
2

Hola Leonel,

Si ejecuto la sentencia con los filtros que me indicas, me devuelve un solo registro, que es la conexión del pgadmin desde donde estoy ejecutando la consulta.

Saludos
Marcela

hola
podrias ejecutar este query y pegar el resultado aca:

select datname, usename, application_name, query, query_start, now() - query_start
from pg_stat_activity order by 6 desc;

Si las conexiones estan abiertas, sera que hay algun pool de conexiones que las mantiene ?

saludos
Ignacio

Hola Ignacio,
Te adjunto lo solicitado.

Si las conexiones estan abiertas, sera que hay algun pool de conexiones que las mantiene ?
Lo que vimos es que hay conexiones no activas que quedan abiertas, como hago para saber si hay algun pool? Saludos Marcela

resultado.zip (8 KB)

Hola Marcela

Por lo general que hayan algunas conexiones abiertas en el postgres no es un problema. De hecho es habitual hacer un select a la tabla pg_stat_activitiy y encontrar varias conexiones.

Quizas lo mas importante es monitorear la actividad de esas conexiones, si estan todo el tiempo enviando SQLs al postgres para que los resuelva, eso lo puede sobrecargar, pero por otro lado, esa es la funcion principal del postgres: atender requerimientos y contestarlos.

Para monitorear la actividad de las conexiones, podes activar los logs de postgres (solo por un rato te sugiero y luego apagarlos) y revisar esas conexiones que consultas envian al postgres.

Si hay alguna conexion que quieras dar de baja, lo podes hacer con la funcion pg_terminate_backend(pid) . El pid lo obtenes de la tabla pg_stat_activity.

saludos
Ignacio