Hola Raul, gracias por responder, me quieres decir que si las
actividades que están haciendo son muy grandes y consumen mucha memoria
compartida se demora en la liberación de memoria y puede ser la causa de
que aun esten en DISCARD ALL, ABORT en el estado "idle"? es decir esas
actividades no deja que pgpool desocupe la conexión del cliente y
postgres, te muestro el resultado de show pool_processes;
pool_pid | start_time | database | username
| create_time | pool_counter
----------+---------------------+-----------------------+------------------------+---------------------+--------------
13160 | 2015-07-13 10:42:11 | |
| |
2541 | 2015-07-10 17:51:31 | db_documentacion_sdit |
usr_documentacion_sdit | 2015-07-13 09:41:41 | 1
12935 | 2015-07-13 09:57:25 | db_documentacion_sdit |
usr_documentacion_sdit | 2015-07-13 10:03:41 | 1
1976 | 2015-07-10 16:09:52 | |
| |
1977 | 2015-07-10 16:09:52 | |
| |
1978 | 2015-07-10 16:09:52 | db_documentacion_sdit |
usr_documentacion_sdit | 2015-07-13 10:14:59 | 1
1979 | 2015-07-10 16:09:52 | |
| |
13445 | 2015-07-13 12:13:52 | |
| |
1981 | 2015-07-10 16:09:52 | db_documentacion_sdit |
usr_documentacion_sdit | 2015-07-13 09:42:22 | 2
13159 | 2015-07-13 10:42:11 | |
| |
1983 | 2015-07-10 16:09:52 | db_documentacion_sdit |
usr_documentacion_sdit | 2015-07-13 10:15:27 | 1
12936 | 2015-07-13 09:57:25 | db_documentacion_sdit |
usr_documentacion_sdit | 2015-07-13 10:04:09 | 1
1985 | 2015-07-10 16:09:52 | |
| |
13067 | 2015-07-13 10:20:37 | |
| |
1987 | 2015-07-10 16:09:52 | |
| |
1988 | 2015-07-10 16:09:52 | db_documentacion_sdit |
usr_documentacion_sdit | 2015-07-13 10:14:59 | 2
1989 | 2015-07-10 16:09:52 | db_documentacion_sdit |
usr_documentacion_sdit | 2015-07-13 10:14:59 | 1
12869 | 2015-07-13 09:43:33 | db_documentacion_sdit |
usr_documentacion_sdit | 2015-07-13 10:15:27 | 1
12866 | 2015-07-13 09:43:33 | |
| |
12864 | 2015-07-13 09:43:08 | |
| |
12870 | 2015-07-13 09:43:33 | |
| |
1994 | 2015-07-10 16:09:52 | db_documentacion_sdit |
usr_documentacion_sdit | 2015-07-13 09:41:10 | 1
1995 | 2015-07-10 16:09:52 | |
| |
12893 | 2015-07-13 09:51:11 | db_documentacion_sdit |
usr_documentacion_sdit | 2015-07-13 10:15:37 | 1
12897 | 2015-07-13 09:52:14 | db_documentacion_sdit |
usr_documentacion_sdit | 2015-07-13 09:54:42 | 1
13077 | 2015-07-13 10:24:29 | |
| |
13310 | 2015-07-13 11:32:49 | |
| |
2000 | 2015-07-10 16:09:52 | db_documentacion_sdit |
usr_documentacion_sdit | 2015-07-13 09:42:22 | 1
2001 | 2015-07-10 16:09:52 | db_documentacion_sdit |
usr_documentacion_sdit | 2015-07-13 09:42:22 | 1
13194 | 2015-07-13 10:53:30 | postgres |
postgres | 2015-07-13 12:13:55 | 1
13131 | 2015-07-13 10:35:50 | |
| |
12990 | 2015-07-13 10:03:05 | db_documentacion_sdit |
usr_documentacion_sdit | 2015-07-13 10:14:27 | 4
y el resultado de la consulta:
select pid,state,xact_start,query_start,state_change,query from
pg_stat_activity;
pid | state | xact_start | query_start
| state_change | query
------+--------+-------------------------------+-------------------------------+-------------------------------+-------------------------------------------------
-----------------------------------
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
5936 | active | 2015-07-13 12:18:59.426768-03 | 2015-07-13
12:18:59.426768-03 | 2015-07-13 12:18:59.426775-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
(16 filas)
No pudiera ser una mala práctica de la app que no esta haciendo las
cosas como debería, de algo asi como no cerrar la transaccion o no
cerrar la conexion?
saludos
On 13/07/15 11:41, raul andrez gutierrez alejo wrote:
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
<mailto: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 <tel: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 <tel:427339-03> | 2015-07-13 09:43:12.428155-03
<tel: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 <tel:675985-03> |
2015-07-13 10:51:36.675985-03 <tel:675985-03> | 2015-07-13
10:51:36.675992-03 <tel: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 <tel:274514-03>
| DISCARD ALL
4490 | idle | | 2015-07-13
10:06:16.192748-03 <tel:192748-03> | 2015-07-13 10:06:16.19298-03
| DISCARD ALL
4203 | idle | | 2015-07-13
09:44:24.666702-03 <tel:666702-03> | 2015-07-13 09:44:24.667234-03
<tel: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 <tel:681199-03> | 2015-07-13 10:28:10.681419-03
<tel:681419-03> | ABORT
4613 | idle | | 2015-07-13
10:31:20.242776-03 <tel:242776-03> | 2015-07-13 10:31:20.243073-03
<tel: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 <tel:722948-03> | 2015-07-13 10:21:36.723194-03
<tel: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 <tel:546724-03> | 2015-07-13 10:17:39.546923-03
<tel: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 <mailto:pgsql-es-ayuda@postgresql.org>)
Para cambiar tu suscripción:
http://www.postgresql.org/mailpref/pgsql-es-ayuda
--
Raul Andres Gutierrez Alejo