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 21/03/2012 17:31:22

arthurr
Membre

Saturation des x_log

Bonjour,

J'ai un serveur Postgresql 9.1.3 et c'est la 2ème fois que je sature ma partition x_log.
Cette partition fait 9Go.

Ma configuration de checkpoint :

xxx=# select name, setting from pg_settings  where name  ~ 'checkpoint|wal' order by 1;
             name             |  setting  
------------------------------+-----------
 checkpoint_completion_target | 0.8
 checkpoint_segments          | 64
 checkpoint_timeout           | 900
 checkpoint_warning           | 30
 log_checkpoints              | off
 max_wal_senders              | 0
 wal_block_size               | 8192
 wal_buffers                  | 2048
 wal_keep_segments            | 0
 wal_level                    | minimal
 wal_receiver_status_interval | 10
 wal_segment_size             | 2048
 wal_sender_delay             | 1000
 wal_sync_method              | fdatasync
 wal_writer_delay             | 200
(15 rows)

(Je viens juste de baisser le nombre de checkpoint_segments à 32 pour eviter d'autres saturations.)
D'après la formule magique, je ne devais pas avoir plus de (2 + 0.8) * 64 + 1 journaux, soit 180 fichiers WAL.
Et 180 xlog de 16Mo ça fait -> 2.8 Go

En ce moment même, j'ai relancé mon traitement avec un checkpoint_segments = 32 et j'ai 405 fichiers Wal.

J'ai raté quelque chose ?

Hors ligne

#2 21/03/2012 18:31:03

rjuju
Administrateur

Re : Saturation des x_log

Bonjour.
Vous devriez vérifier qu'il n'existe pas des transactions non commitées qui traineraient sur le serveur ou des messages d'erreurs dans les fichiers logs pour avoir plus d'information.

Hors ligne

#3 21/03/2012 18:39:21

arthurr
Membre

Re : Saturation des x_log

Merci pour votre réponse.
Je n'ai pas d'erreur avant celle-ci :

PANIC:  could not write to file "pg_xlog/xlogtemp.24462": Aucun espace disponible sur le périphérique
CONTEXT:  writing block 9771 of relation pg_tblspc/16705/PG_9.1_201105231/16384/1336658
LOG:  server process (PID 24462) was terminated by signal 6: Aborted
LOG:  terminating any other active server processes
WARNING:  terminating connection because of crash of another server process
DETAIL:  The postmaster has commanded this server process to roll back the current transaction and exit, because another server process exited abnormally and possibly corrupted shared memory.
HINT:  In a moment you should be able to reconnect to the database and repeat your command.

Je lance un soft en pyhton qui va creer 24 thread et chaque thread va creer une table temporaire qui est elle même utilisée par une procedure stockée appelée en boucle (la table temporaire de chaque thread est vidée avant d'être réutilisée par la boucle suivante).

Hors ligne

#4 21/03/2012 18:52:49

arthurr
Membre

Re : Saturation des x_log

OK ... j'ai trouvé mon problème.
Merci de ne pas rire trop fort :
je devais commiter chaque thread tous les 50 traitements, j'ai utilisé une belle variable "i" mais j'ai oublié de l'incrémenter.

Désolé pour le bruit, je vais me cacher !

Hors ligne

#5 21/03/2012 23:32:48

rjuju
Administrateur

Re : Saturation des x_log

Ca arrive à tout le monde smile

Hors ligne

Pied de page des forums