Usando pool de conexiones fue:(Re: [pgsql-es-ayuda] Inserts lentos)

From: Jaime Casanova <jcasanov(at)systemguards(dot)com(dot)ec>
To: Alvaro Herrera <alvherre(at)alvh(dot)no-ip(dot)org>
Cc: pgsql-es-ayuda(at)postgresql(dot)org
Subject: Usando pool de conexiones fue:(Re: [pgsql-es-ayuda] Inserts lentos)
Date: 2009-02-09 18:07:54
Message-ID: 3073cc9b0902091007g46ad26cep3f5ea50bbfefa874@mail.gmail.com
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-es-ayuda

2009/2/6 Alvaro Herrera <alvherre(at)alvh(dot)no-ip(dot)org>:
>
>> #EH: Allow at least 1 prepared statement by connection,
>> #EH: because we intend to use them intensively
>> max_prepared_transactions = 1000 # can be 0 or more
>
> ¿Realmente tienes 1000 max_connections? Estás loco. Considera disminuir
> las conexiones que tienes abiertas. Un valor más cercano a 20 puede ser
> razonable; usa un pooler (pgBouncer quizás). Esto se ha conversado
> antes en la lista; busca en los archivos.
>

Hace poco estuve asesorando a un cliente sobre varios aspectos
relacionados a postgres, este fue uno de ellos...

Cuando vi el valor de max_connections me rei por un buen rato... hasta
que intente poner el pgPool, si uno entraba a cierta pagina en
particular de la aplicacion web de repente todas las conexiones del
pool quedaban usadas y en espera... signo, segun yo, de que usaban
conexiones persitentes desde php (pg_pconnect()) pero aun despues de
cambiar eso el problema continuaba... la razon era que la aplicacion
estaba tan mal hecha que no habia un solo sitio donde establece
conexion sino varios archivos y por ridiculo que parezca una sola
pagina establecia mas de 1 conexion (de hecho una por objeto del que
se queria obtener datos (era una pagina donde se despliegan lineas de
datos) la mayoria usaba pg_nconnect(). segun yo con pg_nconnect() no
deberia haber tenido problema pero por la forma de trabajar de pgPool
si tuve :(

luego probe el pgBouncer en modo de transaccion este me funciono mejor
(claro lo mejor era arreglar la aplicacion pero ellos tenian otras
prioridades)... lamentablemente, se que lo sacaron porque tuvieron un
"problema"...

hoy por hoy me voy por el pgBouncer siempre, es mas amigable...
proximamente volvere donde ese cliente y tratare de averiguar cual fue
el "problema"...

aun asi, si tu aplicacion no colabora el uso de un pool puede ser
menos que imposible... a menos que sepan algo que yo no...

--
Atentamente,
Jaime Casanova
Soporte y capacitación de PostgreSQL
Asesoría y desarrollo de sistemas
Guayaquil - Ecuador
Cel. +59387171157

Browse pgsql-es-ayuda by date

  From Date Subject
Next Message Jaime Casanova 2009-02-09 18:12:22 Re: [pgsql-es-ayuda] Re: [pgsql-es-ayuda] Ejecutar funcion SIN transacción
Previous Message Alvaro Herrera 2009-02-09 18:04:57 Re: Como hacer un for dentro de un trigger