Herramientas de usuario

Herramientas del sitio


libertya:configuracion_de_postgresql

Configuracion de postgresql

Ajustes básicos a la instalación de PostgreSQL

Esta guía pretende ser una introducción inicial a los parámetros que se deben modificar en la instalación de postgreSQL para mejorar su desempeño. La base de datos viene configurada por default para funcionar en sistemas muy pequeños, por lo que es recomendable ajustarla. No se pretende crear una guía extensiva sobre todos los parámetros que afectan el motor de base de datos, sino una guía rápida e introductoria con algunos consejos prácticos para Libertya.

Generales del sistema

Shared Memory

La base de datos usa mucha memoria compartida, por lo que es uno de los recursos importantes a configurar. Los valores default de Linux suelen ser adecuados, pero por las dudas vale revisarlos…

Los siguientes parámetros del kernel de linux afectan la memoria compartida:

  • SHMMAX: Tamaño máximo de un segmento de memoria compartida (bytes)
  • SHMMIN: Tamaño mínimo de un segmento de memoria compartida (bytes)
  • SHMALL: Cantidad máxima de memoria compartida disponible (bytes ó páfinas)
  • SHMSEG: Número máximo de segmentos de memoria compartida por proceso
  • SHMMNI: Número máximo de segmentos de memoria compartida en todo el sistema

De todos estos, los fundamentales son SHMMAX y SHMMALL

SHMMAX: Varios MB. El valor por defecto del núcleo es 32MB, un valor muy bajo en muchos casos. Existen varios parametros en

postgresql.conf

que determinan cuanta memoria compartida necesitaremos, el más importante de ellos y el principal causante de que necesitemos aumentar SHMMAX es

shared_buffers

. El valor de SHMMAX (bytes) no puede ser menor que el valor definido en

shared_buffers

. PostgreSQL se negará a arrancar si el valor de SHMMAX es muy pequeño.

SHMALL Como mínimo

SHMMAX/PAGE_SIZE

. En donde el valor de

PAGE_SIZE

lo podeis obtener ejecutando el comando

getconf PAGESIZE

. El valor por defecto del núcleo es 2097152 pages (8192MB). Si teneis varios clusters de PostgreSQL ejecutandose en la máquina ó otros programas que usen memoria compartida, tendreis que definir un valor de

SHMALL

lo suficientemente grande para poder ejecutar todos estos programas a la vez.

Para cambiar el valor de estos parámetros permanentemente tenemos que editar el fichero /

etc/sysctl.conf

, y añadir la linea:

kernel.shmmax = 2147483648

Para instalar los cambios tenemos que ejecutar el comando

sysctl -p /
etc/sysctl.conf

Lo mismo para shmmin.

Propios de PostgreSQL

Los siguientes parámetros se configuran en el archivo postgresql.conf en el directorio data de la instalación.

max_connections

Se debe asignar este valor al 140% del promedio de conexiones esperados. Cada cliente utiliza en promedio 3 conexiones, por lo que se debe considerar un

=3.4 * (cantidad_de_usuarios)

El valor inicial es 100, que es suficiente para instalaciones chicas. Asignarlo a valores como 200 o 300 no debe plantear inconvenientes.

shared_buffers

Se puede asignar de 1/4 a 1/2 de la memoria física del sistema. Se calculan en bloques de 8k así que 256M serían 32768 = 1024*1024*256/8192.

work_mem

Es la memoria que se utiliza para resolver las consultas. El default es 1M, pero se puede asignar a 2M sin miedo. No es recomendable asignar un valor mucho mas alto dado que cada query podrá utilizar esta memoria, de modo que el consumo de memoria puede crecer mas de lo previsto.

effective_cache_size

Este parámetro permite a PostgreSQL hacer el mejor uso posible de la RAM disponible. Le indica el tamaño del cache de datos del sistema operativo. Se puede asignar a valores entre 1/4 y 1/2 memoria física sin problemas. Se debe considerar que debe quedar espacio de memoria para los demás programas que corran en el sistema.

max_fsm_relations

Indica la cantidad de tablas a seguir en el mapeo de espacio libre. Para el caso de libertya, elevarlo a 2000.

Autovacuum

Inicia el demonio que optimiza y el uso de disco de las tablas dentro del sistema. Es necesario habilitarlo para que realice las tareas de mantenimiento de forma automática

Fuentes

libertya/configuracion_de_postgresql.txt · Última modificación: 2021/04/30 19:19 (editor externo)