getsentry / getsentry/sentry-javascript
feat(node): Add garbage collection metrics to NodeRuntimeMetrics
- Lingua principale
- TypeScript
- Stelle
- 8.7k
- Fork
- 1.8k
- Merge medio
- 1g 17h
- PR unite (30g)
- 523
Descrizione
### Description
`NodeRuntimeMetrics` already collects heap, RSS, event loop delay, and ELU, but has no visibility into GC — often the direct cause of event-loop stalls and tail latency.
Add GC pause metrics collected via a `perf_hooks` `PerformanceObserver` on `gc` entries, aggregated over the existing collection interval:
- `gc.pause.duration` (total/avg pause time)
- `gc.pause.max` or `gc.pause.p95` (worst pause in the window)
- `gc.count` broken down by kind (minor/scavenge vs major/mark-sweep)
Opt-in by default, consistent with the other advanced metrics in the `collect` option. Aligns with the OTel `process.runtime.v8js.gc.*` conventions.
Guida per i contributori
Apri la guida per i contributori
Direzione di ricerca
Inizia dall'implementazione di NodeRuntimeMetrics e dal relativo intervallo di raccolta esistente e dalle opzioni avanzate di raccolta. Leggi la documentazione di Node.js perf_hooks PerformanceObserver relativa alle voci gc, quindi traccia come vengono aggregate le metriche attuali di heap, RSS, ritardo dell'event loop ed ELU. Il lavoro è completato quando vengono riportati i totali delle pause GC e una metrica aggregata della pausa peggiore, con i conteggi separati in base al tipo di raccolta, minor e major.
Scritto dal modello di indicizzazione a partire dal testo della issue.
Valutazione
- Stack tecnologico
- node.js, typescript
- Ambito
- observability
- Tipo di issue
- Funzionalità
- Difficoltà
- 4/5
- Tempo stimato
- 3-5 giorni
- Stato di attività
- Tranquilla
- Chiarezza
- Abbastanza chiara
- Idoneità per principianti
- 55/100