警报表 (`alert`,`alert_notification`) 无限增长 - 没有保留/清理
亲爱的Coroot团队, 我碰巧遇到Coroot的情况, 我想得到你的反馈, 低于我和一位AI助理撰写的详细报告。 问题的核心在于 Coroot 的 Postgres 提醒表会不受约束地增长: 解决了提醒并发送 通知从未被删除。 没有文件记录的保存设置 他们和没有内在的清理。 在我们生产时,这些是两个 数据库中的最大对象。
两人都积累了部署以来的历史 没有任何东西能消除旧的 作行相会. 我们想知道 打算的行为 以及是否应该 共同根制 保留自己, 在我们加入我们自己的出带清理之前。
显然,现在不是一个真正的问题,但从长远来看,应该监测这种行为。
□ 环境
- 共同根:1.24.3
- 后端商店:PostgreSQL 18.3 (CloudNativePG),专用 " root " 数据库
- 部署:Kubernetes
- 表:
公共警报 ' 、公共警报-通知 ' (另见关于`事件-通知'的说明)
□ 证据/度量衡(截至2026-08-04,~77天数据:2026-05-19 ~ 2026-08-04)
`通知'
** 量 * * 值 * * * |-|-|-. QQ 总尺寸 QQ 832 MB( 所有堆积; 0 TOAST, **0 指数 **) QQ
- 698 602行 * * ++ 增长 ~ 9000行/日,~10-12 MB/日,~325 MB/月 ~+.
详情 ' 一栏 * ** 686 MB——表**的82%(~1 KB JSON每行) | Dead ~ 58 (autovacuum stay up;** 不** bloat) |.n tup upd ' 一生 ~ 1 000 000 |
`警报 '
** 量 * * 值 * * * |-|-|-. 总规模为 524 MB(452 MB 重+72 MB 指数)
" 详细情况 " 一栏 * ** 332 MB**(~1 KB JSON 每行) * * * · 死亡Tuples · · · 38,595 (~9.6%)**
- `n tup upd ' 一生 * * * * 6,467,180 (~16个更新/row)** * *
- 自动真空 * * * * 默认(无每表调制) * * * *
因此,在这两种情况下,规模都是 * 真实的,保留的数据 * (加,用于`警报 ' ,有意义的 更新驱动的bloat)——增长是结构性的,而不是真空配置错误.
□ 根源
两张桌子都没有铺好 重新进行搜索后发现**没有“从警报中删除”
没有从警告通知中删除'(唯一警告DELETE是) 删除提醒-规则',以便用户主动删除规则'。
通知通知 ' (db/aert Notification.go')
生命周期是INSERT + UPDATE + SELECT,无 DELETE:
- " 通知通知 " -- -- 每一通知一行,`同意'=0 " 。
- " 最新通知 " -- -- `UPDate.SET发送到外部的钥匙 project id, sert id, timetamp, 目的地"(为什么一生更新~1M > 行).
- 读取: " 获得通知 " (
Where Timerstamp $ 出自和发出=0', 经常民意调查); " 获取先前的提醒通知 " / " .ByAlertIds " (Where') 项目 id/aert id=.')。 - ** 无指数** -- --
移民 ' DDL是一个赤裸裸的CREATE Table ' ,因此民意测验和 每个表上加宽下方,
警报 ' (db/aert.go')
生命周期是INSERT + 许多更新 . . . . . . .
内容来源: coroot/coroot