IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Administration PostgreSQL Discussion :

Parametrer max_fsm_pages sur Postgresql


Sujet :

Administration PostgreSQL

  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    Mai 2002
    Messages
    138
    Détails du profil
    Informations personnelles :
    Âge : 46
    Localisation : France

    Informations forums :
    Inscription : Mai 2002
    Messages : 138
    Points : 47
    Points
    47
    Par défaut Parametrer max_fsm_pages sur Postgresql
    Bonjour a tous.

    J'ai un petit souci avec mon serveur.
    Je l'explique.
    En fait, j'ai une application WEB qui tourne sur un serveur Windows/Apache, et qui communique avec une BD Ubuntu 8.04 LTS/Postgresql 8.2.
    J'ai environ 200 bases de 90 tables environ de stockees dans PG.
    Jusqu'a peu, je n'avais aucun soucis, mais maintenant, j'ai un petit probleme avec les sauvegardes qui s'effectuent toutes les nuits.
    En effet, j'ai d'abord eu le message suivant :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    VACUUM
    vacuumdb: vacuuming database "xxxxxxx"
    INFO:  le nombre d'emplacements de pages nécessaires (252176) dépasse max_fsm_pages (153600)
    HINT:  Considérez l'augmentation du paramètre de configuration « max_fsm_pages » à une valeur supérieure à 252176.
    Puis depuis peu, celui la :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    ATTENTION:  la relation « pg_catalog.pg_largeobject » contient plus de « max_fsm_pages » pages d'espace libre utile
    HINT:  Pensez à compacter cette relation ou à augmenter le paramètre de configuration « max_fsm_pages ».
    Bon, le message est clair, je dois pour regler ces problemes augmenter le parametre max_fsm_pages.
    Mais avant de faire cela, je voudrais savoir dans quelle mesure je peux augmenter ce parametre.

    J'ai fait des recherches a droite a gauche et j'ai trouve les regles de calculs qui disent qu'il faut que 'max_fsm_pages' soit 16 fois superieur au moins a 'max_fsm_relations'. Mais pas quelle valeur on peut mettre selon sa config hardware.

    Mon serveur est un Processeur Intel Xeon 2.4Ghz double coeur, j'ai un DD de 10Go pour le repertoire racine (2.3 utilise), 57Go pour le /home (ou sont stockees les bases) (25 utilise) et 2Go de RAM. Ce serveur est specifiquement dedie a ma BD, donc rien d'autre ne tourne dessus.
    Donc, avec cette config, a combien je peux monter les parametres suivants :
    - max_fsm_relations
    - max_fsm_pages

    De plus, j'ai lu aussi qu'il serait peut etre necessaire d'augmenter :

    shmmax et shmall
    Pour l'instant, j'ai :
    shmmax = 33554432
    shmall = 2097152
    Et apparement pour shmmax, pour un serveur avec 2Go de ram, ils conseillent de mettre 1Go, soit : 1073741824
    Et ils conseillent aussi de passer le shared_buffer (que j'ai pour l'instant a 24Mo), a 1024Mo, en faisant attention de a ce que cette valeur soit inferieure a shmmax (donc peut etre mettre un peut plus a shmmax ou un peu moins a shared_buffer).

    J'ai beaucoup de question, mais etant donne que mon serveur est en production, je ne peux me permettre de faire une erreur qui pourrait le rendre inutilisable.
    Je vous remercie donc par avance pour votre aide.

    jinpol...

  2. #2
    Membre averti
    Homme Profil pro
    Informaticien
    Inscrit en
    Juin 2004
    Messages
    182
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Gers (Midi Pyrénées)

    Informations professionnelles :
    Activité : Informaticien
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : Juin 2004
    Messages : 182
    Points : 357
    Points
    357
    Par défaut
    bonjour

    je pense que vous pouvez augmenter sans souci la valeur de max_fsm_pages à
    26000
    il faut aussi régler max_relation en fonction.

    pour shmmax, on déclare en général la moitie de la ram disponible sur le serveur.
    dans mon cas :
    sur mon serveur (etch+postgresql 8.1) shmmax = 3go

  3. #3
    Membre du Club
    Profil pro
    Inscrit en
    Mai 2002
    Messages
    138
    Détails du profil
    Informations personnelles :
    Âge : 46
    Localisation : France

    Informations forums :
    Inscription : Mai 2002
    Messages : 138
    Points : 47
    Points
    47
    Par défaut
    Bonjour,

    et tout d'abord, merci pour votre aide.
    Par contre, vous mettez 26.000, mais c'est plutot 260.000 que vous vouliez mettre non, etant donne qu'il me faut au moins 252.176 pour max_fsm_pages.

    Et donc si je mets 260.000 pour max_fsm_pages, je dois mettre :

    260.000/16 = 16.250 pour max_fsm_relations ???

    Enfin pour shmmax, vous me conseillez de mettre 1Go, et pour le shared_buffer, est-ce que je peux mettre aussi 1024Mo comme je l'ai lu sur un site avec ma config ?

    Encore merci pour votre aide.
    jinpol...

  4. #4
    Membre averti
    Homme Profil pro
    Informaticien
    Inscrit en
    Juin 2004
    Messages
    182
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Gers (Midi Pyrénées)

    Informations professionnelles :
    Activité : Informaticien
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : Juin 2004
    Messages : 182
    Points : 357
    Points
    357
    Par défaut
    il s'agit effectivement de 260.000

    concernant le paramètre max_relation voici une de mes configs qui se rapproche de la votre.

    max_fsm_pages=320 000
    max_fsm_relation=5 000

    par contre la valeur de shared_buffer me semble exagérée.
    256 voire 128 Mo serait suffisant.

    il ne faut pas oublier de paramétrer effective_cache_size
    voir http://www.postgresql.org/docs/8.2/i...fig-query.html

  5. #5
    Membre du Club
    Profil pro
    Inscrit en
    Mai 2002
    Messages
    138
    Détails du profil
    Informations personnelles :
    Âge : 46
    Localisation : France

    Informations forums :
    Inscription : Mai 2002
    Messages : 138
    Points : 47
    Points
    47
    Par défaut
    Bon, j'ai fait quelques recherches et quelques calculs en m'inspirant de votre aide, et j'arrive au resultat suivant :

    Je dois donc parametrer les valeurs suivantes :

    max_fsm_relations - max_fsm_pages - effective_cache_size - shmmax - shmall

    Apparement, pour 2 Go de RAM, on peut mettre :
    shmmax = 1073741824 soit 1 Go ou encore 1048576 Ko (important pour la suite)

    Pour shmall, meme valeur que pour shmmax.

    pour le shared_buffers, j'ai trouve la formule suivante :
    shmmax = 250Ko + 8.2 Ko * shared_buffers + 14.2 Ko * max_connections
    avec donc shmmax = 1048576 Ko et max_connections = 200
    ce qui donne :
    shared_buffers = 127498 Ko, soit environ 128 Mo

    Ensuite, pour max_fsm_pages, je me base sur ce que vous avez mis, soit :
    max_fsm_pages = 320000

    Et vu que max_fsm_relations doit etre au moins 16 fois inferieur a max_fsm_pages, je vais mettre :
    max_fsm_relations = 16000

    Enfin, pour effective_cache_size, j'ai deux sons de cloche.
    Soit on met 2/3 de la Ram pour un serveur dedié exclusivement a PostgreSQL, donc pour moi qui ait 2 Go de Ram, ca fait 1.3 Go environ, ou bien on tape la commande free, on regarde la memoire qu'il reste en cache, (premiere ligne -> cached) et on met cette valeur pour effective_cache_size, soit dans mon cas environ 800 Mo.

    Donc, petit recapitulatif :

    shmmax = 1073741824
    shmall = 1073741824
    shared_buffers = 128 Mo
    max_fsm_pages = 320000
    max_fsm_relations = 16000
    effective_cache_size = entre 800 Mo et 1,3Go

    Voila, est-ce que cela semble judicieux a votre avis ???
    Je vais tester ces valeurs, voir si je ne rencontre plus de soucis lors des sauvegardes, et si mon Postgres tourne toujours aussi bien, voir mieux si ces parametres sont bons

    Merci pour votre aide.
    jinpol...

  6. #6
    Membre averti
    Homme Profil pro
    Informaticien
    Inscrit en
    Juin 2004
    Messages
    182
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Gers (Midi Pyrénées)

    Informations professionnelles :
    Activité : Informaticien
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : Juin 2004
    Messages : 182
    Points : 357
    Points
    357
    Par défaut
    les paramètres semblent adéquats (même si l'on s'éloigne du problème initial de vacuum )

    à propos du vacuum il est possible de lui affecter des ressources supplémentaires avec maintenance_work_mem.

    De même, (suivant les traitements effectués) vous pouvez aussi améliorer les temps de réponses avec le paramètre work_mem.

    voir http://www.postgresql.org/docs/8.2/s...-resource.html

    voila.

  7. #7
    Membre du Club
    Profil pro
    Inscrit en
    Mai 2002
    Messages
    138
    Détails du profil
    Informations personnelles :
    Âge : 46
    Localisation : France

    Informations forums :
    Inscription : Mai 2002
    Messages : 138
    Points : 47
    Points
    47
    Par défaut
    Merci beaucoup, je vais donc essayer ca.
    C'est vrai qu'on s'est un peu eloigne du vacuum, mais c'est qd meme lie vu qu'il fallait modifier max_fsm_pages, qui entraine une modif de max_fsm_relations etc... :p

    Et puis ca fait des mois que j'essayai de parametrer mon serveur de BD comme il faut, mais vu que ce n'est pas ma specialite, je n'osai pas trop y toucher et je ne savais pas trop comment m'y prendre.
    Et en ce qui concerne les parametres pour la maintenance, j'y jeterai un oeil des que j'aurai le temps...pendant que j'y suis, autant me lancer a fond

    En tous cas, merci beaucoup.
    Je ne cloture pas encore le sujet au cas ou je rencontre des problemes de perfs ou autre avec ces parametres, mais je reviendrai donner des nouvelles pour faire partager mon experience et peut etre aider des novices comme moi qui rencontreraient le meme probleme.

    jinpol...

  8. #8
    Membre du Club
    Profil pro
    Inscrit en
    Mai 2002
    Messages
    138
    Détails du profil
    Informations personnelles :
    Âge : 46
    Localisation : France

    Informations forums :
    Inscription : Mai 2002
    Messages : 138
    Points : 47
    Points
    47
    Par défaut
    Salut a tous.

    Bon, je viens tout d'abord pour faire un petit point.
    En effet, j'ai modifie les param de Postgres comme je l'ai indique dans ce topic, et apparement, ca ne tourne pas mal du tout.
    Je peux donc dire que mes calculs ne sont pas mauvais, meme si on doit pouvoir faire mieux

    Sinon j'ai aussi une autre question a propose de max_fsm_pages toujours.
    Qu'est ce qui fait augmenter le nombre d'emplacements de pages necessaire aussi rapidement ???

    En effet, lorsque j'ai rencontre ce probleme quand j'ai ouvert ce topic, le nombre d'emplacements necessaires etait de 252176, et depuis hier, j'ai a nouveau ce message qui m'indique que le nombre d'emplacements necessaires est de 393456. Il a donc presque double en quelques semaines. Si je ne me trompe pas, c'est lie au nombre d'index total que j'ai dans toutes mes bases postgres.
    Mais ce qui m'embete un peu, c'est que ce nombre grandit sans arret, il faudrait donc que j'augmente encore max_fsm_pages, mais je ne peux pas l'augmenter indefiniement. Je vais forcement atteindre les limites de ma machine a un moment ou un autre non ???

    Du coup, qu'est ce que je dois changer a la config de mon serveur pour mettre un max_fsm_pages bcp plus grand que ce que j'ai actuellement c'est a dire 320000 ???

    Merci beaucoup pour votre aide a ce probleme qui j'ai l'impression va me suivre a mesure que mon nombre de bases va augmenter.

    jinpol

  9. #9
    Membre averti
    Homme Profil pro
    Informaticien
    Inscrit en
    Juin 2004
    Messages
    182
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Gers (Midi Pyrénées)

    Informations professionnelles :
    Activité : Informaticien
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : Juin 2004
    Messages : 182
    Points : 357
    Points
    357
    Par défaut
    Bonjour,

    max_fsm_pages permet à postgresql de connaître les emplacements libres sur lequel il peut réécrire.

    ces emplacements sont générés par exemple par des delete.
    afin d'eviter un "débordement",il peut être intéressant de lancer un vacuum full régulièrement. (par ex: 1 par nuit)

    mais cela est à déterminer suivant le nombre de mise à jour sur la base.
    1 fois par semaine peut suffire.

    la vitesse à laquelle augmente ce paramètre est un bon indicateur.

  10. #10
    Membre du Club
    Profil pro
    Inscrit en
    Mai 2002
    Messages
    138
    Détails du profil
    Informations personnelles :
    Âge : 46
    Localisation : France

    Informations forums :
    Inscription : Mai 2002
    Messages : 138
    Points : 47
    Points
    47
    Par défaut
    Bonjour,

    et tout d'abord, merci pour votre reponse.
    En ce qui concerne le vacuum, je fais un vacuumdb toutes les nuits avant de sauver mes BD. Et ce que ca a le meme effet qu'un vacuum full sur chacune des bases ???

    Et sinon en ce qui concerne mon autre question, est-ce qu'a force d'augmenter max_fsm_pages dans ma config, ca ne va pas poser probleme au niveau de mon serveur ??? Et si oui, qu'elle est le composant materielle que je dois ameliorer, la RAM ???

    Merci d'avance pour votre reponse.
    jinpol...

  11. #11
    Membre averti
    Homme Profil pro
    Informaticien
    Inscrit en
    Juin 2004
    Messages
    182
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Gers (Midi Pyrénées)

    Informations professionnelles :
    Activité : Informaticien
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : Juin 2004
    Messages : 182
    Points : 357
    Points
    357
    Par défaut
    le vacuumdb n'effectue un vacuum full que si vous lui mettez le bon paramètre.

    (ex: vacuumdb -f)

    Concernant l'augmentation de la ram, elle n'est nécessaire que si votre système utilise le swap disque.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Question sur PostGreSQL
    Par gabychon dans le forum PostgreSQL
    Réponses: 1
    Dernier message: 24/05/2005, 23h23
  2. Pb insert sur postgresql 8 (windows)
    Par testeur dans le forum PostgreSQL
    Réponses: 1
    Dernier message: 21/10/2004, 17h44
  3. gerer les parametres entrée sur un TADOStoredProc
    Par keguira dans le forum Bases de données
    Réponses: 1
    Dernier message: 13/09/2004, 15h56
  4. Pbleme UPDATE sur POSTGRESQL
    Par $grm$ dans le forum PostgreSQL
    Réponses: 6
    Dernier message: 26/04/2004, 14h50

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo