[watchdog] Persist 2Gi memory limit in deployment configuration to mitigate GC OOM
Valutazione
- Difficoltà
- 1/5
- Tempo stimato
- Meno di un'ora
- Idoneità per principianti
- 84/100
- Tipo di issue
- Bug
- Chiarezza
- Specificata chiaramente
- Stato di attività
- Attiva
- Stack tecnologico
- kubernetes, yaml
- Ambito
- devops
Direzione di ricerca
Leggi src/watchdog/deploy/watchdog.yaml.template e individua resources.limits.memory nella condizione qos-switch esistente. Cambia il valore della condizione abilitata da "1Gi" a "2Gi", mantenendo la condizione e le altre impostazioni. Esegui il rendering del template con la condizione abilitata e disabilitata; conferma che l'output con la condizione abilitata usa 2Gi e che il comportamento con la condizione disabilitata rimane invariato.
Scritto dal modello di indicizzazione a partire dal testo della issue.
Descrizione
Summary
Persist the watchdog memory-limit increase from 1Gi to 2Gi in the deployment template. A temporary live mitigation used the higher limit, but a subsequent deployment from the current template would restore 1Gi and risk recurring OOM kills.
Configuration to update
- File:
src/watchdog/deploy/watchdog.yaml.template - Under the existing
qos-switchcondition, changeresources.limits.memoryfrom"1Gi"to"2Gi". - Preserve the existing conditional behavior and unrelated deployment settings.
Observed behavior
- With the
1Gilimit, watchdog experienced repeated OOM kills. - One failure occurred shortly after scheduled garbage collection started. Normal metric collection used substantially less memory.
- Metadata-only checks found a large backlog of Secrets and PriorityClasses relative to the small number of Frameworks.
- Garbage collection currently lists full objects without pagination. Bulk-list memory pressure is the leading explanation; the exact failing API request was not instrumented.
Temporary mitigation and observation
- After a temporary increase to
2Gi, the observed process remained Ready without additional restarts or cgroup OOM events during a multi-hour observation window. - Observed container memory remained above the original limit and decreased over the observation window.
- The process RSS high-water mark also exceeded the original
1Gilimit. This is process RSS, not a measured container-memory peak. - Garbage collection progressed through orphan PriorityClasses into orphan Secrets, but had not completed the full pass. This observation supports mitigation, not a claim of complete or repeated successful GC cycles.
Acceptance criteria
- Deployment template renders a
2Giwatchdog memory limit when the existing QoS condition is enabled. - Behavior when that condition is disabled remains unchanged.
- A subsequent deployment no longer reverts watchdog to
1Gi. - After deployment, verify the effective container limit and observe garbage collection for OOM/restart recurrence.
Follow-up (not required for this configuration change)
Consider paginated/metadata-only listing and bounded processing to reduce garbage-collection memory usage. Raising the limit is a mitigation, not a root-cause code fix.
No repository code or deployment-template changes have been made as part of creating this issue.
Deployment safety
The watchdog uses host networking and a fixed listener port. A default surge-based rolling update can overlap old and new instances on the same node: the existing instance remains available while the replacement repeatedly exits and the rollout stalls. During a controlled memory-limit update, temporarily allowing the old instance to stop before starting the replacement resolved this overlap; the previous rollout policy was restored afterward.
- When implementing/deploying the memory-limit change, explicitly account for the single-node fixed-port constraint and verify that the replacement becomes Ready without a stalled rollout.
- Treat online resource changes as temporary mitigation; the deployment template still needs the tracked persistent change.
- Lingua principale
- Python
- Stelle
- 11
- Fork
- 5
- Merge medio
- 5h 46m
- PR unite (30g)
- 4
Preparare l'ambiente
Questo progetto non fornisce container di sviluppo, Dockerfile né guida per i contributori, quindi l'ambiente è a tuo carico: parti dal suo README e consulta la nostra guida al primo contributo per i passaggi generali.
Come iniziare
- Leggi tutta la issue e poi la guida ai contributi del progetto.
- Commenta sulla issue per dire che te ne occupi tu — evita che due persone facciano lo stesso lavoro.
- Fai un fork del repository e lavora su un branch.
- Apri una pull request che faccia riferimento al numero della issue.
Altre issue di microsoft/ltp-platform
-
[job-exporter] Avoid scraping inactive GPU endpoints on non-GPU nodesForse già presa Una pull request collegata a questa issue è aperta o già unita. Aperta
Difficoltà 5/5 Più di una settimana Idoneità per principianti 35/100
microsoft/ltp-platform#208 · 1 commento ·
-
[prometheus] Report actual TSDB readiness during startupForse già presa Una pull request collegata a questa issue è aperta o già unita. Aperta
Difficoltà 4/5 3-5 giorni Idoneità per principianti 48/100
microsoft/ltp-platform#207 · 1 commento ·
-
cluster-local-storage: avoid controller-local rsync port conflicts across VC instancesForse già presa Una pull request collegata a questa issue è aperta o già unita. Aperta
Difficoltà 4/5 3-5 giorni Idoneità per principianti 45/100
microsoft/ltp-platform#206 · 1 commento ·
-
[job-exporter] Duplicate service metrics from utilization-reporter container named prometheusForse già presa Una pull request collegata a questa issue è aperta o già unita. Aperta
Difficoltà 4/5 3-5 giorni Idoneità per principianti 48/100
microsoft/ltp-platform#204 · 1 commento ·
-
[database-controller] Handle ApiException 404 in poller deletion compensationForse già presa Una pull request collegata a questa issue è aperta o già unita. Aperta
Difficoltà 3/5 1-2 giorni Idoneità per principianti 77/100
microsoft/ltp-platform#203 · 1 commento ·
Tutte le issue di microsoft/ltp-platform
Issue simili
-
enhancement
Difficoltà 2/5 1-3 ore Idoneità per principianti 72/100
fossasia/visdom-dev#77 ·
I maintainer di solito rispondono entro 4 giorni
-
Difficoltà 2/5 1-3 ore Idoneità per principianti 82/100
aws-cloudformation/cfn-lint#4890 ·
I maintainer di solito rispondono entro 2 giorni
-
Difficoltà 2/5 1-3 ore Idoneità per principianti 82/100
volcengine/OpenViking#6521 ·
I maintainer di solito rispondono entro 1 giorno
-
Difficoltà 2/5 1-3 ore Idoneità per principianti 84/100
-
bug
Difficoltà 2/5 1-3 ore Idoneità per principianti 77/100
AstrBotDevs/AstrBot#10720 ·
I maintainer di solito rispondono entro 1 giorno