Hola Anthony.

Pgpool es un pool de conexiones y no es necesario que al llegar una
conexión al pgpool, pgpool tenga que abrir una conexión a cada postgres y
luego cerrarlas, las conexiones en pgpool y el postgres se mantiene
abiertas, el único problema que eh notado de esto que si se envía un
reporte muy pesado, el backend puede consumir hasta 1GB de memoria
compartida y solo liberar esta memoria hasta que el pgpool cierre la
conexión, pero si su aplicaciones hace consultas pequeñas y muy parecidas,
el tener la información en la memoria compartida puede tener un muy buen
rendimiento en el planificador y el motor.

El parámetro client_idle_limit  es para que pgpool cierre la conexión si un
cliente del pgpool no cerro la conexión correctamente.

Para tener el comportamiento esperado de cerrar el conexión entre postgres
y el pgppol se debe configurar en los postgres el parámetro
"tcp_keepalives_idle", yo lo tengo configurado en 7200(2horas).

Para tener en cuenta el pg_stat_activity muestra la activadad del nodo,
para ver la actividad en el pgpool seria "show pool_pools" mas info en
http://www.pgpool.net/docs/latest/pgpool-en.html#show-commands



El 13 de julio de 2015, 9:01, Anthony Sotolongo <asotolo...@gmail.com>
escribió:

> Estimados, tengo un pgpool configurado para acceder a 2 servidores
> PostgreSQL con streaming replication, y tengo estos valores en el
> pgpool.conf
>
> # - Life time -
>
> child_life_time = 300                                    # Pool exits
> after being idle for this many seconds
> child_max_connections = 0                                    # Pool exits
> after receiving that many connections
> # 0 means no exit
> connection_life_time = 420                          # Connection to
> backend closes after being idle for this many seconds
> # 0 means no close
> client_idle_limit = 300                                  # Client is
> disconnected after being idle for that many seconds
>                                                                    # (even
> inside an explicit transactions!)
>                                                                # 0 means
> no disconnection
>
>
> Tengo entendido que client_idle_limit desconectará los clientes idle luego
> de (300 seg en este caso)
> y que connection_life_time me desconectara de los backend de postgres
> luego de (420 seg en este caso)
> (no quieren decir que sean los mejores valores o los definitivos, estamos
> tratando de ajustarlos)
> Estamos tratando de ajustar los valores
>
> El tema está en que haciendo esta consulta a través del pgpool:
> select pid,state,xact_start,query_start,state_change,query  from
> pg_stat_activity
>
> obtengo:
> 4351 | idle   |                               | 2015-07-13
> 09:57:11.52977-03  | 2015-07-13 09:57:11.530004-03 |  DISCARD ALL
>  4601 | idle   |                               | 2015-07-13
> 10:21:36.21236-03  | 2015-07-13 10:21:36.212696-03 |  DISCARD ALL
>  4184 | idle   |                               | 2015-07-13 09:43:12.
> 427339-03 | 2015-07-13 09:43:12.428155-03 |  DISCARD ALL
>  4457 | idle   |                               | 2015-07-13
> 10:06:24.988995-03 | 2015-07-13 10:06:24.98923-03  |  DISCARD ALL
>  5032 | active | 2015-07-13 10:51:36.675985-03 | 2015-07-13 10:51:36.
> 675985-03 | 2015-07-13 10:51:36.675992-03 | select
> pid,state,xact_start,query_start,state_ch
> ange,query  from pg_stat_activity
> : ;
>  4193 | idle   |                               | 2015-07-13
> 09:47:37.27413-03  | 2015-07-13 09:47:37.274514-03 |  DISCARD ALL
>  4490 | idle   |                               | 2015-07-13 10:06:16.
> 192748-03 | 2015-07-13 10:06:16.19298-03  |  DISCARD ALL
>  4203 | idle   |                               | 2015-07-13 09:44:24.
> 666702-03 | 2015-07-13 09:44:24.667234-03 |  DISCARD ALL
>  4204 | idle   |                               | 2015-07-13
> 09:44:24.714707-03 | 2015-07-13 09:44:24.714869-03 |  DISCARD ALL
>  4205 | idle   |                               | 2015-07-13
> 09:44:24.704854-03 | 2015-07-13 09:44:24.705512-03 |  DISCARD ALL
>  4612 | idle   |                               | 2015-07-13 10:28:10.
> 681199-03 | 2015-07-13 10:28:10.681419-03 | ABORT
>  4613 | idle   |                               | 2015-07-13 10:31:20.
> 242776-03 | 2015-07-13 10:31:20.243073-03 |  DISCARD ALL
>  4614 | idle   |                               | 2015-07-13
> 10:17:02.001256-03 | 2015-07-13 10:17:02.001493-03 |  DISCARD ALL
>  4618 | idle   |                               | 2015-07-13 10:21:36.
> 722948-03 | 2015-07-13 10:21:36.723194-03 |  DISCARD ALL
>  4619 | idle   |                               | 2015-07-13
> 10:17:29.934837-03 | 2015-07-13 10:17:29.93506-03  |  DISCARD ALL
>  4624 | idle   |                               | 2015-07-13 10:17:39.
> 546724-03 | 2015-07-13 10:17:39.546923-03 |  DISCARD ALL
>
> La mayoria de las actividades ya pasaron los 300 seg e incluso los 420 seg
> de los parametros "client_idle_limit" y "connection_life_time" y están en
> estado "idle" y aun estan conectadas, será que no terminan aun sus querys
> (DISCARD ALL, ABORT, ect), o hay algo que no comprendo de los parametros
> del pgpool, pues ya paso tiempo y aun ocupan las conexiones
>
>
> La idea que necesitamos es que luego de un intervalo sin nada que hacer
> (estado "idle") se desconecte y desocupe la conex.
>
>
> Saludos y atentos a sus sugerencias.
>
> Anthony
>
>
>
>
>
>
>
> -
> Enviado a la lista de correo pgsql-es-ayuda (pgsql-es-ayuda@postgresql.org
> )
> Para cambiar tu suscripción:
> http://www.postgresql.org/mailpref/pgsql-es-ayuda
>



-- 
Raul Andres Gutierrez Alejo

Responder a