16 commentaires
ouais classique. c quoi ton setup ? sync/async ? quelle version pg ? type de storage sur la replica ?
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.
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.
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.
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.
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.
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.
clair. c'est la solution la plus simple et la plus efficace pour ton cas. bonne chance !
Laisser une réponse
Vous devez être connecté pour poster un message !
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 ?