Optimización de postgres

Gente, buenos días…

Les consulto lo siguiente. Tenemos un servidor en el cual unicamente funciona el Comdoc. Es un debian lenny con 4 gb de memoria.

Algunas veces nos ocurre que se pone un poco lento y cuando vemos los procesos el postgres esta en un 90% (tb nos ha pasado con el java, pero aqui consulto por postgres unicamente) de uso de la memoria o màs.
La cantidad de usuarios aprox en linea es alrededor de 50 y por las tardes mas de 100 teniendo en cuentas que nuestras facultades hacen horario vespertino.

Quiisiera saber qeu parametros deberia tener en cuenta como para optimizar un poco el uso del postgres.

Desde ya gracias
Saludos

Hola Carolina

COmo vez que la memoria esta al 90% ?. POdrias mandar la salida del comando top de linux cuando esta lento ? y hacer un ps -ef > ps_ef.txt

Por otro lado, tambien estaria bueno que ejecutes el siguiente query para ver que consultas estan corriendo en ese momento.

SELECT pg_stat_activity.usename,
round(date_part(‘epoch’::text, now() - pg_stat_activity.query_start)) AS duration,
pg_stat_activity.current_query
FROM pg_stat_activity
ORDER BY round(date_part(‘epoch’::text, now() - pg_stat_activity.query_start)) DESC;

Asi a priori 4 Gb para 50 usuarios, suena un poco escaso, de todas formas iremos viendo con la info que mandes cual es el recurso que esta mas escaso en el server.

saludos
Ignacio

Generalmente nos pasa que cuando se pone lento lo primero que hago es un top para ver que proceso esta colgado. La proxima vez qeu nos pase ejecuto el ps y te lo adjunto.

Gracias

Ignacio, te adjunto los archivos que me pediste.

Saludos


archivos para postgres.zip (2.19 KB)

Hola Carolina,

En el ps no se ven que haya muchas sesiones concurrentes trabajando sobre postgres.

Por otro lado en el query de la pg_stat_activity aparece un solo query trabajando, quizas sea el que causa q se ponga lento. Ese query esta incompleto , lo que se puede ver es lo siguiente:

“postgres”;44;" SELECT principal.cudap,
(select titulo from elements where cudap = principal.cudap) as titulo,
(select areaAlta from elements where cudap = principal.cudap) as areaAlta,
‘’ as electronico, ‘’ as clasificacion, ‘’ as tipo, 0 as naturaleza, ‘’ as noAprobado,
(select estado from elements where cudap = principal.cudap) as estado,
(select vencimientoactual from elements where cudap = principal.cudap) as vencimientoActual,
(select userDepositarioActual from elements where cudap = principal.cudap) as userDepositario,
(select userDepositarioActualId from elements where cudap = principal.cudap) as userDepositarioId,
(select responsableLocalActual from elements where cudap = principal.cudap) as responsableLocal,
(select responsableLocalActualId from elements where cudap = principal.cudap) as responsableLocalId,
(select responsableGlobalActual from elements where cudap = principal.cudap) as responsableGlobal,
(select responsableGlobalActualId from elements where cudap = principal.cudap) as responsableGlobal"

prox pasos:
1- Podrias pasarme la salida de un top cuando se pone lento?
2- Podrias pasarme el archivo postgresql.conf
3- Si podes obtener el query completo, podriamos ejecutarlo desde pgadmin y ver cuanto tarda, o incluso correrlo con un explain

saludos