RE: configuración postgres 9 vs postgres 8 problema con checkpoints y autovacuum

From: Lazáro Rubén García Martínez <lgarciam(at)vnz(dot)uci(dot)cu>
To: Jose Mercedes Venegas Acevedo <jvenegasperu(at)gmail(dot)com>, Ayuda <pgsql-es-ayuda(at)postgresql(dot)org>
Subject: RE: configuración postgres 9 vs postgres 8 problema con checkpoints y autovacuum
Date: 2012-07-07 16:16:19
Message-ID: 294D3D02D5E18D42827B2ECFEADEB688472A44BB70@mx-interno.vnz.uci.cu
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-es-ayuda

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-owner(at)postgresql(dot)org [pgsql-es-ayuda-owner(at)postgresql(dot)org] On Behalf Of Jose Mercedes Venegas Acevedo [jvenegasperu(at)gmail(dot)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: jvenegasperu(at)php(dot)net<mailto:jvenegasperu(at)php(dot)net>
jvenegasperu(at)gmail(dot)com<mailto:jvenegasperu(at)gmail(dot)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

In response to

Responses

Browse pgsql-es-ayuda by date

  From Date Subject
Next Message Alvaro Herrera 2012-07-07 19:43:17 RE: configuración postgres 9 vs postgres 8 problema con checkpoints y autovacuum
Previous Message Jose Mercedes Venegas Acevedo 2012-07-06 20:24:42 configuración postgres 9 vs postgres 8 problema con checkpoints y autovacuum