Postgres locks do not scale
3 days ago
- #incident-postmortem
- #aws-rds
- #postgres
- 数据库CPU系统时间飙升至100%,导致服务中断,没有明显原因如新部署或AWS事件。
- 尝试通过RDS重启数据库失败,持续一小时后,通过安全组阻止实例连接作为替代缓解措施。
- 连接排空后数据库恢复,但仍面临高用户CPU时间;通过识别并移除昂贵查询得以解决。
- 根本原因是锁竞争:由于高峰时段同步的机器人事件,15k个进程等待GIN索引扩展,触发死锁检查和日志爆炸。
- 关键教训包括监控等待队列、隔离GIN索引,并为突发负载设计,以防止同步操作导致系统故障。