Re: Cuantos locks son muchos locks?

From: Mario Sileone <msileone(at)easymail(dot)net(dot)ar>
To: Rodriguez Fernando <rodriguez(at)ort(dot)edu(dot)uy>
Cc: "pgsql-es-ayuda(at)postgresql(dot)org" <pgsql-es-ayuda(at)postgresql(dot)org>
Subject: Re: Cuantos locks son muchos locks?
Date: 2010-07-16 18:06:43
Message-ID: 4C409FB3.6010707@easymail.net.ar
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-es-ayuda

El 16/07/10 14:55, Rodriguez Fernando escribió:
> El 16/07/2010 14:34, Mario Sileone escribió:
>> Estimada lista:
>> Tengo un problema que estimo es de concurrencia. Trataré de ser
>> lo más breve posible.
>>
>> Tengo un servidor Dell con 4 procesadores dualcore y 8 GB de RAM,
>> 3 discos en RAID 1 con Postgres 8.2.7 y Apache con la página en el
>> mismo servidor.
>>
>> Tengo un split de tablas por mes, como una vez me iluminaron aqui,
>> con aprox. 12.000.000 de registros mensuales, el movimiento diario es
>> de 400.000 registros de crecimiento, y las tengo con
>> contraint_exclusion en on.
>> Asimismo tengo dos tablas que realizan updates a razón de 300 veces
>> por minuto, y varias vistas sobre estas tablas, con triggers y
>> SELECTS sobre tablas dentro de ellos.
>> las aplicaciones que hacen los updates (son 4) lo hacen asíncronamente.
>> El tema está en que cuando se inician las actividades de clientes
>> entre las 09 AM y las 10 aprox. se produce el problema. el load
>> average del servidor me ha subido hasta 20, con procesador IDLE en
>> buen porcentaje y por supuesto, un 40% promedio en WAIT. Cuando
>> reviso pg_lock me encuentro con que se llega hasta más de 6000
>> registros de bloqueo, y hasta 147 conexiones simultáneas. La consulta
>> que se ejecuta cada 1 minuto por parte de los clientes utiliza las
>> tablas con gran update.
>> No tengo Swap in ni Swap out, y el porcentaje de hits en el
>> buffer es del 85% promedio (baja un poco en la hora pico).
>> No tengo Idle in transaction.
>>
>> ¿Puedo estar haciendo algo mal yo tanto en diseño de base de
>> datos o es que al nivel de carga arriba mencionado estoy chico de
>> servidor? ¿un pool de conexiones ayudaría?
>>
>> Tengo información disponible de pgstat, uptime, vmstat, pg_lock,
>> configuración, consultas, explains, etc, por si necesitan, pero no
>> termino de llegar a una conclusión por ignorancia la verdad.
>>
>> Desde ya muchas gracias por su tiempo y perdón por lo extenso del
>> mail, traté de resumir lo más importante.
>>
>> Saludos Cordiales
>>
>> Mario Sileone.
>>
>>
>>
>> -
>> Enviado a la lista de correo pgsql-es-ayuda
>> (pgsql-es-ayuda(at)postgresql(dot)org)
>> Para cambiar tu suscripción:
>> http://www.postgresql.org/mailpref/pgsql-es-ayuda
>>
> Hola, la máquina no me parece mala.
> Deberias enviar la configuración del postgresql.conf por el tema de
> memoria
> Lo que presumo es que se deben estar actualizando muchos indices, o
> sea primero insertas y crea los nodos y seguramente despues los
> actualiza, sacrificar algun indice, o menos horrible simplificarlos
> (un campo -un indice)
>
>
> saludos Fernando
>
Gracias Fernando por tu respuesta:
Los índices son simples, no tengo índices compuestos, todos son un campo
un índice como comentas. Las tablas que tienen split son por timestamp
(por las dudas esto afecte), copio la parte de memoria de
postgresql.conf, pongo la config de WAL también por las dudas. Realizo
un Vacuum a toda la base de datos una vez por día.

max_connections = 200
shared_buffers = 2048
work_mem = 128MB
maintenance_work_mem = 256MB
max_fsm_pages = 1200000
max_fsm_relations = 3000

checkpoint_segments = 5
checkpoint_timeout = 5min
checkpoint_warning = 30s

Saludos y gracias

Mario

In response to

Browse pgsql-es-ayuda by date

  From Date Subject
Next Message Esperón, Alejandro 2010-07-16 18:14:39 RE: Consultas sobre salida en el log
Previous Message Rodriguez Fernando 2010-07-16 17:55:34 Re: Cuantos locks son muchos locks?