Re: High Load Average

From: Silvio Quadri <silvioq(at)gmail(dot)com>
To: p2p p2p <p2pvideo(at)gmail(dot)com>
Cc: pgsql-es-ayuda(at)postgresql(dot)org
Subject: Re: High Load Average
Date: 2009-02-13 11:45:24
Message-ID: 61dc71dc0902130345o725ff19ah60f8575fd7d0846b@mail.gmail.com
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-es-ayuda

El día 12 de febrero de 2009 22:06, p2p p2p <p2pvideo(at)gmail(dot)com> escribió:
>
>
> El 12 de febrero de 2009 20:06, Silvio Quadri <silvioq(at)gmail(dot)com> escribió:
>>
>> El día 12 de febrero de 2009 15:40, p2p p2p <p2pvideo(at)gmail(dot)com> escribió:
>> > Buenas tardes,
>> >
>> > Tengo una aplicación web que está utilizando PostgreSQL, y en
>> > determinados
>> > momentos del día cuando hay aproximadamente unos 50 usuarios conectados
>> > la
>> > cosa va bien, la máquina suele estar con un load average de 3.5
>> > aproximadamente, si las consultas que le hacen los usuarios son muy
>> > pesadas.
>> > El problema es que hay momentos del día
>> > en los que la máquina se queda completamente colgada y no se recupera en
>> > cuestión de horas.
>> >
>> > Al principio pensaba que podría ser por el número de conexiones que
>> > puede
>> > admitir como máximo (max_connections) y le aumenté este valor a 500, y
>> > el de
>> > shared_buffers a 8MB. Por lo que he podido observar, en los momentos que
>> > la
>> > máquina se queda colgada es cuando están las 500 conexiones activas. Hay
>> > muchísimas consultas que indican que llevan varios minutos en ejecución,
>> > algunas otras en estado IDLE, y otras tantas que aparecen repetidas.
>> >
>> > He estado monitorizando con top, y veo que el load average puede llegar
>> > a
>> > alcanzar picos de hasta 120. Otro detalle que he observado es que la
>> > máquina
>> > no hace swap, lo que me hace pensar que no es problema de memoria. La
>> > máquina es un servidor con 3 GB de RAM, y la versión de PostgreSQL es la
>> > 8.2.
>>
>> ¿8MB de shared buffers? Es lo mismo que nada.
>> ¿500 conexiones web o 500 usuarios?
>> Silvio
>>
>
> En la documentación dice que el valor de shared_buffers debe ser igual al
> número de max_conections x 16 KB.
>
> max_conections x 16 KB = 500 x 16 = 8000
>
> De ahí que haya puesto 8MB. ¿Qué valor para shared buffers me recomiendas?
>

La documentación dice AT LEAST 128 kilobytes and AT LEAST 16 kilobytes times

"
Sets the amount of memory the database server uses for shared memory
buffers. The default is typically 32 megabytes (32MB), but might be
less if your kernel settings will not support it (as determined during
initdb). This setting must be at least 128 kilobytes and at least 16
kilobytes times max_connections. (Non-default values of BLCKSZ change
the minimum.) However, settings significantly higher than the minimum
are usually needed for good performance. Several tens of megabytes are
recommended for production installations. This parameter can only be
set at server start.
"

Ponele 200M para empezar, pero no es el único parámetro que vas a
tocar. Otros más avezados que yo te pueden guiar mejor. Vas a tener
que tocar un parámetro en el sistema operativo antes de reiniciar.
http://www.postgresql.org/docs/8.3/interactive/kernel-resources.html#SYSVIPC

> Las 500 conexiones, son conexiones a la BD. Según una tabla que tengo que me
> indica los usuarios que están online, suele estar entre 50 o 60 usuarios.

¿Y las 500 son de Web server? Al principio decías que era una
aplicación Web ... Hay algo que está mal en el web server.

¿Identificaste el proceso que "chupa" todo el procesador cuando se cuelga?

Silvio

>
> Muchas gracias.
>
>>
>> >
>> > ¿Qué puede estar pasando? ¿Qué me recomendáis que haga?
>> >
>> > Muchas gracias.
>> >
>>
>>
>>
>> --
>> Silvio Quadri
>
>

--
Silvio Quadri

In response to

Responses

Browse pgsql-es-ayuda by date

  From Date Subject
Next Message Yoel Mc Lennan 2009-02-13 13:11:52 Re: Timeout con ASP.net
Previous Message p2p p2p 2009-02-13 00:06:56 Re: High Load Average