Runbook: GCBloatHigh
Source of truth:
tools/observability/alerts/angarabase_alerts.yaml. Backed by: RM-0.6.3.8 S7.
Что означает
angarabase_gc_tuning_bloat_ratio_percent > 50 — на одну “живую” версию приходится
больше одной “мёртвой” (которую AngaraGC не может удалить). Чаще всего это симптом
блокирующей долгой транзакции (см. LongTransaction).
Severity
warning. При 80+ % bloat hit ratio buffer pool падает.
Initial response
- Grafana Overview v2 → row “GC / MVCC”.
- Проверить
LongTransactionалерт — обычно root cause там. - Проверить
gc_tuning_state— auto-tuning сам реагирует или нет.
Diagnostics
curl -sf http://127.0.0.1:9898/metrics | rg gc_
curl -sf http://127.0.0.1:9898/metrics | rg mvcc_
# Top tables by bloat
psql -c "SELECT schemaname, relname, n_dead_tup, n_live_tup,
round(100.0 * n_dead_tup / NULLIF(n_live_tup,0), 2) AS bloat_pct
FROM pg_stat_user_tables
WHERE n_dead_tup > 1000
ORDER BY bloat_pct DESC NULLS LAST LIMIT 10;"
Mitigation
- Закрыть длинные транзакции — см. LongTransaction.
- Запустить vacuum на горячих таблицах.
- Настроить GC — увеличить агрессивность auto-tuning (см. mvcc-gc.md §Knobs).
- Полный rebuild (downtime) если bloat > 70 % и vacuum не помогает.
Escalation
Если bloat > 70 % и не падает после vacuum + закрытия long txns — собрать diagnostics и эскалировать (потенциально нужен сервисный downtime).