checkpointer 无限重试导致的一次生产停摆
Warda Bibi 复盘了一次事故:checkpointer 卡了几个小时。原因是 fsync 请求队列没有上限,在大 shared_buffers 和重写入负载下越涨越大,超过 1 GB 的内部分配上限后申请内存失败;checkpointer 捕获错误后不断重试,而两次尝试之间队列毫无变化,于是陷入死循环。13 到 16.9 都受影响,16.10 给队列加了一千万条的硬上限。临时办法是调小 shared_buffers。
保留原始来源与发布日期的新闻、博客和活动。
Warda Bibi 复盘了一次事故:checkpointer 卡了几个小时。原因是 fsync 请求队列没有上限,在大 shared_buffers 和重写入负载下越涨越大,超过 1 GB 的内部分配上限后申请内存失败;checkpointer 捕获错误后不断重试,而两次尝试之间队列毫无变化,于是陷入死循环。13 到 16.9 都受影响,16.10 给队列加了一千万条的硬上限。临时办法是调小 shared_buffers。
Craig Kerstiens 梳理了 PostgreSQL 19 Beta:REPACK CONCURRENTLY 把不加排他锁的表重组做进内核,不必再依赖 pg_repack;ALTER TABLE 新增分区的合并与拆分;逻辑复制补上序列值同步与 ALL SEQUENCES 发布;autovacuum 支持并行 worker,并新增 pg_stat_autovacuum_scores 视图;SQL/PGQ 让关系数据直接跑图查询。
高噪声仓库可以启用,但要配套 discussion、安全公告或模板化渠道,别切断有效的缺陷报告。
回移到 18 和 17 需要微调测试;RangeVar 不该带 relpersistence 的重构问题仍待处理。
v02 补丁系列 245 个回归测试全过,竞态对时序高度敏感,测试者未能复现原始问题。
v8 补丁统一改用 try_table_open,评审建议把回归测试从 TAP 改成隔离测试。