#952·coroot

警报表 (`alert`,`alert_notification`) 无限增长 - 没有保留/清理

作者: alessandro-peyrachia-rnc创建于 2026年8月4日更新于 2026年8月4日

亲爱的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 + 许多更新 . . . . . . .