Re: funcion pg_terminate_backend(pid) en postgresql 10

From: Jaime Casanova <jcasanov(at)systemguards(dot)com(dot)ec>
To: Javier Lugo Porras <jlugop(at)hotmail(dot)com>
Cc: "pgsql-es-ayuda(at)postgresql(dot)org" <pgsql-es-ayuda(at)postgresql(dot)org>, Javier Lugo Porras <jlugop(at)multe-commerce(dot)com>
Subject: Re: funcion pg_terminate_backend(pid) en postgresql 10
Date: 2021-01-21 05:03:30
Message-ID: CAJKUy5jMm=BmwA3BR5_DPvaWguTsHG17WTFKPf=6+9fgMbq1Cg@mail.gmail.com
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-es-ayuda

On Wed, Jan 20, 2021 at 4:36 PM Javier Lugo Porras <jlugop(at)hotmail(dot)com> wrote:
>
> Hola a todos,
> esta funcion que les copio me trabaja muy bien con postgresql 9-5, migre
> a la 10.15, y no esta funcionando a traves de un proceso .cmd en
> windows, sin embargo lo ejecuto usando pgadmin Y trabaja muy bien. El
> user que lo llama es SUPERUSUARIO, me manda un error en la Linea 1...No
> es cuestion de ROLES, ya que si realiza otras sentencias (INSERT) sin
> problemas.
>

Y cual es el mensaje de error?

además, no es que desconfíe de ti pero puedes mostrar el resultado de
la consulta:
SELECT rolname, rolsuper FROM pg_authid WHERE rolname = 'nombre del usuario';

otras cosas que puedes revisar, estas seguro que estas conectado a la
base de datos correcta?

> El proceso elimina los usuarios conectados a la bd CONECTADOS, despues
> de 1hora y superiores a 15minutos, (para liberar las conexiones
> muertas). Migre a la version 10 y no me esta trabajando, Este proceso
> lo tengo a ejecutarse cada 15 minutos y me mantiene el sitio
> FRESH!...PERO ahora tengo que estar REVISANDO!...

la función sigue funcionando, el problema tiene que forzosamente estar
de tu lado porque no es falla de la base.

por cierto, el problema real es el que describes (que se quedan
conexiones abiertas tanto tiempo) y no que pg_terminate_backend() por
algún motivo "no esté funcionando". has analizado porque se quedan
tanto tiempo esas conexiones?

mi teoría, sin ninguna evidencia a la mano, es que las consultas que
no se están muriendo está aún ejecutando alguna consulta (state =
'active') y la consulta está en un punto que no acepta señales

>
> SELECT pg_terminate_backend(pid)
> FROM pg_stat_activity
> WHERE pid <> pg_backend_pid()
> AND (datname = 'CLIENTE') AND (usename = 'U1' or usename = 'U2')
> AND (extract(hour from (current_timestamp - state_change)) >= 1
> OR extract(minute from (current_timestamp - state_change)) >= 15);
>

Esta consulta no considera el estado de las consultas, le da igual si
están en ejecución ('active'), esperando actividad ('idle') o
esperando actividad en una transacción ('idle in transaction'). es a
proposito?

quizá te sirvan los parámetros
(https://www.postgresql.org/docs/10/runtime-config-client.html)
- statement_timeout
- idle_in_transaction_session_timeout

--
Jaime Casanova
SystemGuards
Consultores de PostgreSQL

In response to

Responses

Browse pgsql-es-ayuda by date

  From Date Subject
Next Message Javier Lugo Porras 2021-01-25 20:08:43 Re: funcion pg_terminate_backend(pid) en postgresql 10
Previous Message Javier Lugo Porras 2021-01-20 21:36:20 funcion pg_terminate_backend(pid) en postgresql 10