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
-
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