Re: Consulta error: remaining connection slots are reserved for non-replication superuser connections

Lists: arpug
From: Alberto Paparelli <alberto(at)paparelli(dot)com(dot)ar>
To: arpug <arpug(at)postgresql(dot)org>
Subject: Consulta error: remaining connection slots are reserved for non-replication superuser connections
Date: 2018-11-22 22:48:34
Message-ID: CAF=q5q+EPtgx=vLmaZ+Et8UfU5J78+_bN=1QLSseFwpzb2fCFQ@mail.gmail.com
Views: Raw Message | Whole Thread | Download mbox | Resend email
Lists: arpug

Hola Lista, tengo un problema con postgres, y necesitaría una mano
para ver por donde encararar la búsqueda. buscando bastante en
internet, la mayoria va por lo mas simple que es ampliar el valor de
max_connections, pero no creo que sea la solución ideal.

El trace me tira:
File "/home/smd/env/local/lib/python2.7/site-packages/psycopg2/__init__.py",
line 164, in connect
conn = _connect(dsn, connection_factory=connection_factory, async=async)
OperationalError: (OperationalError) FATAL: remaining connection
slots are reserved for non-replication superuser connections
None None

La infraestura es la clásica. 4 webservers con nginx, 2 servers para
la db (master y replica), y otro server de redis.

El error lo da cuando le quiero sumar un 5° servidor para la aplicación web.

Usamos SQLAlchemy + pyramid (framework python).

La aplicación tiene muchos usuarios (50000), pero no concurrentes, un
promedio de 100 usuarios conectados continuamente.

Si me pueden orientar por donde buscar les agradecería muchísimo.

Saludos!


From: Fernando Fontana <fernando(dot)fontana(at)gmail(dot)com>
To: alberto(at)paparelli(dot)com(dot)ar
Cc: arpug <arpug(at)postgresql(dot)org>
Subject: Re: Consulta error: remaining connection slots are reserved for non-replication superuser connections
Date: 2018-11-22 23:37:06
Message-ID: CABQB1KMCs-Z3PVHQ-2WCa5kirAMBTBOL4Ku91r64rxoMo=ENtg@mail.gmail.com
Views: Raw Message | Whole Thread | Download mbox | Resend email
Lists: arpug

Hola,
Llegaste a la máxima cantidad de conexiones simultáneas permitidas. FIjate
el parámetro max_connections de postgresql.conf, seguramente tengas que
aumentarlo.

Saludos,
Fernando

El jue., 22 nov. 2018 a las 19:52, Alberto Paparelli (<
alberto(at)paparelli(dot)com(dot)ar>) escribió:

> Hola Lista, tengo un problema con postgres, y necesitaría una mano
> para ver por donde encararar la búsqueda. buscando bastante en
> internet, la mayoria va por lo mas simple que es ampliar el valor de
> max_connections, pero no creo que sea la solución ideal.
>
> El trace me tira:
> File
> "/home/smd/env/local/lib/python2.7/site-packages/psycopg2/__init__.py",
> line 164, in connect
> conn = _connect(dsn, connection_factory=connection_factory,
> async=async)
> OperationalError: (OperationalError) FATAL: remaining connection
> slots are reserved for non-replication superuser connections
> None None
>
>
> La infraestura es la clásica. 4 webservers con nginx, 2 servers para
> la db (master y replica), y otro server de redis.
>
> El error lo da cuando le quiero sumar un 5° servidor para la aplicación
> web.
>
> Usamos SQLAlchemy + pyramid (framework python).
>
> La aplicación tiene muchos usuarios (50000), pero no concurrentes, un
> promedio de 100 usuarios conectados continuamente.
>
> Si me pueden orientar por donde buscar les agradecería muchísimo.
>
> Saludos!
>
>


From: Fernando Hevia <fhevia(at)gmail(dot)com>
To: alberto(at)paparelli(dot)com(dot)ar
Cc: arpug <arpug(at)postgresql(dot)org>
Subject: Re: Consulta error: remaining connection slots are reserved for non-replication superuser connections
Date: 2018-11-22 23:38:45
Message-ID: CAGYT1XRCaYstL4nsWF43KB_-yrd_car0yJzmyE52mZKsw5fy7g@mail.gmail.com
Views: Raw Message | Whole Thread | Download mbox | Resend email
Lists: arpug

El jue., 22 de nov. de 2018 a la(s) 19:52, Alberto Paparelli (
alberto(at)paparelli(dot)com(dot)ar) escribió:

> Hola Lista, tengo un problema con postgres, y necesitaría una mano
> para ver por donde encararar la búsqueda. buscando bastante en
> internet, la mayoria va por lo mas simple que es ampliar el valor de
> max_connections, pero no creo que sea la solución ideal.
>

Si no lo estás haciendo ya tenés que usar un connection pooler como
pgbouncer o pgpool2. Una app web no puede prescindir de esto.
Desconozco si Pyramid te brinda pooling a la base, sino usas los que
mencioné antes.

Si ya tienes pool de conexiones en la app, seguramente cada server
establece una cantidad de conexiones mínimas cuya sumatoria está superando
el max_connections de postgres. En ese caso te recomiendo ajustar la
configuración de los poolers para que en su conjunto nunca superen el
máximo de conexiones admitidas y sólo incrementar max_connections cuando
sea realmente necesario (ej., encolamiento de queries en la aplicación
porque no hay conexiones libres). Pero si tenes un escenario de crecimiento
elástico en los app servers o queres prescindir de ese ajuste fino,
directamente meté pgbouncer entre la base y los app servers. En esa
configuración la aplicación se conectará a pgbouncer y no a la base
directamente. Pgbouncer multiplexará las conexiones en al menos un orden de
magnitud y con eso te olvidas del tema.

Saludos.


From: Alberto Paparelli <alberto(at)paparelli(dot)com(dot)ar>
To: fhevia(at)gmail(dot)com
Cc: arpug <arpug(at)postgresql(dot)org>
Subject: Re: Consulta error: remaining connection slots are reserved for non-replication superuser connections
Date: 2018-11-22 23:44:36
Message-ID: CAF=q5qLegU2Ppg42yR4zp6wCkL=Q70Dt+0321GZydCB4+1k7eQ@mail.gmail.com
Views: Raw Message | Whole Thread | Download mbox | Resend email
Lists: arpug

On Thu, Nov 22, 2018 at 8:39 PM Fernando Hevia <fhevia(at)gmail(dot)com> wrote:
> Si no lo estás haciendo ya tenés que usar un connection pooler como pgbouncer o pgpool2. Una app web no puede prescindir de esto.
> Desconozco si Pyramid te brinda pooling a la base, sino usas los que mencioné antes.

Gracias Fernando, no sabía sobre el tema de pooler. voy a investigar
un poco para utilizarlo.

Como es el tema, si no lo usas cada conexión (usuario) abre una
conexión a la DB?


From: Fernando Hevia <fhevia(at)gmail(dot)com>
To: alberto(at)paparelli(dot)com(dot)ar
Cc: arpug <arpug(at)postgresql(dot)org>
Subject: Re: Consulta error: remaining connection slots are reserved for non-replication superuser connections
Date: 2018-11-23 01:15:07
Message-ID: CAGYT1XQHgZRne_o4oqeAzbRfT-WhPWCrRv+B+7ggSOw16dZkhw@mail.gmail.com
Views: Raw Message | Whole Thread | Download mbox | Resend email
Lists: arpug

El jue., 22 de nov. de 2018 a la(s) 20:48, Alberto Paparelli (
alberto(at)paparelli(dot)com(dot)ar) escribió:

> On Thu, Nov 22, 2018 at 8:39 PM Fernando Hevia <fhevia(at)gmail(dot)com> wrote:
> > Si no lo estás haciendo ya tenés que usar un connection pooler como
> pgbouncer o pgpool2. Una app web no puede prescindir de esto.
> > Desconozco si Pyramid te brinda pooling a la base, sino usas los que
> mencioné antes.
>
>
> Gracias Fernando, no sabía sobre el tema de pooler. voy a investigar
> un poco para utilizarlo.
>
> Como es el tema, si no lo usas cada conexión (usuario) abre una
> conexión a la DB?
>

Eso o peor. Según como esté programada la aplicación un mismo usuario
podría incluso abrir múltiples conexiones a la base en forma concurrente.


From: Alberto Paparelli <alberto(at)paparelli(dot)com(dot)ar>
To: Fernando Hevia <fhevia(at)gmail(dot)com>
Cc: arpug <arpug(at)postgresql(dot)org>
Subject: Re: Consulta error: remaining connection slots are reserved for non-replication superuser connections
Date: 2018-12-20 13:45:51
Message-ID: CAF=q5qLXzjOUw2dzUU9TjzXFR3zcjsiHygQ8FND6vm--P_b_LA@mail.gmail.com
Views: Raw Message | Whole Thread | Download mbox | Resend email
Lists: arpug

Hola Lista, solo para comentar que la solución de Fernando funciono perfecto!

Después de varias pruebas y unas semanas en producción va todo perfecto.

Saludos!

On Thu, Nov 22, 2018 at 10:15 PM Fernando Hevia <fhevia(at)gmail(dot)com> wrote:
>
>
> El jue., 22 de nov. de 2018 a la(s) 20:48, Alberto Paparelli (alberto(at)paparelli(dot)com(dot)ar) escribió:
>>
>> On Thu, Nov 22, 2018 at 8:39 PM Fernando Hevia <fhevia(at)gmail(dot)com> wrote:
>> > Si no lo estás haciendo ya tenés que usar un connection pooler como pgbouncer o pgpool2. Una app web no puede prescindir de esto.
>> > Desconozco si Pyramid te brinda pooling a la base, sino usas los que mencioné antes.
>>
>>
>> Gracias Fernando, no sabía sobre el tema de pooler. voy a investigar
>> un poco para utilizarlo.
>>
>> Como es el tema, si no lo usas cada conexión (usuario) abre una
>> conexión a la DB?
>
>
> Eso o peor. Según como esté programada la aplicación un mismo usuario podría incluso abrir múltiples conexiones a la base en forma concurrente.
>
>