GNU/Linux >> Tutoriales Linux >  >> Linux

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

Solución 1:

Respondí esto para otra pregunta aquí:

Git no puede enviar con el error 'memoria insuficiente'

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

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

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

Establecer parámetros del kernel

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 esta configuración. 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=<value> 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 es necesario configurar los parámetros de la memoria del kernel a menos que tenga un proceso que el kernel está eliminando 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:

¡Oh! Aquí encuentro una herramienta maravillosa para calcular la configuración óptima de memoria de nuestro servidor postgresql.

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


Linux
  1. Cómo configurar OpenCL para GPU en Linux y Docker [Guía completa]

  2. Cómo enumerar y configurar el contexto de SELinux para el servidor MySQL

  3. Cómo configurar encabezados y bibliotecas para el desarrollo de Linux

  4. ¿Cómo puedo configurar el autocompletado para los comandos de Git?

  5. Hibernate + MySQL:cómo configurar la codificación utf-8 para bases de datos y tablas

Cómo instalar y configurar SeedDMS

Cómo configurar dispositivos Razer en Linux para efectos de iluminación y otras configuraciones

Cómo configurar la fecha y la hora en Linux

Cómo establecer la ruta para los comandos sudo

¿Cómo configurar umask para un usuario del sistema?

¿Cómo establecer la ubicación (y el nombre) del archivo de volcado del núcleo?