Configuración Postgres...General y Autovacuum

From: Pedir o Dar Ayuda en postgres <solopostgres(at)gmail(dot)com>
To: pgsql-es-ayuda(at)postgresql(dot)org
Subject: Configuración Postgres...General y Autovacuum
Date: 2009-08-25 18:52:45
Message-ID: 8a9759490908251152j29978539j7727eef5cdb0bb2c@mail.gmail.com
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-es-ayuda

Hola

Es mi primer post y ojala puedan ayudarme..Soy novato en postgres asi que
necesito guía especializada.
PERDONEN todo el detalle, pero he visto en los foros que generalmente se
omite información que Uds, los más experimentados, necesitan para poder
ayudar.... por eso detallo las características de la plataforma que en estos
momentos estoy viendo...

El Server:

2 CPU: Ambas HP Quad Core 2.66 Gh
RAM: 6 GB
Disco: 130Gb...30 Gb (libre..).. la bd ocupa 4Gb
S.O.: Linux RH 5.3

Postgres: 8.2.5 ..

PostgreSql.conf
------------------------------------------------------------------------------
# CONNECTIONS AND AUTHENTICATION
listen_addresses = '*'
port = 5432
max_connections = 100
superuser_reserved_connections = 6

# - Memory -
shared_buffers = 1500MB
work_mem = 100MB
sort_mem = 10240
max_fsm_pages = 409600
vacuum_cost_delay = 10

# ERROR REPORTING AND LOGGING
redirect_stderr = on
log_directory = 'pg_log'
log_filename = 'postgresql-%Y-%m-%d_%H%M%S.log'
log_truncate_on_rotation = on
log_rotation_age = 1d
log_rotation_size = 0

# RUNTIME STATISTICS
stats_start_collector = on
stats_row_level = on

# AUTOVACUUM PARAMETERS
autovacuum = on

# CLIENT CONNECTION DEFAULTS
datestyle = 'iso, mdy'
lc_messages = 'en_US.UTF-8'
lc_monetary = 'en_US.UTF-8'
lc_numeric = 'en_US.UTF-8'
lc_time = 'en_US.UTF-8'

los demás todos comentados.. asi que asumo que tienen valores default...
--------------------------------------------------------------------------------------------------------------------------------------------

/etc/sysctl.conf
-----------------------------------------------
net.ipv4.ip_forward = 0
net.ipv4.conf.default.rp_filter = 1
net.ipv4.conf.default.accept_source_route = 0
kernel.sysrq = 0
kernel.core_uses_pid = 1
net.ipv4.tcp_syncookies = 1
kernel.msgmnb = 65536
kernel.msgmax = 65536
kernel.shmmax = 4294967295
kernel.shmall = 268435456
fs.mqueue.msgsize_max = 8192
fs.mqueue.msg_max = 400
fs.mqueue.queues_max = 256
kernel.core_pattern = /tmp/core_%e.%p
------------------------------------------------------------------------------------

Descripción: La plataforma tiene 4 módulos (en C ) que se conectan a la BD
en distinta medida y esta última se usa para tareas básicas..Selects,
Inserts, Updates y Deletes sin mayor lógica...algunos IFs por ahí simples..
pero nada de gran inteligencia. Hay dos tablas que se llevan la carga
transaccional... La tabla más grande es de 10 Millones de
registros (registro pequeño) y la tabla más chica que puede llegar a 0
registros (simula el comportamiento de una cola.. no supera los 1000
registros con harta carga). Los módulos de la plataforma toman unos archivos
que se cargan cada 1 minuto, los procesan y los validan con la BD para las
sentencias básicas. (En ese intervalo de 1 minuto...en 20 a 25 seg se
procesan todos los archivos.. el resto permanece ocioso).
Los módulos, el Motor psql y la BD se encuentran en el mismo
server..... en unos meses más se tendrá el server en cluster y con una
unidad de storage aparte para la BD..pero ese es otro cuento..

Desempeño actual: Lo general es que la plataforma a simple vista anda de
maravillas pero una vez a la semana (hasta ahora) el cliente reporta que se
le empiezan a encolar los archivos por un momento....no le causa problemas,
pero si le inquieta el porque podría estar sucediendo...... yo he notado
esto en ciertas ejecuciones del autovacuum...pero muy esporádicamente ...
por lo general el autovacuum se ejecuta muy rápidamente...
pero ocasionalmente le ha toma de 5 a 10 minutos.....(no existe coincidencia
de otro proceso en ejecución cuando esto ocurre..)..

al ejecutar "top" la respuesta es la siguiente:

-------------------------------------------------------------------------------------------------------------------
top - 13:14:48 up 52 days, 13:07, 7 users, load average: 1.84, 1.99, 2.00
Tasks: 213 total, 1 running, 212 sleeping, 0 stopped, 0 zombie
Cpu(s): 3.0%us, 0.4%sy, 0.0%ni, 94.9%id, 1.5%wa, 0.0%hi, 0.0%si,
0.0%st
Mem: 7785612k total, 7328488k used, 457124k free, 131732k buffers
Swap: 6819584k total, 11892k used, 6807692k free, 6331864k cached
PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND
18771 postgres 16 0 1541m 96m 93m S 17.3 1.3 106:21.57 postmaster
18685 user_ap 18 0 211m 164m 1592 S 3.3 2.2 14:29.98 modulo1
*18690 postgres 16 0 1540m 1.5g 1.5g D 3.3 19.7 12:24.10 postmaster
*18626 user_ap 22 0 141m 27m 1136 S 1.7 0.4 6:04.85 modulo_no_bd
18596 user_ap 18 0 55260 1468 1144 S 1.0 0.0 2:41.35 cl_router
18640 user_ap 18 0 82924 25m 1028 S 1.0 0.3 6:00.32 modulo_no_bd
16476 postgres 15 0 2328 1088 800 R 0.3 0.0 0:00.04 top
18160 postgres 15 0 11024 1044 432 S 0.3 0.0 23:28.93 postmaster
18656 user_ap 15 0 138m 133m 1628 S 0.3 1.8 38:42.60 modulo2
18674 postgres 16 0 1540m 219m 217m S 0.3 2.9 7:07.31 postmaster
15171 postgres 15 0 10136 1604 1048 S 0.0 0.0 0:00.03 sshd
15172 postgres 15 0 2588 1376 1088 S 0.0 0.0 0:00.01 bash
18155 postgres 18 0 1539m 24m 23m S 0.0 0.3 0:00.67 postmaster
18157 postgres 15 0 10732 836 380 S 0.0 0.0 0:00.00 postmaster
*18159 postgres 15 0 1540m 1.5g 1.5g S 0.0 19.9 1:08.30 postmaster
18660 postgres 16 0 1541m 1.5g 1.5g S 0.0 19.6 40:46.97 postmaster
*
-------------------------------------------------------------------------------------------------------
No se interpretar estos valores..por ejemplo la columna SHR .. hay 3
procesos postmaster que en esta columna tienen un valor de 1,5Gb (relacion
con shared_buffers??).... y de esos 3 procesos 1 de ellos tiene un leve uso
de CPU... mientras que el que tiene un 17% de CPU sólo tiene 93M en esa
columna.... ese tipo de cosas necesito entenderlas.

AYUDA: Bueno, con toda esta información acudo a Uds. para que me indiquen
o me pregunten mas detalles... quiero saber que opinan Uds. de la
configuración actual, que podría cambiar o que esta de más o
sobredimensionado... no sé... soy novato.. No sé si a nivel de S.O. haya que
modificar la asignación de memoria para optimizar su uso en conjunto con lo
que hay en postgres..... hay algunos parámetros que me parecen altos como
work_mem... pero tampoco estoy seguro al respecto.... Ahhh, lo otro.....
necesito de la paciencia de alguno de Uds. para que pueda explicarme el uso
de los parámetros asociados al autovacuum y que actualmente tengo
comentados... quiero optimizar el uso de esta funcionalidad.. pero no se
cómo... he leído la documentación pero no me queda muy claro el uso de cada
uno..
Perdonen lo extenso... pero con todo esto quiero formarme una base sólida en
lo que se refiera a configuración para tenerlo presente para próximas
plataformas.......... Prometo que para la próxima vez que consulte haré
consultas más específicas...

Saludos y agradecido desde ya.

Andrés
Novato en postgres

Responses

Browse pgsql-es-ayuda by date

  From Date Subject
Next Message Edwin Quijada 2009-08-25 23:57:46 Problema ejecutando funcion en C
Previous Message Alvaro Herrera 2009-08-25 17:56:58 Re: Cancelar Query ?¿