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