Estoy usando Postgres DB para mi producto. Mientras hago la inserción por lotes usando slick 3, recibo un mensaje de error:
org.postgresql.util.PSQLException: FATAL: lo siento, ya hay demasiados clientes.
Mi operación de inserción por lotes tendrá más de miles de registros. La conexión máxima para mi postgres es 100.
¿Cómo aumentar las conexiones máximas?
postgresql
Jet
fuente
fuente
Respuestas:
Solo aumentar
max_connections
es una mala idea. Necesitas aumentarshared_buffers
ykernel.shmmax
también.Consideraciones
max_connections
determina el número máximo de conexiones simultáneas al servidor de la base de datos. El valor predeterminado suele ser 100 conexiones.Antes de aumentar el recuento de conexiones, es posible que deba ampliar su implementación. Pero antes de eso, debe considerar si realmente necesita un límite de conexión mayor.
Cada conexión de PostgreSQL consume RAM para administrar la conexión o el cliente que la usa. Cuantas más conexiones tenga, más RAM utilizará, que podría utilizarse para ejecutar la base de datos.
Por lo general, una aplicación bien escrita no necesita una gran cantidad de conexiones. Si tiene una aplicación que necesita una gran cantidad de conexiones, considere usar una herramienta como pg_bouncer, que puede agrupar las conexiones por usted. Como cada conexión consume RAM, debería intentar minimizar su uso.
Cómo aumentar las conexiones máximas
1. Incrementar
max_connection
yshared_buffers
en
/var/lib/pgsql/{version_number}/data/postgresql.conf
cambio
a
El
shared_buffers
parámetro de configuración determina cuánta memoria se dedica a PostgreSQL para usar para almacenar datos en caché .2. Cambie kernel.shmmax
Necesitaría aumentar el tamaño del segmento máximo del kernel para que sea un poco más grande que el
shared_buffers
.En el archivo,
/etc/sysctl.conf
configure el parámetro como se muestra a continuación. Tendrá efecto cuando sepostgresql
reinicie (la siguiente línea hace que el kernel alcance el máximo96Mb
)Referencias
Conexiones máximas de Postgres y búferes compartidos
Ajuste de su servidor PostgreSQL
fuente
cat /proc/sys/kernel/shmmax
) antes de cambiarla. En los sistemas modernos, ya está ridículamente alto y no debe cambiarse. El mío está configurado18446744073692774399
de forma predeterminada en Ubuntu 18.04.Añadiendo a la gran respuesta de Winnie,
Si alguien no puede encontrar la ubicación del archivo postgresql.conf en su configuración, siempre puede preguntar al propio postgres.
Para mí, cambiar las max_connections solo hizo el truco.
fuente
/etc/postgresql/11/main/postgresql.conf
cambie la variable max_connections en el archivo postgresql.conf ubicado en / var / lib / pgsql / data o / usr / local / pgsql / data /
fuente