Vous n'êtes pas identifié(e).
- Contributions : Récentes | Sans réponse
#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