Navigation

Toutes les catégories

Filtrer par auteur

Voir les derniers articles

Augmenter le nombre max de connexions possibles d’une base PostgreSQL

Pour augmenter le nombre max de connexions possibles à une base de PostgreSQL, il faut éditer le fichier : [bash]/etc/postgresql/8.1/main/postgresql.conf[/bash] Note :...

Logo PostgreSQL

Pour augmenter le nombre max de connexions possibles à une base de PostgreSQL, il faut éditer le fichier :

[bash]/etc/postgresql/8.1/main/postgresql.conf[/bash]

Note : Remplacer 8.1 par votre version installée.

Changer alors la valeur de la ligne :

[bash]max_connections = 200                   # (change requires restart)[/bash]

Cependant, plusieurs choses sont liées à ce nombre total de connexions possibles notamment des valeurs liées à la mémoire. Il faut donc modifier d’autres champs. Il vous faudra calculer la nouvelle valeur du champs shared_buffer suivant la règle : 16kb*max_connexion

[bash]shared_buffers = 32MB                   # min 128kB or max_connections*16kB[/bash]

Si vous essayez maintenant de redémarrer votre base, vous devriez avoir un message du genre :

[bash]
Restarting PostgreSQL 8.3 database server : mainThe PostgreSQL server failed to start. Please check the log output : 2009-10-07 14 :02 :20 CEST FATAL : n’a pas pu créer le segment de mémoire partagée : Argument invalide 2009-10-07 14 :02 :20 CEST DETAIL : L’appel système qui a échoué était shmget(clé=5432001, taille=39723008, 03600). 2009-10-07 14 :02 :20 CEST ASTUCE : Cette erreur signifie habituellement que la demande de PostgreSQL pour un segment de mémoire partagée a dépassé le paramètre SHMMAX de votre noyau. Vous pouvez soit réduire la taille de la requête soit reconfigurer le noyau avec un SHMMAX plus important. Pour réduire la taille de la requête (actuellement 39723008 octets), réduisez le paramètre de shared_buffers de PostgreSQL (actuellement 4096) et/ou le paramètre max_connections (actuellement 203). Si la taille de la requète est déjà  petite, il est possible qu’elle soit moindre que le paramètre SHMMIN de votre noyau, auquel cas, augmentez la taille de la requête ou reconfigurez SHMMIN. La documentation de PostgreSQL contient plus d’informations sur la configuration de la mémoire partagée. failed !
[/bash]

Il vous explique par ses mots qu’il ne dispose pas assez d’espace mémoire réserver pour les sémaphores qu’il va créer. Il faut donc recalculer la taille de la variable  SHMMAX du kernel, la renseigner et la faire prendre en considération par Linux.

Pour connaître la taille de la mémoire partagée, utilisez la commande :

[bash]cat /proc/sys/kernel/shmmax[/bash]

Pour la modifier :

[bash]echo 134217728 > /proc/sys/kernel/shmmax[/bash]

Les valeurs proposées dans la littérature utilise une valeur de BLCKSZ de 8192 bytes (taille du bloc sur le disque dur créé lors du formatage du disque dur). Pour déterminer les valeurs de shmmax, effectuez ce calcul 250 Ko + 8.2 Ko * shared_buffers + 14.2 Ko * max_connections

Pour écrire dans le fichier sysctl.conf et garder la valeur au prochain reboot, utiliser la commande suivante :

[bash]sysctl -w kernel.shmmax=valeur[/bash]

Pour que les nouveaux paramètres soient pris en compte sans rebooter le serveur :

[bash]sysctl -p /etc/sysctl.conf[/bash]

Vous venez d’augmenter le nombre de connexions possibles à votre serveur PostgreSQL et vous avez optimisé les espaces mémoires pour ça.

Newsletter WebActus

Abonnez-vous pour recevoir notre sélection des meilleurs articles directement dans votre boîte mail.

Nous ne partagerons pas votre adresse e-mail.

Articles similaires

Webmarketing

SEO On-Site : 7 indicateurs à analyser quotidiennement

Le SEO, ou référencement naturel, est au coeur des débats communicationnels de nombreuses entreprises, et ce depuis plus d’une décennie. Le...

Publié le par Kevin Dangu
Webmarketing

Un Nexus One coûterait 174$ à fabriquer

Un cabinet d’étude américain iSuppli, qui fait référence en matière de rétro-ingénierie de gadgets, vient de publier ce qu’il estime être le prix de revient d’un...

Publié le par Team WebActus