El día 12 de febrero de 2009 22:06, p2p p2p <[email protected]> escribió: > > > El 12 de febrero de 2009 20:06, Silvio Quadri <[email protected]> escribió: >> >> El día 12 de febrero de 2009 15:40, p2p p2p <[email protected]> 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 -- TIP 2: puedes desuscribirte de todas las listas simultáneamente (envía "unregister TuDirecciónDeCorreo" a [email protected])
