Skip to content

fix(lesson 5.6): Incidente 6 needed 2 bumps — 5min watch was falsely stable - #24

Merged
totobusnello merged 1 commit into
mainfrom
fix/lesson-v5.6-incidente-6-bump2
May 7, 2026
Merged

fix(lesson 5.6): Incidente 6 needed 2 bumps — 5min watch was falsely stable#24
totobusnello merged 1 commit into
mainfrom
fix/lesson-v5.6-incidente-6-bump2

Conversation

@totobusnello

Copy link
Copy Markdown
Owner

Summary

PR #23 declared the memory bump 1500M→1800M resolved Incidente 6 based on 5min watch. It wasn't. Recurrence T+1h45min: same canary alert disparou novamente. Bump 2 (1800M→2400M) é o que realmente resolveu.

Root cause da false-positive

Working set real cresce com uso. Daily queries warm caches (chunks/embeddings/FTS5). 5min snapshot pós-restart era falsamente estável — restart cleared caches, queries hadn't run yet.

Métricas comparativas

Métrica Pré-bump 1 Pós-bump 1 (5min) Recorreu (T+1h) Pós-bump 2 (10min)
Memory current 1.57G 1.5G 1.8G (100% limit) 1.7G constante
memory.events.high 20432 4554 (frozen) 21793 (subindo) 0 (zero)
Latency /api/search 6s+ pico 9s 1.0-1.2s 3s+ seq, 13s concurrent 0.9-1.5s consistente
Canary status FAIL(2) 0 disparos (5min) FAIL(1)+FAIL(2) 2 OKs (debounce reset)

Lição refinada (mais valiosa que a V3)

Working set steady-state revelado em horas, não em 5min snapshot. Padrão correto:

  1. Run 24h+ sob load real (não 5min, não 1h — caches storage/embedding levam horas pra estabilizar)
  2. MemoryHigh = peak * 1.4 (40% headroom, não 20%)
  3. MemoryMax = MemoryHigh * 1.25
  4. Re-monitor 24h pós-bump

Anti-padrão: declarar resolvido após 5min observação — restart libera cache, queries não rodaram, snapshot falsamente estável.

Test plan

  • Sanitization check: zero patterns sensíveis
  • HANDOFF + INCIDENTS local sincronizados
  • Toto review

🤖 Generated with Claude Code

…e revealed only in hours of real load

Lesson V3 (PR #23) declared MemoryHigh bump 1500M→1800M resolved the issue
based on 5min watch (memory 1.5G stable, high events frozen). It wasn't.

Recurrence T+1h45min: canary FAIL(2) again at 18:17. Memory had crept back
to 100% MemoryHigh (1.8G/1.8G) over 43min uptime. high_events grew 4554 →
21793 (+17K). Latency degraded 3s+ sequential, 8-13s concurrent.

Cause: working set real grows with usage. Daily queries warm caches
(chunks/embeddings/FTS5). 5min snapshot post-restart was falsely stable
(restart cleared caches, queries hadn't run yet).

Bump 2: MemoryHigh 1800M→2400M, MemoryMax 2500M→3000M. Result after 10min
watch: memory 1.7G constant (real working set revealed), high events ZERO,
latency 0.9-1.5s consistent, canary 2 consecutive OKs.

Lesson refined:
- Working set steady-state revealed in HOURS, not 5min
- Run 24h+ under real load before sizing
- MemoryHigh = peak * 1.4 (40% headroom, not 20%)
- MemoryMax = MemoryHigh * 1.25
- Re-monitor 24h post-bump

Anti-pattern: declaring resolved after 5min observation post-restart.
Restart clears cache, queries haven't run yet, snapshot is falsely stable.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
@totobusnello
totobusnello merged commit 1f8af7f into main May 7, 2026
4 checks passed
@totobusnello
totobusnello deleted the fix/lesson-v5.6-incidente-6-bump2 branch May 7, 2026 21:48
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant