LWLock: SyncRep
等待读取或更新同步复制状态信息。
PostgreSQL 等待事件档案
类别LWLock
事件
SyncRep
版本PG 13-18
证据3 个源码位置
官方描述译文
等待读取或更新同步复制状态信息。
| PG 13 | PG 14 | PG 15 | PG 16 | PG 17 | PG 18 |
|---|---|---|---|---|---|
| ✓ | ✓ | ✓ | ✓ | ✓ | ✓ |
触发机制
SyncRepLock 保护同步复制队列与共享 sender 状态。提交会话入队或检查等待位置,WAL sender 则更新已被同步备库确认的 LSN。
正常还是麻烦?
- 正常: 同步提交排队、WAL sender 发布确认位置时会有小规模突发。
- 需要调查: 持续的 SyncRep LWLock 竞争不同于等待备库确认:它表示队列/状态协调本身过热,通常发生在极高提交并发或 sender 抖动时。
诊断 SQL
正在等待 LWLock/SyncRep 的会话
当前 LWLock 等待分布
这些会话的锁与关系上下文
处置建议
- 区分 LWLock/SyncRep、IPC/SyncRep 与复制延迟等待。
- 检查同步备库健康度、sender 抖动与提交速率。
- 稳定复制并平滑提交突发;只有获得明确事故授权时才改变持久性策略。
源码证据
- PostgreSQL 18.6 · src/backend/replication/syncrep.c:192 —
SyncRep - PostgreSQL 18.6 · src/backend/storage/lmgr/lwlock.c:739 —
pgstat_report_wait_start - PostgreSQL 18.6 · src/backend/utils/activity/wait_event_names.txt:337 —
SyncRep
关联控制项与信号
- GUC: [guc:synchronous_standby_names] · [guc:synchronous_commit] · [guc:wal_sender_timeout]
- 指标: [metric:waiting_sessions] · [metric:wait_event_share] · [metric:replication_flush_lag] · [metric:commit_latency]
典型事故模式
备库反复抖动,大量同步提交者频繁进出等待队列,使队列协调本身表现为 LWLock/SyncRep。