Skip site navigation (1) Skip section navigation (2)

PG start, error memoria, limites s.o. 32b

From: Andrés P(dot)P(dot) <solopostgres(at)gmail(dot)com>
To: pgsql-es-ayuda <pgsql-es-ayuda(at)postgresql(dot)org>
Subject: PG start, error memoria, limites s.o. 32b
Date: 2011-12-20 19:34:46
Message-ID: CAHohBGs_mcPnTNOuoD8C+uu7X6=DMJGhhgb5NviP_KmdeL24qA@mail.gmail.com (view raw or flat)
Thread:
Lists: pgsql-es-ayuda
Hola Lista!

Hacía tiempo que no se me presentaba una situación en la que tuviera que
recurrir a la teoría para poder explicar lo que se presenta en la
práctica....dicho de otra forma, salir de lo mecánico y rutinas que uno
realiza y que da por sentado al momento de instalar y diseñar y desarrollar
una bd.   Les explico....

Tengo una situación en una plataforma en la que recién instalé postgres 9 y
no hay otra aplicación en ejecución.....La configuración del entorno a
grandes rasgos es el siguiente:..

======================================================================

Server con 16GB RAM, S.O. Red Hat Enterprise Linux Server release 5.3
(Tikanga)... i386 32b

Los valores de memoria en el kernel (/etc/sysctl.conf) son:
kernel.shmmax = 4294967295
kernel.shmall = 268435456
, que son los valores que en general dejamos en el Kernel con la diferencia
que por lo general nuestras plataformas son de hasta 8 o 12 Gb. en RAM y
nunca hemos tenido problemas ni de estabilidad ni de rendimiento, al punto
que nunca hemos necesitado modificar dichos valores......

En Postgres, en los valores asociados a memoria tenemos:
shared_buffers = 4096MB
work_mem = 10MB
maintenance_work_mem = 30MB
effective_cache_size = 8192MB

 ======================================================================

Problema:

Al momento de intentar subir el servicio con la configuración anterior se
arroja el error:

13352 0 2011-12-20 09:07:23 PET FATAL:  la peticion de tamano de memoria
compartida desborda size_t
(no se alcanza a ver el resto de la palabra size_t.. y no se alcanza a
escribir en el log tampoco.. pero eso es lo de menos..)

Yo siempre empiezo aplicando la regla de 25% de la RAM para shared_buffers
y 50% para effcachesize y los otros valores son bajos asi que fui a
modificar el /etc/sysctl.conf dejandolo en el doble de lo que tenía... Se
intentó subir el servicio y el error permanecía.... volví el sysctl atrás y
empecé a bajar de a poco el shared_buffers...y me empezó a tirar el error:

32634 0 2011-12-20 10:32:36 PET FATAL:  shmat(id=360449) failed: No se pudo
asignar memoria

hasta que finalmente llegué a los 2700MB y el servicio subió...

======================================================================

No estoy seguro pero alguna vez leí respecto a que existen algunos límites
en relación al uso de memoria para sistemas de 32 bits (independiente
que el server sea de 64b..).. y entre esos límites está la memoria
compartida... asi que mi pregunta es:

Alguien me puede explicar claramente los alcances de estos límites??..
donde puedo modificar algo??.. la idea es aprovechar al menos 25% real de
la RAM para el caso de postgres.... o simplemente debo decirle a mi
jefatura que se instalen los S.O. de 64b y a los programadores que
modifiquen su código para 64b??....

Eso...Si necesitan algún otro dato para justificar mejor el problema y
guiarme mejor, me avisan.

Gracias

Saludos
AP

Responses

pgsql-es-ayuda by date

Next:From: ruben avila galindoDate: 2011-12-20 19:42:39
Subject: Re: PG start, error memoria, limites s.o. 32b
Previous:From: Mario Jiménez CarrascoDate: 2011-12-20 19:34:01
Subject: Conexiones saturadas.

Privacy Policy | About PostgreSQL
Copyright © 1996-2014 The PostgreSQL Global Development Group