El valor shared_buffers debe estar hasta un 25% de tu memoria RAM, si es un 
servidor dedicado.

También deberías verificar el parámetro wal_buffers, que por defecto tiene un 
valor de 64 Kb, es en este buffer donde se van almacenando los datos del WAL, o 
sea todo aquello que afecte tus datafiles, la recomendación es setearlo a 8 MB.

checkpoint_segments establece el máximo número de segmentos de wal 
(wal_buffers), que se pueden crear antes de que ocurra un check_point, lo que 
significa que si tienes en la configuración que wal_buffers = 64 Kb y 
checkpoint_segments = 5, solo pueden crearser 5 segmentos de 64 Kb y esta es la 
razón por la cual ocurren muchos check_points lo que empeora el acceso a disco, 
pues tendrían que realizarse muchas escrituras a disco contínuamente, por eso 
mi recomendación es ir incrementando el valor de checkpoint_segments hasta que 
no te aparezca más el HINT, o comenzar con un valor de 16.

Ten en cuenta que mientras más incrementes este valor más espacio de 
almacenamiento necesitas para los ficheros de wal que se almacenan dentro del 
directorio pg_xlog, la fórmula es la siguiente:

(2 + checkpoint_completetion_target) * checkpoint_segments +1

Sobre autocacuum, tenerlo en off, te puede disminuir el rendimiento de las 
consultas, pués, las tuplas muertas no son eliminadas, y cuando se recorren las 
tablas, es necesario revisar su visibilidad (visibility map), para saber que 
tupla debe formar parte del resultado. Si pones este valor en off, deberías 
realizar la operación de vacuum manualmente una vez al día, de lo contrario, 
pon este valor en on, para que el gestor se encargue por si solo de esto.

También existen otros parámetros de configuración importantes como fsync, 
synchronous_commit, work_mem, maintenance_work_mem, effective_cache_size.

Pudes encontrar más información al respecto en la siguiente dirección:

http://www.postgresql.org.es/node/696


Saludos a todos.

________________________________________
From: pgsql-es-ayuda-ow...@postgresql.org [pgsql-es-ayuda-ow...@postgresql.org] 
On Behalf Of Jose Mercedes Venegas Acevedo [jvenegasp...@gmail.com]
Sent: Friday, July 06, 2012 3:54 PM
To: Ayuda
Subject: [pgsql-es-ayuda] configuración postgres 9 vs postgres 8 problema con 
checkpoints y autovacuum

Hola a todos

me he visto en la necesidad de mudar mi base de datos postgres 9.1 a postgres 
8.4 basicamente para aprovechar las funciones de pgrouting que hasta 8.4 
funcionan perfecto
despues de instalar postgres 8.4 restaure mi bd de 9.1 a 8.4 basicamente lo 
hice sacando primero la estructura y luego la data en archivos planos subidos 
con copy
resultado mi sistema siempre se cae al minuto de acceder a la base de datos les 
pongo los logs al final con lo que me indica,

mi experiencia que he tenido es la siguiente:

En postgres 9 tenia estas lineas        Postgres 8.4 Configuracion A    
Postgres 8.4 Configuracion B

#shared_buffers = 16MB            # min 128kB   shared_buffers = 64MB   
shared_buffers = 128MB
#maintenance_work_mem = 16MB        # min 1MB   maintenance_work_mem = 32       
maintenance_work_mem = 32MB
#checkpoint_segments = 3        checkpoint_segments = 5         
#checkpoint_segments = 6


a pesar que las 3 lineas estan comentadas entendia que eran los valores de 
postgres 9 por defecto nunca necesite cambiar nada en Postgres 9 para que la BD 
funcione bien
pero en 8.4 tuve que cambiar los valores por defecto a los que se observan en A 
y B pues como indican los logs que colocare al final indicaban aumentar los 
checkpoints

ahora con las configuraciones A y B menos mal mi BD ya esta funcionando sin 
embargo la configuracion B responde mejor a la configuracion A es decir la 
misma busqueda en B se realiza en la tercera parte del tiempo que A
pero sigue tardando un poco en postgres 9  era instantaneo quisiera que mi 
server 8.4 respondiera igual ya revise que todas tienen los mismos indices y 
cantidades de datos. las 3 BD son identicas y los servidores tambien en 
hardware tambien

mi base de datos pesa aproximadamente un  1 Gb completa y mi tablas de mayor 
cantidad de registros son de 200 mi l registros y el tamaño en disco de la 
tabla mas grande es de 90 megas mas o menos

ahora me estoy animando por aumentar el valor de shared buffers de mi 
configuracion B quizas las consultas me respondan mas rapido sera asi?
la documentacion indica por ejemplo 3 chekpoints cada 16 MB los 16 Mb son 
fijos? donde le digo a postgres que cambio ese valor?

y al parecer aumentando los chekpoints basicamente el servidor empezo a andar y 
aumentando shared buffers y work_mem empezo a trabajar mas rapido

y bueno el autovacuum lo apague y ahora esta andando pero estoy algo perdido 
quisiera saber que pasa si aumento mas chekpoints segmentes por ejemplo

o que pasa si enciendo el autovacuum con estos nuevos valores

Aqui les dejo los logs que me empezo a dar y menos mal se resolvio, estoy 
trabajando con widows server 2003 y windows server 2008

espero alguien me ayude un poco a comprender mejor que colocar en estos 
parametros que realmente me ligo que levante la BD de suerte porque no tengo 
muy claro que estoy logrando con esta configuracion?

saludos a todos

2012-07-06 11:45:45 COT HINT:  Considere incrementar el parámetro de 
configuración «checkpoint_segments».
2012-07-06 11:45:53 COT LOG:  los puntos de control están ocurriendo con 
demasiada frecuencia (cada 8 segundos)
2012-07-06 11:45:53 COT HINT:  Considere incrementar el parámetro de 
configuración «checkpoint_segments».
2012-07-06 11:46:05 COT LOG:  los puntos de control están ocurriendo con 
demasiada frecuencia (cada 12 segundos)
2012-07-06 11:46:05 COT HINT:  Considere incrementar el parámetro de 
configuración «checkpoint_segments».
2012-07-06 11:46:21 COT ERROR:  cancelando tarea de autovacuum

2012-07-06 11:39:48 COT LOG:  se recibió petición de apagado rápido
2012-07-06 11:39:48 COT LOG:  abortando transacciones activas
2012-07-06 11:39:48 COT LOG:  apagando lanzador de autovacuum
2012-07-06 11:39:48 COT LOG:  apagando
2012-07-06 11:39:48 COT LOG:  el sistema de bases de datos está apagado

2012-07-06 12:31:20 COT FATAL:  lo siento, ya tenemos demasiados clientes
2012-07-06 12:31:20 COT WARNING:  autovacuum worker started without a worker 
entry
2012-07-06 12:38:36 COT WARNING:  pgstat wait timeout
2012-07-06 12:39:41 COT WARNING:  worker took too long to start; cancelled
2012-07-06 12:39:53 COT WARNING:  pgstat wait timeout
2012-07-06 12:41:03 COT WARNING:  worker took too long to start; cancelled
2012-07-06 12:41:06 COT WARNING:  autovacuum worker started without a worker 
entry
2012-07-06 12:41:08 COT WARNING:  autovacuum worker started without a worker 
entry
2012-07-06 12:48:58 COT LOG:  se encontró fin de archivo inesperado en la 
conexión del cliente
2012-07-06 12:51:54 COT WARNING:  ya hay una transacción en curso
2012-07-06 12:56:16 COT LOG:  no se pudo enviar datos al cliente: Unknown 
winsock error 10061
2012-07-06 12:56:16 COT LOG:  no se pudo recibir datos del cliente: Unknown 
winsock error 10061
2012-07-06 12:56:16 COT LOG:  se encontró fin de archivo inesperado en la 
conexión del cliente
2012-07-06 12:56:32 COT LOG:  no se pudo enviar datos al cliente: Unknown 
winsock error 10061
2012-07-06 12:56:32 COT LOG:  no se pudo recibir datos del cliente: Unknown 
winsock error 10061
2012-07-06 12:56:32 COT LOG:  se encontró fin de archivo inesperado en la 
conexión del cliente
2012-07-06 13:16:26 COT LOG:  se recibió petición de apagado rápido
2012-07-06 13:16:26 COT LOG:  abortando transacciones activas
2012-07-06 13:16:26 COT FATAL:  terminando la conexión debido a una orden del 
administrador
2012-07-06 13:16:26 COT FATAL:  terminando la conexión debido a una orden del 
administrador
2012-07-06 13:16:28 COT FATAL:  terminando la conexión debido a una orden del 
administrador
2012-07-06 13:16:29 COT LOG:  apagando lanzador de autovacuum






--
José Mercedes Venegas Acevedo
cel: Mov. 949808846

mails: jvenegasp...@php.net<mailto:jvenegasp...@php.net>
          jvenegasp...@gmail.com<mailto:jvenegasp...@gmail.com>

PHP Spanish Docs translator member.
http://www.php.net/manual/es/index.php


________________________________
Fin a la injusticia, LIBERTAD AHORA A NUESTROS CINCO COMPATRIOTAS QUE SE 
ENCUENTRAN INJUSTAMENTE EN PRISIONES DE LOS EEUU!
http://www.antiterroristas.cu
http://justiciaparaloscinco.wordpress.com

Fin a la injusticia, LIBERTAD AHORA A NUESTROS CINCO COMPATRIOTAS QUE SE 
ENCUENTRAN INJUSTAMENTE EN PRISIONES DE LOS EEUU!
http://www.antiterroristas.cu
http://justiciaparaloscinco.wordpress.com
-
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

Responder a