1- Debes revisar tu aplicación si está cerrando correctamente las transacciones, porque veo
que tienes muchos procesos IDLE y ese problema muchas veces está derivado
de la aplicación.
Específicamente en la base de datos siganew.

2- Haz algo como esto:
SELECT
             procpid,
             waiting,
             current_timestamp - least(query_start,xact_start) AS runtime,
             substr(current_query,1,100) AS current_query
FROM
             pg_stat_activity
WHERE NOT procpid=pg_backend_pid();

para ver el tiempo de ejecución y estado de los procesos

3- Si pudieras adjuntar un historial aunque sea de 1 min de vmstat y iostat también podríamos
ayudarte un poco más.
   # vmstat -n 1 10

   # iostat -k -p 1 2

   # ps auxww | grep "postgres: " | sort -k 9

Si el resultado de ps, te da como resultado varios IDLE IN TRANSACTION, debes mirar
el código de tu aplicación

Saludos



On 06/30/2011 09:19 AM, felix gonzales wrote:
Jaime esto muestra el free

 total       used       free     shared    buffers     cached
Mem:      43132744   42929092     203652          0      13204   11795108
-/+ buffers/cache:   31120780   12011964
Swap:     16771852    5305632   11466220

te adjunto lo que muestra el pg_stat_activity



2011/6/30 Jaime Casanova <ja...@2ndquadrant.com <mailto:ja...@2ndquadrant.com>>

    felix gonzales <jfgonza...@gmail.com
    <mailto:jfgonza...@gmail.com>> writes:

    >
    > te adjunto mi archivo postgres.conf (si no pasa tendré que pegarlo)
    >

    algunas configuraciones que no me parece que esten bien:

    - shared_buffers = 2048MB
    supongo que 43Gb de RAM tranquilamente podrias darle al menos 8Gb a
    shared buffers

    - temp_buffers = 128MB
    cual es la razon de poner este valor tan alto?

    - work_mem = 64MB
    esto es peligroso y quiza sea la causa de lo que estas viendo

    tienes max_connections en 512 y c/u de esas conexiones puede
    utilizar hasta work_mem memoria para ordenamientos o tablas hash... si
    estas procesando algo para lo que requiere una o varias de esas
    operaciones tranquilamente te puedes quedar sin memoria...

    por ejemplo imagina que en algun momento las 512 conexiones estan
    activas y cada una ordenando una gran cantidad de datos... para eso
    requeririas (512*64MB=32768MB) 32Gb

    bajalo a 32 o 16 Mb o baja max_connections

    - max_stack_depth = 7MB
    en serio necesitan tener esto en 7MB, en realidad no se si les pueda
    causar un problema pero generalmente me parece que subir esto es mas
    parte de esconder un problema...

    - effective_cache_size = 4096MB
    esto lo podrias tener mas alto... 15 o 20 Gb? asi la base sabe que
    el SO
    tiene suficiente memoria para su cache y otras cosas...

    que dice el comando free a todo esto? podrias mostrar la salida de
    free
    antes de hacer algun cambio?

    >
    >     aunque ademas me gustaria ver que dice pg_stat_activity sobre
    >     lo que esta pasando en la base
    >
    > te refieres a que ejecute "select * from pg_stat_activity" y que
    te envié el resultado ???
    >

    exactamente

    --
    Jaime Casanova www.2ndQuadrant.com <http://www.2ndQuadrant.com>
    Professional PostgreSQL
    Soporte 24x7, desarrollo, capacitación y servicios




--
Ing. Felix Gonzales
(c) 979720762


-
Enviado a la lista de correo pgsql-es-ayuda (pgsql-es-ayuda@postgresql.org)
Para cambiar tu suscripción:
http://www.postgresql.org/mailpref/pgsql-es-ayuda

--
Marcos Luís Ortíz Valmaseda
 Software Engineer (UCI)
 http://marcosluis2186.posterous.com
 http://twitter.com/marcosluis2186


Responder a