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 Re : Optimisation » Activité transactionnelle forte et équivalent à MTS d'Oracle » 10/02/2009 10:22:35

Bonjour,


J'utilise xampp avec php 5.
Mon DOCUMENT_ROOT est à D:/www_php5

Modification effectuée rapidement pour tester le module sur ma base PostgreSQL en local :

1. Fichier pgsnap.php :

ligne 23 :
j'ai remplacé :

ini_set('include_path', '.:/usr/share/pgsnap/');

par

ini_set('include_path', '.;D:/www_php5/pgsnap');

2. Fichier connect.php :

ligne 74:
j'ai ajouté en dur la chaine DSN :

$DSN="host=localhost dbname=webtec user=webtec password=xxxx";

Et c'est tout. J'espère que ça pourra vous aider.

Ugo

#2 Re : Optimisation » Activité transactionnelle forte et équivalent à MTS d'Oracle » 09/02/2009 23:23:21

Le produit est très intéressant, il montre même les requêtes à exécuter pour récupérer les informations affichées sur chaque page.
Vraiment très pertinent pour apprendre les requêtes d'administration de PostgreSQL.

J'ai bien fait de tester ce produit.

Ugo

#3 Re : Optimisation » Activité transactionnelle forte et équivalent à MTS d'Oracle » 09/02/2009 23:14:24

J'ai juste fais qq modifs pour les tests :

- Dans pgsnap.php : j'ai adapté la variable en :

ini_set('include_path', '.;D:/www_php5/pgsnap');

- Erreur dans le fichier fichier connect.php :

<b>Warning</b>:  fgets(): supplied argument is not a valid stream resource in <b
>D:\www_php5\pgsnap\lib\connect.php</b> on line <b>52</b><br />

pour mes tests j'ai juste codé en dur la chaine DSN avec celle qui convient. Ca permet de tester même si c'est pas très pro ;-)

- Je n'ai pas mis les graph en place car j'ai téléchargé Open Flash Chart mais ce n'est pas très clair pour moi dans la doc sur comment mettre en place pour pgsnap. D'ailleur un des fichiers demandés : open_flash_chart_object.php n'est pas présent dans le zip  open-flash-chart-2-hyperion.zip. A moins que ce soit un problème de version, j'ai pris la dernière.

En tout cas, il y a pas mal d'informations remontés par l'outil.

Bonne soirée !

Ugo

#4 Re : Optimisation » Activité transactionnelle forte et équivalent à MTS d'Oracle » 09/02/2009 19:04:37

Merci Guillaume,

Je suis en train de regarder aussi PGSnap.
Bon je galère pour le tester sur mon poste Windows mais je viens juste de commencer.

Ugo

#5 Re : Optimisation » Activité transactionnelle forte et équivalent à MTS d'Oracle » 09/02/2009 18:06:26

Merci pour toutes les informations à vous deux.

Je vais donc expliquer au client qu'il est possible d'atteindre ce nombre de transaction sur une base PostgreSQL.
Le plus compliqué sera de lui dire quel type de serveur il lui faut mais je me baserais sur son serveur actuel.

Il me demande également quels sont les outils d'administration et de supervision sur PostgreSQL.
J'utilise pgadmin 3 depuis longtemps et j'en suis vraiment satisfait pour la partie développement mais je n’en connais pas pour la partie administration et supervision. Ce que j’entends par là, c’est un outil graphique pour voir les requêtes en cours, le top sql, les taux d’utilisation des caches, etc, …

En connaissez et utilisez vous ?

Cordialement
Ugo BRUNEL

#6 Re : Optimisation » Activité transactionnelle forte et équivalent à MTS d'Oracle » 09/02/2009 17:35:12

Bonjour Guillaume et merci pour vos réponses.

Sur Oracle, MTS permet de partager la mémoire des connexions lorsqu'il y a beaucoup d’utilisateurs connectés en simultané (Typiquement les services Web).
En effet, sur Oracle en mode dédié (contrairement au mode MTS), chaque session possède son propre espace de mémoire (tri, variables, …), il est donc nécessaire d’avoir suffisamment de mémoire RAM pour gérer toutes les connexions. On met le mode MTS pour partager les connexions et avoir donc un espace mémoire, pour les connexions, limité.

Votre description de pgPool et de pgBouncer a l’air de correspondre à cette fonctionnalité.

Vous dites que 200 à 300 transactions par seconde vous paraissent peu. Pour vous il n’y a pas besoin d’un serveur très puissant ?
Bien sûr, tout dépend du type de transaction.
Le client indique que pratiquement toutes les requêtes sont simples mais longues (unions multiples, group by, …).

Cordialement
Ugo BRUNEL

#7 Optimisation » Activité transactionnelle forte et équivalent à MTS d'Oracle » 09/02/2009 16:06:23

ugo.brunel
Réponses : 12

Bonjour,

J’ai un client qui envisage de passer son application d'Oracle à PostgreSQL et il a plusieurs questions :

Pour le support de la charge et des performances :

- Il n’existe pas en intégré dans PostgreSQL un équivalent à MTS (connexion Multi-thread) d’Oracle. Ce qui permet d’avoir du partage de mémoire pour les connexions des utilisateurs lorsqu’il y a beaucoup d’utilisateurs connectés en simultané. J’ai vu qu’il existe les produits comme pgpool, memcached, PgBouncer, …
Peut-on comparer leur fonctionnement à celui de MTS sur Oracle ?
Quel est le meilleur d’entre eux du point de vue installation, utilisation, fiabilité, ... ?

- L'activité transactionnelle de l'application d’origine est élevée: 200 à 300 par secondes. (400000 pages/jour)
La base PostgreSQL peut-elle supporter cela et avec quelle machine ?

Pour info, voici les opérations que le client a du effectuer sur leur base Oracle pour obtenir des performances élevées et linéaires avec 400000 pages/jour de traitement :

- Mise en oeuvre du mode MTS avec 10 shared servers / 25 dispatchers
- Nettoyage des sessions après 15 secondes d'inactivité
- Max connexion: 2000
- 10 GO de swap pour 16 GO de RAM
- Ajout de collecte de statistiques sur les tables les plus volumineuses

Merci par avance pour vos réponses.

Cordialement
Ugo BRUNEL

#8 Re : Général » Problème avec pg_dump sur un bytea » 27/09/2008 09:00:12

Bonjour Jean-Paul,

pg_dump s'est planté sur une erreur mémoire insuffisante (autre erreur qu'initialement) :

Fri Sep 26 15:05:59 CEST 2008
pg_dump: ERREUR:  mémoire insuffisante
DETAIL:  Echec d'une requête de taille 1073741823.
pg_dump: SQL command to dump the contents of table "wct_binary" failed: PQendcopy() failed.
pg_dump: Error message from server: ERREUR:  mémoire insuffisante
DETAIL:  Echec d'une requête de taille 1073741823.
pg_dump: The command was: COPY public.wct_binary (binary_id, data) TO stdout;
Fri Sep 26 21:55:06 CEST 2008

Le fichier est arrivé avec une taille de 3,38 Go (3636299114 o)

Je vais fournir une copie de la table à un autre service qui a des serveurs de tests et des versions différentes de PostgreSQL. Je leur ai demandé également de mettre à jour cette discussion avec le résultat de leurs tests.

Bon week-end et encore merci de votre aide

Cordialement
Ugo BRUNEL

#9 Re : Général » Problème avec pg_dump sur un bytea » 26/09/2008 16:37:07

Bonjour Jean-Paul et merci de votre aide,

J'ai testé SELECT * FROM wct_binary mais j'ai l'erreur : "out of memory for query result".
Par contre, je ne pense pas que l'on est uno corruption de bloc car en attendant de corriger notre problème nous sauvegardons les tables par des commandes : "COPY table TO file" sur chaque table et nous n'avons pas d'erreur sur la table wct_binary. Cette commande doit faire l'équivalent d'un SELECT * from wct_binary et elle fonctionne correctement.

J'ai mis dans $PGDATA/postgresql.conf :

#---------------------------------------------------------------------------
# ERROR REPORTING AND LOGGING
#---------------------------------------------------------------------------

log_destination = 'syslog'      # Valid values are combinations of stderr,
redirect_stderr = true      # Enable capturing of stderr into log files.
log_directory = '/vc10q08/prd/exp/log'    # Directory where log files are written.
log_filename = 'postgresql-%a.log' # Log file name pattern.
log_truncate_on_rotation = true  # If true, any existing log file of the
log_rotation_age = 1440     # Automatic rotation of logfiles will happen after
log_rotation_size = 0       # Automatic rotation of logfiles will happen after
syslog_facility = 'LOCAL0'
syslog_ident = 'postgres'
log_min_messages = debug1       # Values, in order of decreasing detail:
log_min_messages = debug1       # Values, in order of decreasing detail:
log_min_error_statement = debug1 # Values in order of increasing severity:
log_connections = true
log_line_prefix = '%t'          # e.g. '<%u%%%d> '

J'ai relancé le pg_dump avec :

pg_dump -Fc -Z9 -b webct95 > test_dump_webct95.dmp

Le process prends 99,2 % de CPU et tourne depuis 1h30 et à générer pour le moment un fichier de 759 Mo.
Pour le moment, je n'ai aucune traces de généré.

Je vous enverrais les traces que je pourrais récupérer une fois le traitement terminé.

Merci par avance

Cordialement
Ugo BRUNEL

#10 Général » Problème avec pg_dump sur un bytea » 25/09/2008 09:03:59

ugo.brunel
Réponses : 17

Bonjour à tous,

Ce post fait suivre à notre problème rencontré le 30/07/2008 : http://www.postgresqlfr.org/?q=node/1707

Nous n’arrivons pas à dumper notre base de données, la commande pg_dump se plante sur une grosse table ayant deux champs : un entier (id) et un bytea (blob qui stocke des fichiers)

Message d'erreur :

pg_dump: Dumping the contents of table "wct_binary" failed: PQgetCopyData() failed.
pg_dump: Error message from server: lost synchronization with server: got message type "d", length 658306580
pg_dump: The command was: COPY public.wct_binary (binary_id, data) TO stdout;
pg_dump: *** aborted because of error

Nous avons essayé plusieurs façons de faire mais la commande se plante toujours au même endroit. Testé avec plusieurs versions de pg_dump (8.0.14, 8.1.3, 8.3.3).

Infos techniques :
version base = 8.0.14
version OS = linux ES 4 up4

Après plusieurs tentatives d’essai de pg_dump avec différents paramètres, nous avons essayé le dump en mode ASCII pour voir ou pg_dump bloque. Nous avons supprimé l’enregistrement en question et le suivant mais rien n’y fait.

Le problème ne vient pas de la taille du fichier dump. Avant le fichier dump était de plus de 6 Go et ça fonctionnait.
De plus, lorsque nous avons généré le dump en mode ASCII, le fichier était de plus de 10 Go.

A priori pg_dump n'arrive pas à faire un fetch des 100 enregistrements suivants après un enregistrement en particulier.
Y'a t il un moyen de lui faire faire un fecth plus petit ?

Merci par avance.

Cordialement
Ugo BRUNEL

Pied de page des forums

Propulsé par FluxBB