/ dev / shm taille recommandation pour la base de données postgres dans le docker

Sep 11 2020

Nous avons la base de données postgresql 11.7 dans le conteneur docker.

Nous avons eu un problème "pq: could not resize shared memory segment "/PostgreSQL.XXX" to XXX bytes: No space left on device", décrit ici .

Solution aidée, nous n'avons plus de problème. Mais quelle taille devons-nous définir pour shm_size pour le conteneur docker avec Postgres?

Y a-t-il une recommandation? Comment pouvons-nous calculer la «taille optimale» pour shm_size?

Réponses

2 LaurenzAlbe Sep 11 2020 at 15:32

Il y a deux choses qui utilisent la mémoire partagée:

  • La mémoire partagée allouée au démarrage du serveur. Cela se compose de plusieurs parties, mais la part du lion est shared_buffersle cache de données.

    Il faut donc avoir plus de mémoire partagée que cela.

  • Segments de mémoire partagée alloués par requête parallèle pour communiquer entre les travailleurs parallèles.

    Leur taille dépend des données transférées, et plusieurs d'entre elles peuvent être allouées, c'est donc une ressource plus difficile à contrôler.

Sur un système à mémoire limitée, je vous recommande de désactiver la requête parallèle. Cela accélère les requêtes, mais utilise plus de ressources par requête, de sorte que le débit global ne s'améliore pas. C'est bien si vous voulez jeter beaucoup de ressources sur une seule requête.

Pour désactiver la requête parallèle, définissez la valeur max_parallel_workerssur 0.