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