J'utilise Postgres DB pour mon produit. Lors de l'insertion par lots avec slick 3, je reçois un message d'erreur:
org.postgresql.util.PSQLException: FATAL: désolé, trop de clients déjà.
Mon opération d'insertion par lots sera plus de milliers d'enregistrements. La connexion maximale pour mes postgres est de 100.
Comment augmenter le nombre maximum de connexions?
postgresql
Jet
la source
la source
Réponses:
Augmenter simplement
max_connections
est une mauvaise idée. Vous devez augmentershared_buffers
etkernel.shmmax
aussi.Considérations
max_connections
détermine le nombre maximal de connexions simultanées au serveur de base de données. La valeur par défaut est généralement de 100 connexions.Avant d'augmenter votre nombre de connexions, vous devrez peut-être augmenter votre déploiement. Mais avant cela, vous devez vous demander si vous avez vraiment besoin d'une limite de connexion accrue.
Chaque connexion PostgreSQL consomme de la RAM pour gérer la connexion ou le client qui l'utilise. Plus vous avez de connexions, plus vous utiliserez de RAM qui pourrait à la place être utilisée pour exécuter la base de données.
Une application bien écrite n'a généralement pas besoin d'un grand nombre de connexions. Si vous avez une application qui nécessite un grand nombre de connexions, envisagez d'utiliser un outil tel que pg_bouncer qui peut regrouper les connexions pour vous. Comme chaque connexion consomme de la RAM, vous devriez chercher à minimiser leur utilisation.
Comment augmenter le nombre maximum de connexions
1. Augmenter
max_connection
etshared_buffers
dans
/var/lib/pgsql/{version_number}/data/postgresql.conf
changement
à
Le
shared_buffers
paramètre de configuration détermine la quantité de mémoire est dédiée à PostgreSQL à utiliser pour la mise en cache des données .2. Changez kernel.shmmax
Vous devrez augmenter la taille maximale du segment du noyau pour qu'elle soit légèrement plus grande que le
shared_buffers
.Dans le fichier,
/etc/sysctl.conf
définissez le paramètre comme indiqué ci-dessous. Cela prendra effet lors dupostgresql
redémarrage (la ligne suivante rend le noyau maximum96Mb
)Références
Connexions Postgres Max et tampons partagés
Réglage de votre serveur PostgreSQL
la source
cat /proc/sys/kernel/shmmax
) avant de le modifier. Sur les systèmes modernes, la valeur est déjà ridiculement élevée et ne devrait pas être modifiée. Le mien est défini18446744073692774399
par défaut sur Ubuntu 18.04.Ajoutant à l'excellente réponse de Winnie,
Si quelqu'un ne parvient pas à trouver l'emplacement du fichier postgresql.conf dans votre configuration, vous pouvez toujours demander le postgres lui-même.
Pour moi, changer les max_connections seul a fait l'affaire.
la source
/etc/postgresql/11/main/postgresql.conf
modifier la variable max_connections dans le fichier postgresql.conf situé dans / var / lib / pgsql / data ou / usr / local / pgsql / data /
la source