reponde entre lineas
On 13/07/15 12:44, raul andrez gutierrez alejo wrote:
Hola.
sobre el correo respondo.
El 13 de julio de 2015, 10:26, Anthony Sotolongo <asotolo...@gmail.com
<mailto:asotolo...@gmail.com>> escribió:
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;
Para ver el consumo de CPU y RAM debe ser en Sistema Operativo, si es
linux un " top -C -U usuario_pstgres" permite ver el consumo, debe
buscar en el top el PID que retornar el show pool_processes en la
columna pool_backendpid.
resultado de top -U postgres (ahi estan incluidos los procesos clasicos,
bgwriter, chepointer, etc), esto lo ejecute en el master
4184 postgres 20 0 321m 9252 5672 S 0.0 0.2 0:00.03 postgres
4193 postgres 20 0 321m 9724 6328 S 0.0 0.2 0:00.07 postgres
4203 postgres 20 0 318m 5508 3360 S 0.0 0.1 0:00.00 postgres
4204 postgres 20 0 320m 8280 5588 S 0.0 0.1 0:00.01 postgres
4205 postgres 20 0 321m 9268 5672 S 0.0 0.2 0:00.02 postgres
4351 postgres 20 0 322m 10m 6972 S 0.0 0.2 0:00.14 postgres
4457 postgres 20 0 322m 9580 6464 S 0.0 0.2 0:00.13 postgres
4490 postgres 20 0 322m 9552 6448 S 0.0 0.2 0:00.13 postgres
4601 postgres 20 0 321m 9576 6248 S 0.0 0.2 0:00.14 postgres
4612 postgres 20 0 322m 10m 7212 S 0.0 0.2 0:00.29 postgres
4613 postgres 20 0 321m 9436 6128 S 0.0 0.2 0:00.12 postgres
4614 postgres 20 0 318m 5472 3324 S 0.0 0.1 0:00.00 postgres
4618 postgres 20 0 322m 10m 7056 S 0.0 0.2 0:00.17 postgres
4619 postgres 20 0 318m 5472 3324 S 0.0 0.1 0:00.00 postgres
4624 postgres 20 0 318m 5472 3324 S 0.0 0.1 0:00.00 postgres
7767 postgres 20 0 316m 13m 13m S 0.0 0.2 0:42.71 postgres
7768 postgres 20 0 173m 1320 548 S 0.0 0.0 0:00.03 postgres
7770 postgres 20 0 317m 47m 46m S 0.0 0.8 0:03.37 postgres
7771 postgres 20 0 316m 2372 1536 S 0.0 0.0 0:04.83 postgres
7772 postgres 20 0 316m 4880 4040 S 0.0 0.1 0:04.70 postgres
7773 postgres 20 0 317m 3000 1496 S 0.0 0.1 0:32.51 postgres
7774 postgres 20 0 176m 1908 640 S 0.0 0.0 0:57.09 postgres
7775 postgres 20 0 317m 3068 1452 S 0.0 0.1 0:30.36 postgres
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;
esta consulta es recomendable ejecutar con una conexión directa a cada
postgres, porque si se ejecuta pasando por el pgpool se puede
balancear y ejecutar en el master o en el esclavo.
Si claro el resultado de esta consulta lo hago en el master directo,
entiendo lo del balanceo ;-)
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?
si es una mala practica que la app no cierre la conexión
correctamente, pero se puede dar si la aplicación es de escritorio
por una pantalla azul, si es web el servidor de aplicación se reinicia
o si es movil se cae la conexión y en ningún caso se desconecta el
cliente correctamente , el parametro client_idle_limit es una medida
preventida.
Me huele que las estan dejando abiertas, pero lo que me resulta raro es
que client_idle_limit no cierra las conex (pgpool-cliente), a eso
queria llegar que no las está cerrando aun cuando han superado el umbral
de client_idle_limit(300) y la app este dejando la conex abiertas.
¿algo al respecto?
saludos y gracias
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
--
Raul Andres Gutierrez Alejo