We can't find the internet
Attempting to reconnect
Something went wrong!
Hang in there while we get back on track
The Key to Go Efficiency is Just a Few Go Runtime Metrics Away! - Bartłomiej Płotka & Arianna Vespri
Learn how Go runtime metrics provide essential insights into app behavior and performance. Discover key metrics for memory, GC, and goroutines to optimize efficiency and reliability.
- 
    
Go runtime metrics provide crucial insights into application behavior, memory usage, and garbage collection that can’t be obtained through regular profiling alone
 - 
    
Key default metrics to monitor:
- 
GoGC- controls garbage collection frequency and memory overhead - 
GoMaxProcs- number of OS threads for Go routines - 
GoMemLimit- maximum memory limit for the runtime - 
GoMemStubHeapObjects- count of allocated heap objects - 
GoRoutines- number of active goroutines 
 - 
 - 
    
Setting appropriate
GoMemLimithelps prevent OOM kills in containerized environments and allows better memory management - 
    
Runtime metrics help detect:
- Memory leaks
 - Goroutine leaks
 - GC pressure
 - Stack overflow issues
 - Scheduling latency problems
 
 - 
    
The Prometheus client Go library provides standardized collection of runtime metrics with filtering options to select specific metrics
 - 
    
Renaming metrics should be avoided as it breaks existing alerts, dashboards and automation
 - 
    
Both developers and SREs should monitor runtime metrics - it’s a shared responsibility for application reliability
 - 
    
Runtime metrics are essential for:
- Capacity planning
 - Resource optimization
 - Cost reduction
 - Performance troubleshooting
 - Production incident investigation
 
 - 
    
Default runtime metrics provide a good balance between observability and overhead - collect additional metrics selectively based on needs
 - 
    
Consider workload characteristics (CPU vs memory bound, concurrency level) when tuning runtime parameters like GC frequency