Re: duda sobre pgpool

From: raul andrez gutierrez alejo <raulandrez(at)gmail(dot)com>
To: Anthony Sotolongo <asotolongo(at)gmail(dot)com>
Cc: POSTGRES <pgsql-es-ayuda(at)postgresql(dot)org>
Subject: Re: duda sobre pgpool
Date: 2015-07-13 14:41:27
Message-ID: CAHQFj71KZzQy_aDQJnqi4WRb=piW6yKogC74Z5OruLs4yOu7jg@mail.gmail.com
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-es-ayuda

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 <asotolongo(at)gmail(dot)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(at)postgresql(dot)org
> )
> Para cambiar tu suscripción:
> http://www.postgresql.org/mailpref/pgsql-es-ayuda
>

--
Raul Andres Gutierrez Alejo

In response to

Responses

Browse pgsql-es-ayuda by date

  From Date Subject
Next Message Anthony Sotolongo 2015-07-13 15:26:03 Re: duda sobre pgpool
Previous Message Anthony Sotolongo 2015-07-13 14:01:09 duda sobre pgpool