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-14 16:44:46
Message-ID: 61dc71dc0902140844x29de1441j756a8cd646240393@mail.gmail.com
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-es-ayuda

El día 13 de febrero de 2009 23:23, p2p p2p <p2pvideo(at)gmail(dot)com> escribió:
>
>
> El 13 de febrero de 2009 12:45, Silvio Quadri <silvioq(at)gmail(dot)com> escribió:
>>
>> 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
>>
>
> Se me olvidó preguntarte antes por qué 200M es el valor adecuado. ¿Cómo lo
> has calculado?
>
> Muchas gracias!

Desconozco cuál es el valor adecuado, pero si tenés 3GB de Ram, 200Mb
de shared_buffer podés darle sin temor a afectar nada. Cambiáselo,
probá y después contame. Insisto, buscá discusiones viejas donde
algunos foristas más avezados que yo discuten estos parámetros.
De todas formas, como comentaba en otros mails (creo que de Jaime
también decía lo mismo), debe haber una consulta mal armada que se
está "comiendo" los recursos.

Saludos!
Silvio

In response to

Browse pgsql-es-ayuda by date

  From Date Subject
Next Message Espartano 2009-02-14 18:39:53 OT:php PHP Startup Unable to load dynamic librery c:\web\php\ext\php_pgsql.dll
Previous Message Mario Burdman 2009-02-14 13:05:39 Re: Consulta que no acabo de resolver