После нескольких встреч (на экземпляре RDS Postgres):
ERROR: canceling statement due to conflict with recovery
Detail: User query might have needed to see row versions that must be removed
Я запустил (в горячем резерве):
SELECT *
FROM pg_stat_database_conflicts;
И обнаружил, что все конфликты связаны с confl_snapshot
Что объясняется в документации как:
confl_snapshot: количество запросов в этой базе данных, которые были отменены из-за к старым снимкам
Что может быть причиной этого конфликта (старый снимок)?
Если это поможет, вот некоторые из соответствующих настроек (запустив SHOW ALL ;
на в режиме ожидания):
hot_standby: on
hot_standby_feedback: off
max_standby_archive_delay: 30s
max_standby_streaming_delay: 1h
name,setting
old_snapshot_threshold: -1
vacuum_defer_cleanup_age: 0
vacuum_freeze_min_age: 50000000
vacuum_freeze_table_age: 150000000
vacuum_multixact_freeze_min_age: 5000000
vacuum_multixact_freeze_table_age: 150000000
wal_level: replica
wal_receiver_status_interval: 10s
wal_receiver_timeout: 30s
wal_retrieve_retry_interval: 5s
wal_segment_size: 16MB
wal_sender_timeout: 30s
wal_writer_delay: 200ms