PgSQL replica lag trop important trafic write lourd

suzanne86 31/07/2025
RÉSOLU
suzanne86
Auteur Actif
Avatar de suzanne86
suzanne86
Auteur Actif

salut la compagnie. ma replica pgsql galère à suivre la prod. le lag monte à plusieurs minutes en pic de write. primary tourne bien, replica aussi niveau CPU/RAM mais disque saturé sur la replica. je vois des pg_wal/ qui grossissent plus vite que le système arrive à les appliquer. des idées ?

SELECT \
    pg_wal_replay_pause_time(), \
    pg_last_wal_replay_lsn(), \
    pg_last_wal_receive_lsn(), \
    now() - pg_last_xact_replay_timestamp() AS replication_delay;
31/07/2025 à 09:23

16 commentaires

lopes-daniel
Membre Actif Secouriste
Avatar de lopes-daniel
lopes-daniel
Membre Actif Secouriste

ouais classique. c quoi ton setup ? sync/async ? quelle version pg ? type de storage sur la replica ?

01/08/2025 à 07:56
suzanne86
Auteur Actif
Avatar de suzanne86
suzanne86
Auteur Actif

async replication. pg 14. storage ssd nvme sur primary. replica c'est du gp2 sur aws. je suspecte ça.

02/08/2025 à 05:15
lopes-daniel
Membre Actif Secouriste
Avatar de lopes-daniel
lopes-daniel
Membre Actif Secouriste

ah ouais gp2 ça peut être le bottleneck. gp2 c max 16k IOPS et 250MB/s pour 16TB. si t'as une petite taille de volume les IOPS sont nuls. tu peux burster mais c pas fait pour du sustained high write. pour une replica, tu lis bcp de WAL, ça bouffe des IOPS.

03/08/2025 à 01:10
suzanne86
Auteur Actif
Avatar de suzanne86
suzanne86
Auteur Actif

le volume fait 500gb. donc je suis à 1500 iops de base. le burst aide mais ça tient pas. je vois bien des périodes où le iops_util est à 100% sur la replica.

Modifié le 23/05/2026 à 16:20
lopes-daniel
Membre Actif Secouriste
Avatar de lopes-daniel
lopes-daniel
Membre Actif Secouriste

exactement. pour la replica t'as besoin de beaucoup d'IOPS en lecture pour appliquer les WAL. si tu peux pas écrire les WAL assez vite ça lag. passe en io1 ou io2 pour du high IOPS garanti, ou gp3 avec des IOPS provisionnés. c'est le plus direct.

04/08/2025 à 18:50
suzanne86
Auteur Actif
Avatar de suzanne86
suzanne86
Auteur Actif

ok c'est une option. j'avais aussi pensé à max_wal_senders et wal_sender_timeout sur le primary mais ça joue pas sur les IOPS de la replica. ni wal_buffers.

Modifié le 23/05/2026 à 16:20
lopes-daniel
Membre Actif Secouriste
Avatar de lopes-daniel
lopes-daniel
Membre Actif Secouriste

non ça c'est plus pour la connectivité/buffering côté primary. ce qui compte c'est la capacité de ta replica à ingérer et appliquer les WAL. si ton pg_stat_replication montre un replay_lag conséquent, c'est presque toujours le storage. ou alors un gros long_running_query sur la replica qui bloque l'application des WAL.

Modifié le 23/05/2026 à 16:20
suzanne86
Auteur Actif
Avatar de suzanne86
suzanne86
Auteur Actif

pas de requêtes longues sur la replica, je l'utilise juste pour du backup et monitoring. le replay_lag est le problème justement. c'est la métrique qui pète.

Modifié le 23/05/2026 à 16:20
lopes-daniel
Membre Actif Secouriste
Avatar de lopes-daniel
lopes-daniel
Membre Actif Secouriste

bon, si c'est pas un souci de network entre primary et replica, ni de CPU sur replica, et pas de requêtes qui bloquent, c'est quasi sûr le storage. si t'es sur RDS, t'as des options pour augmenter les IOPS du volume.

08/08/2025 à 04:16
suzanne86
Auteur Actif
Avatar de suzanne86
suzanne86
Auteur Actif

on est sur EC2, pas RDS. je dois le faire manuellement. donc gp3 avec IOPS provisionnés. ça me semble la meilleure voie.

09/08/2025 à 02:26
lopes-daniel
Membre Actif Secouriste
Avatar de lopes-daniel
lopes-daniel
Membre Actif Secouriste

totalement. calcule bien tes besoins en IOPS. regarde ton wal_bytes généré sur le primary et le débit moyen sur la replica pour le replay. ça te donnera une idée.

Modifié le 23/05/2026 à 16:20
suzanne86
Auteur Actif
Avatar de suzanne86
suzanne86
Auteur Actif

j'ai déjà mesuré avec Prometheus, on est à ~100MB/s de WAL en pic. ça demande bcp d'IOPS en fait.

10/08/2025 à 18:56
lopes-daniel
Membre Actif Secouriste
Avatar de lopes-daniel
lopes-daniel
Membre Actif Secouriste

100MB/s c'est pas négligeable. surtout si tu as des petites écritures. ça va générer pas mal d'IOPS. le gp3 avec 3000 IOPS peut suffire mais si tu peux plus c'est mieux. la conversion de gp2 à gp3 est assez transparente.

11/08/2025 à 14:00
suzanne86
Auteur Actif
Avatar de suzanne86
suzanne86
Auteur Actif

ok je vais pusher pour passer la replica sur du gp3 avec 5000 IOPS provisionnés. ça devrait suffire pour le début. on verra après.

12/08/2025 à 10:26
lopes-daniel
Membre Actif Secouriste
Avatar de lopes-daniel
lopes-daniel
Membre Actif Secouriste

clair. c'est la solution la plus simple et la plus efficace pour ton cas. bonne chance !

13/08/2025 à 07:31
suzanne86
Auteur Actif
Avatar de suzanne86
suzanne86
Auteur Actif

merci bcp pour l'analyse. c'était bien le stockage. gp3 avec des IOPS provisionnés a réglé le problème de lag quasi instantanément. thx encore !

14/08/2025 à 02:15

Laisser une réponse

Vous devez être connecté pour poster un message !

Rejoindre la communauté

Recevoir les derniers articles gratuitement en créant un compte !

S'inscrire