Re: Recomendación sobre el tiempo idle de las conexiones

From: Anthony Sotolongo <asotolongo(at)gmail(dot)com>
To: "Ivan Perales M(dot)" <ivan(dot)perales(at)gmail(dot)com>
Cc: Ayuda Esp PostgreSQL <pgsql-es-ayuda(at)postgresql(dot)org>
Subject: Re: Recomendación sobre el tiempo idle de las conexiones
Date: 2015-08-13 19:12:38
Message-ID: 55CCEC26.9030100@gmail.com
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-es-ayuda

On 13/08/15 15:52, Ivan Perales M. wrote:
> No creo que pgbouncer sea mi opción, presisamente mi problema es que
> las conexiones se cachean llegando así al límite de las 100
> predeterminadas que vienen en postgres.
>
lo has probado?

> Lo que necesito es algo así como un datasource global al que le pueda
> pasar datasources de bases de datos específicas y éste se encargue de
> checar idle times para cerrar conexiones.
>
el pgbouncer hace algo como eso, chequea parámetros de
configuracion(https://pgbouncer.github.io/config.html) como:

server_lifetime

The pooler will try to close server connections that have been connected
longer than this. Setting it to 0 means the connection is to be used
only once, then closed. [seconds]

Default: 3600.0

server_idle_timeout

If a server connection has been idle more than this many seconds it will
be dropped. If 0 then timeout is disabled. [seconds]

Default: 600.0

server_connect_timeout

If connection and login won’t finish in this amount of time, the
connection will be closed. [seconds]

Default: 15.0

query_timeout

Queries running longer than that are canceled. This should be used only
with slightly smaller server-side statement_timeout, to apply only for
network problems. [seconds]

Default: 0.0 (disabled)

query_wait_timeout

Maximum time queries are allowed to spend waiting for execution. If the
query is not assigned to a server during that time, the client is
disconnected. This is used to prevent unresponsive servers from grabbing
up connections. [seconds]

Default: 0.0 (disabled)

client_idle_timeout

Client connections idling longer than this many seconds are closed. This
should be larger than the client-side connection lifetime settings, and
only used for network problems. [seconds]

Default: 0.0 (disabled)

idle_transaction_timeout

If client has been in “idle in transaction” state longer, it will be
disconnected. [seconds]

Default: 0.0 (disabled)

saludos

> Pero no encontré ninguno y tampoco creo que lo haya, ya que no es un
> muy buen diseño manejar cantidad variables de bases de datos, pero
> bueno, es el diseño que mejor cumple nuestro requerimiento. Creo que
> lo que tendré que hacer es asignar un tiempo de vida a las conexiones
> idle para que se vayan cerrando las conexiones mas viejas, y ya que el
> sistema no es de alta concurrencia, a lo mucho 10 usuarios, espero no
> impacte el performance de estar abriendo conexiones cada cierto tiempo.
>
> Saludos
>
> 2015-08-13 13:00 GMT-05:00 Anthony Sotolongo <asotolongo(at)gmail(dot)com
> <mailto:asotolongo(at)gmail(dot)com>>:
>
> Hola Ivan
>
> On 13/08/15 14:38, Ivan Perales M. wrote:
>
> Buenas tardes, pido su opinión ya que no soy muy bueno
> administrando bases de datos.
>
> Tengo un software el cua maneja bases de datos dinámicas, es
> decir, una base de datos fija principal y se crea una base de
> datos por cada cliente que se registra en el programa. El
> software está desarrollado en java y utilizo BasiDataSource de
> apache como pool de conexiones para cada base de datos.
>
> El software es también cliente-servidor, lo que significa que
> un usuario puede estar trabajando con una base de datos y otro
> usuario con otra, lo que significa que se tienen una o más
> conexiones por cada base de datos, mas aparte un usuario puede
> switchear entre clientes con solo seleccionarlo de un listado,
> lo que implica crear conexiones a esa base de datos si nadie
> la estaba usando.
>
> Hace poco noté que un cliente del software registró mas de 100
> clientes en el programa, y pusieron a una muchacha a cargar
> cierta información a cada cliente, por lo que se crearon 1
> conexión por cada base y a eso le sumamos que otros usuarios
> estaban trabajando con algunos clientes, pues algunas bases de
> datos llegaron a tener hasta 5 conexiones. Llego un momento en
> que se superaron las 100 conexiones predeterminadas para
> usuarios regulares que ya no se pudo trabajar en muchos
> clientes. Al checar en pg_stat_activity efectivamente estaban
> 99 conexiones. El ultimo uso de la mayoria de conexiones tenia
> varios minutos, de entre 3 hasta 10, por lo que seguramente
> fueron las primeras bases de datos que se abrieron.
>
> Lo que me gustaria me aconsejaran es a decidir si aumento el
> numero de conexiones para usuarios regulares u optimizo los
> datasource para que cierren la conexión a por decir 2 o 3
> minutos de que no se utilize. No se que tanto le impacte al
> performance que se esten abriendo nuevas conexiones en lugar
> de mantenerlas abiertas, por poner un ejemplo un usuario
> genera un reporte y comienza a analizar la información, puede
> llevar 10 segundos en lo que genera otro reporte para mejorar
> el análisis ó puede llevarse mas de 10 minutos.
>
> No conocemos los recursos que dispones, pero aumentar el num de
> conexiones en PostgreSQL no vas a resolver mucho, no conozzo como
> tu driver utiliza el pool de conexiones, pero sino no estas
> claro, se te aconseja utilizar alguno, el pgbouncer te puede
> ayudar a resolver el tema
>
> Además, van a existir algunos procesos automáticos que agarren
> cada base de datos para generar reportes utilizando el
> datasource, por lo que yo no tengo control sobre cuantas
> conexiones crea cada uno.
>
> Saludos y gracias por su tiempo
>
> --
> Lindolfo Iván Perales Mancinas
> Solo existen 10 tipos de personas en el mundo, las que saben
> binario y las que no.
>
> Saludos
>
>
>
>
> --
> Lindolfo Iván Perales Mancinas
> Solo existen 10 tipos de personas en el mundo, las que saben binario y
> las que no.

In response to

Responses

Browse pgsql-es-ayuda by date

  From Date Subject
Next Message Ivan Perales M. 2015-08-13 19:38:05 Re: [pgsql-es-ayuda] Recomendación sobre el tiempo idle de las conexiones
Previous Message Alvaro Herrera 2015-08-13 19:12:10 Re: Recomendación sobre el tiempo idle de las conexiones