PostgreSQL La base de donnees la plus sophistiquee au monde.

Forums PostgreSQL.fr

Le forum officiel de la communauté francophone de PostgreSQL

Vous n'êtes pas identifié(e).

#1 07/06/2012 16:56:57

huguespisapia
Membre

Disque saturé en écriture avec PosgresQL 8.4 et 2PC

Bonjour,

Nous rencontrons en ce moment de gros volumes en écriture sur nos disques, amenant à une quasi saturation. Nous utilisons PG 8.4 (Ubuntu 10.04). L'application Java/J2E au dessus exécute des PREPARED TRANSACTIONS car elle exécute des transactions sur plusieurs bases de données en faisant des 2-phase commit. Et les écritures dans la base de données ne justifient pas les débits d'écriture que nous observons.

Le profil des écritures semble assez particulier car iostat nous indique que les requêtes d'écriture sont presque tout le temps de 8KB.

Nous avons désactivé le "synchronous_commit" dans postgresql.conf en incriminant les Write-Ahead Logs, mais cela n'a pas porté ses fruits (synchronous_commit = off).

Une partie des problèmes d'écriture semblait provenir de la bibliothèque que nous utilisons pour gérer les transactions (Java - Atomikos) qui écrit des fichiers. Nous l'avons mise à jour et avons déplacé le répertoire sur une partition séparée.

Cependant, ce profil d'écriture semble continuer sur la partition hébergeant le répertoire de PG. En regardant les écritures dans les différents répertoires, nous nous sommes aperçu que postgres écrivait régulièrement des fichiers avec une taille multiple de 8KB dans le répertoire pg_twophase. Est-ce une piste ? Est-il possible de déplacer ce répertoire dans une autre partition ?

Merci d'avance pour vos conseil,
Hugues

Hors ligne

#2 07/06/2012 17:01:48

gleu
Administrateur

Re : Disque saturé en écriture avec PosgresQL 8.4 et 2PC

Est-ce une piste ?

Oui, c'est une piste sérieuse.

Est-il possible de déplacer ce répertoire dans une autre partition ?

Oui. Pour cela, vous devez arrêter PostgreSQL, déplacer le répertoire, créer un lien symbolique du répertoire des données vers le nouveau emplacement, puis redémarrer PostgreSQL. Pas sûr que cela suffise à corriger vos problèmes, mais cela vaut le coup d'essayer.


Guillaume.

Hors ligne

#3 08/06/2012 01:14:44

huguespisapia
Membre

Re : Disque saturé en écriture avec PosgresQL 8.4 et 2PC

Est-ce une piste ?

Oui, c'est une piste sérieuse.

Est-il possible de modifier des paramètres afin de changer la taille des écritures ? Cela dépend peut-être de la taille des données mises en jeu dans les transactions j'imagine ?

Est-il possible de déplacer ce répertoire dans une autre partition ?

Oui. Pour cela, vous devez arrêter PostgreSQL, déplacer le répertoire, créer un lien symbolique du répertoire des données vers le nouveau emplacement, puis redémarrer PostgreSQL. Pas sûr que cela suffise à corriger vos problèmes, mais cela vaut le coup d'essayer.

Vous parlez du répertoire pg_twophase ou bien de toutes les données ?

Nous avons évoqué également en interne la possibilité d'utiliser un ramdisk pour les données des transactions. Nous sommes plus intéressés par la consistance des données lors de la transactions que par la possibilité de recovery des transactions en cours en cas de crash. Est-ce envisageable ou bien une hérésie ?

Merci pour vos réponses en tout cas !

Hors ligne

#4 08/06/2012 08:28:11

gleu
Administrateur

Re : Disque saturé en écriture avec PosgresQL 8.4 et 2PC

Est-il possible de modifier des paramètres afin de changer la taille des écritures ?

Non.

Cela dépend peut-être de la taille des données mises en jeu dans les transactions j'imagine ?

Oui. À ma connaissance, il n'y a qu'un paramètre sur le Two Phase Commit et il ne vous aidera pas dans votre problème. Et pour être franc, je n'ai jamais entendu d'un problème pareil avec le Two Phase Commit.

Vous parlez du répertoire pg_twophase ou bien de toutes les données ?

Du répertoire pg_twophase. C'est lui, d'après ce que vous dites qui vous pose problème.

Nous avons évoqué également en interne la possibilité d'utiliser un ramdisk pour les données des transactions. Nous sommes plus intéressés par la consistance des données lors de la transactions que par la possibilité de recovery des transactions en cours en cas de crash. Est-ce envisageable ou bien une hérésie ?

En ce qui concerne le répertoire pg_twophase, c'est envisageable à ma connaissance et à condition que vous ne vouliez pas récupérer les transactions 2PC en cours après un crash.

Je n'ai pas entendu parler d'amélioration du 2PC sur les versions récentes mais passez à une version supérieure est généralement une bonne chose pour les performances.

Je suis quand même très étonné que le 2PC soit responsable de vos lenteurs. Êtes-vous sûr que le problème vient de ce répertoire ? êtes-vous sûr de vos disques ? est-ce sur un SAN ?


Guillaume.

Hors ligne

#5 20/08/2012 00:07:38

aznur
Membre

Re : Disque saturé en écriture avec PosgresQL 8.4 et 2PC

mais avant l'afflux de donnee puisque vous dite que cela vien d'ariver vous ne rencontriez pas des ralentisement ? qui permetrez de dire que la limitation et hardware ?

le ram disque n'est pas une heresie il faut simplement prendre quelque precaution comme utiliser un onduleur .. par exemple
pour dire de sauvegarder les donnee sans avoir de probleme


avec un ram disque meme si la perte de donne ne vous inquiete pas il yora quelque précaution à prendre pour evite les bdd corompu  pendant une maj foireuse genre coupure d'electricite en plein millieu apres je ne connais pas le materiel d'on vous disposer

qu'entendez vous par gros volume de donnee ?

Hors ligne

Pied de page des forums