Saltar al contenido

Como configurar shmall, shmmax, shmmin, etc… en general y para postgresql

Revisamos de forma completamente cada reseña en nuestro espacio con la meta de mostrarte siempre la información con la mayor veracidad y actual.

Solución:

Solución 1:

Respondí esto para otra pregunta aquí:

Git no puede empujar con el error ‘memoria insuficiente’

No estoy respondiendo todas sus preguntas aquí, pero la pregunta en su título:

Como configurar shmall, shmmax, shmmni, etc… en general y para postgresql

Con algunas distribuciones del kernel, hay configuraciones que evitan que el kernel asigne la memoria máxima a un solo proceso:

Establecer parámetros del núcleo

Modificar el /etc/sysctl.conf archivo para incluir las líneas apropiadas para su sistema operativo:

# Red Hat Enterprise Linux 3.0 and CentOS 3.x 
kernel.shmmax = 2147483648
kernel.shmmni = 4096
kernel.shmall = 2097152
kernel.shmmin = 1
kernel.shmseg = 10

# semaphores: 
semmsl, semmns, semopm, semmni kernel.sem = 250 32000 100 128
fs.file-max = 65536

# Red Hat Enterprise Linux 4.0 and CentOS 4.x 
kernel.shmmax = 536870912
kernel.shmmni = 4096
kernel.shmall = 2097152

Si su proceso excede los límites, el kernel eliminará el proceso a pesar de que la memoria máxima informada está disponible en su sistema.

Nota: tenga cuidado con estos ajustes. Probablemente no quiera usar la configuración en ese ejemplo, ya que la saqué de un servidor en nuestro entorno.

Algunas notas adicionales para mencionar:

Para actualizar y probar la configuración del kernel con sysctl, use los siguientes comandos:

Lista de configuraciones actuales:

sysctl -A | grep shm
sysctl -w kernel.shmmax= to write in sysctl.conf
sysctl -p /etc/sysctl.conf to read/reload the values from sysctl.conf

Deshabilite Linux seguro editando el /etc/selinux/config archivo, asegurándose de que el indicador SELINUX esté configurado de la siguiente manera.

SELINUX=disabled

¿Es esto apropiado? Si no (o no necesariamente), ¿en qué caso sería apropiado?

La configuración del kernel generalmente se define de manera más estricta en entornos de centros de datos cuando los proveedores de ISP no quieren que un solo proceso de cliente acapare todos los recursos en un servidor compartido.

Por lo general, no tiene que establecer los parámetros de memoria del kernel a menos que tenga un proceso que el kernel esté matando debido a la escasez de recursos.

En algunos casos, Postgres también puede asignar más memoria a tamaños de página específicos de lo que está disponible en la memoria compartida:

* The PostgreSQL server failed to start. Please check the log output:
2011-11-04 05:06:26 UTC FATAL: could not create shared memory segment: Invalid
argument
2011-11-04 05:06:26 UTC DETAIL: Failed system call was shmget(key=5432001, size
=161849344, 03600).
2011-11-04 05:06:26 UTC HINT: This error usually means that PostgreSQL’s reques
t for a shared memory segment exceeded your kernel’s SHMMAX parameter. You can
either reduce the request size or reconfigure the kernel with larger SHMMAX. To
reduce the request size (currently 161849344 bytes), reduce PostgreSQL’s shared
_buffers parameter (currently 19200) and/or its max_connections parameter (curre
ntly 53).
If the request size is already small, it’s possible that it is less than
your kernel’s SHMMIN parameter, in which case raising the request size or recon
figuring SHMMIN is called for.
The PostgreSQL documentation contains more information about shared memo
ry configuration.
…fail!

Los errores como el ejemplo anterior se pueden resolver modificando la configuración de recursos del núcleo. La configuración y los métodos recomendados para determinar la configuración de los recursos se describen en detalle aquí:

http://www.postgresql.org/docs/9.1/static/kernel-resources.html

Sin embargo, realmente no tiene que tocar estas configuraciones a menos que se encuentre con situaciones de escasez de recursos relacionadas con el proceso de postgres. Estas situaciones ocurren, con mayor frecuencia, en entornos compartidos o servidores con pocos recursos asignados.

¿Alguien puede explicar cómo configurarlos realmente desde cero?

En cuanto a la optimización de Postgres, debe leer esto:

http://wiki.postgresql.org/wiki/Tuning_Your_PostgreSQL_Server

Solución 2:

¡¡Vaya!! Encuentro una herramienta maravillosa para calcular la configuración óptima de memoria de nuestro servidor postgresql aquí.

http://pgtune.leopard.in.ua/

Si entiendes que ha sido provechoso nuestro post, sería de mucha ayuda si lo compartieras con el resto seniors y nos ayudes a extender esta información.

¡Haz clic para puntuar esta entrada!
(Votos: 0 Promedio: 0)



Utiliza Nuestro Buscador

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *