Vous n'êtes pas identifié(e).
Pages : 1
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
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.
Julien.
https://rjuju.github.io/
Hors ligne
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
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
Hors ligne
Pages : 1