web-dev-qa-db-fra.com

Comment augmenter le nombre maximal de connexions dans postgres?

J'utilise Postgres DB pour mon produit. Lors de l'insertion du lot avec Slick 3, un message d'erreur s'affiche:

org.postgresql.util.PSQLException: FATAL: désolé, trop de clients déjà.

Mon opération d’insertion par lot sera plus que des milliers d’enregistrements. La connexion maximale pour mon postgres est de 100.

Comment augmenter le nombre maximal de connexions?

76
Jet

Augmenter simplement max_connections est une mauvaise idée. Vous devez également augmenter shared_buffers et kernel.shmmax.


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 100 connexions.

Avant d'augmenter le nombre de connexions, vous devrez peut-être augmenter votre déploiement. Mais avant cela, vous devez vous demander si vous avez réellement besoin d’une limite de connexion accrue.

Chaque connexion PostgreSQL utilise RAM pour gérer la connexion ou le client qui l'utilise. Plus vous avez de connexions, plus vous utiliserez RAM, ce qui pourrait plutôt être utilisé pour exécuter la base de données.

Une application bien écrite ne nécessite généralement pas 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. Chaque connexion consommant de la RAM, vous devriez chercher à minimiser son utilisation.


Comment augmenter le nombre maximal de connexions

1. Augmenter max_connection et shared_buffers

dans /var/lib/pgsql/data/postgresql.conf

changement

max_connections = 100
shared_buffers = 24MB

à

max_connections = 300
shared_buffers = 80MB

Le paramètre de configuration shared_buffers détermine combien mémoire est dédié à PostgreSQL à utiliser pour mise en cache des données.

  • Si vous avez un système avec 1 Go ou plus de RAM, une valeur de départ raisonnable pour shared_buffers est 1/4 de la mémoire de votre système.
  • il est peu probable que vous utilisiez plus de 40% de RAM pour fonctionner mieux qu'un petit montant (environ 25%)
  • Sachez que si votre système ou votre version de PostgreSQL est 32 bits, il ne sera peut-être pas pratique de définir des shared_buffers supérieurs à 2 ~ 2,5 Go.
  • Notez que sous Windows, les valeurs élevées pour shared_buffers ne sont pas aussi efficaces et que vous obtiendrez peut-être de meilleurs résultats en le maintenant relativement bas et en utilisant davantage le cache du système d'exploitation. Sous Windows, la plage tile va de 64 Mo à 512 Mo.

2. Changer kernel.shmmax

Vous devez augmenter la taille maximale du segment de noyau pour être légèrement plus grande que le shared_buffers.

Dans le fichier /etc/sysctl.conf, définissez le paramètre comme indiqué ci-dessous. Il entrera en vigueur lorsque postgresql redémarrera (la ligne suivante rend le noyau maximal à 96Mb)

kernel.shmmax=100663296

Références

connexions Postgres Max et buffers partagés

Réglage de votre serveur PostgreSQL

138
Winnie

Ajoutant à l'excellente réponse de Winnie,

Si quelqu'un ne peut pas trouver l'emplacement du fichier postgresql.conf dans votre configuration, vous pouvez toujours demander à postgres lui-même.

SHOW config_file;

Pour moi, changer le max_connections seul fait le tour.

15
Jinxer Albatross

changer la variable max_connections dans le fichier postgresql.conf situé dans/var/lib/pgsql/data ou/usr/local/pgsql/data /

2
Archana