Vous n'êtes pas identifié(e).
Pages : 1
Bonjour,
je configure une base de données de type Web en utilisant pgtune. Pour un serveur avec 4Go de RAM, pgtune me donne:
maintenance_work_mem = 256MB
work_mem = 13MB
shared_buffers = 1GB
max_connections = 300
work_mem * max_connections = 3900MB
alors work_mem * max_connections + maintenance_work_mem + shared_buffers >>> 4GB
Même si work_mem n'est qu'un maximum de ressource utilisable par un utilisateur, n'y a-t-il pas un risque d'explosion de la RAM et donc de la base de données?
Merci pour vos éclaircissements!
Dernière modification par saigamp (25/04/2012 08:41:05)
Hors ligne
Si, le risque est présent. Maintenant, que 300 personnes demandent tous 13 Mo pour un tri, c'est peu probable. Personnellement, je ne proposerais pas 300 pour le max_connections. C'est une proposition de pgtune, ce max_connections ?
Guillaume.
Hors ligne
En fait work_mem=13MB et max_connections=300, c'est pour une base OLTP.
Pour une base Web, pgtune donne work_mem=20MB et max_connections=200.
work_mem * max_connections = 4000MB : c'est encore pire!!!
Si je cromprend bien, il vaut mieux baisser un des deux paramètres?
Hors ligne
Ou alors le risque est que la mémoire swap, ce qui n'est finalement pas si méchant que ça.
Hors ligne
Le swap pas méchant ? certainement le meilleur moyen de faire crasher un serveur très rapidement.
Pour en revenir à pgtune, quand je lui demande d'estimer la config pour un charge de type Web (pgtune -i /le/chemin/vers/postgresql.conf -T Web), j'obtiens ceci avec mon portable ayant 4Go de mémoire :
default_statistics_target = 100
maintenance_work_mem = 224MB
checkpoint_completion_target = 0.7
effective_cache_size = 2816MB
work_mem = 18MB
wal_buffers = 4MB
checkpoint_segments = 8
shared_buffers = 896MB
max_connections = 200
Soit 200*4MB, autrement 800MB. Tout à fait normal. Pour une charge OLTP, il m'indique :
default_statistics_target = 100
maintenance_work_mem = 224MB
checkpoint_completion_target = 0.9
effective_cache_size = 2816MB
work_mem = 12MB
wal_buffers = 8MB
checkpoint_segments = 16
shared_buffers = 896MB
max_connections = 300
Soit 300*12MB, autrement dit 3,6 Go. Ça fait beaucoup, ce qui est certainement dû au fait que c'est du OLTP où on ne s'attend pas à ce que tous les utilisateurs exécutent en même temps de grosse requêtes, mais où on s'attend en même temps à ce que quelques utilisateurs lancent de grosses requêtes qui bénéficieront de ce surplus de mémoire. Bref, personnellement, j'aurais tendance à diviser par deux le work_mem proposé, mais ce n'est que mon avis
Guillaume.
Hors ligne
Soit 200*4MB, autrement 800MB.
200*18 plutôt = 3,6 GB aussi.
Mon serveur fait 4Go de RAM mais j'ai passé en paramètre à pgtune -M 4294967296, d'où la petite différence.
Je vais suivre le conseil de diviser par 2 work_mem, d'autant que le site rencontre des pics de fréquentation à la "clôture des inscriptions".
Hors ligne
Pages : 1