Gestion des ressources IPC utilisées par PostgreSQL
Dans certaines circonstances, PostgreSQL peut laisser des ressources « permanentes » occupées sur le serveur aprés un violent problème (ou un redémarrage). Ces ressources sont des IPC (Inter Process Communication) et peuvent se manifester sous deux formes :
- de la mémoire partagée (shm), utilisée essentiellement par PostgreSQL en fonction de la variable d'environnement shared_buffers
- des sémaphores
Pour récupérer une liste des ressources, lancer la commande « ipcs » en tant qu'utilisateur root ou postgres. Cette commande liste l'ensemble des ressources IPC utilisées sur la machine. Vous obtiendrez une liste similaire à celle-ci :
[root@serveur root]# ipcs
------ Segments de mémoire partagée --------
touche shmid propriétaire perms octets nattch statut
0x0052e2c1 0 postgres 600 288038912 10
------ Tables de sémaphores --------
touche semid propriétaire perms nsems statut
0x0052e2c1 0 postgres 600 17
0x0052e2c2 32769 postgres 600 17
0x0052e2c3 65538 postgres 600 17
------ Files d'attente de messages --------
touche msqid propriétaire perms octets utilisés messages
Si PostgreSQL n'est pas lancé et que des ressources demeurent allouées vous pouvez les libérer avec la commande « ipcrm » en tant que root ou postgresql.
- Pour les sémaphores : « ipcrm sem <semid> »
- Pour la mémoire partagée : « ipcrm shm <shmid> »
Attention ! Assurez-vous de bien vérifier qu'aucun processus postgres ne soit lancé (postmaster notamment).

