From the article
VictoriaMetrics Observability Blog
Author
- Adam Yates
- Aditya Kulkarni
- Adrian Bridgwater
- Agustín Gallego
- Alex Woodie
- Alexander Marshalov
- Aliaksandr Valialkin
- Aman Agarwal
- Antony Savvas
- Artem Navoiev
- Bill Tanner
- Cer6erus
- Claudio Masolo
- David Marshall
- Denys Holius
- Derek Foster
- Diana Todea
- Dima Lazerka
- Dmytro Kozlov
- Emily Foster
- Fintech Herald
- Fred Navruzov
- Gary Flood
- Gonzalo García Labat
- Ivan Yatskevich
- Jaime Hampton
- Jan Sokol
- Jason Bloomberg
- Jason English
- Jean-Jerome Schmidt-Soisson
- Jesús Espino
- Joab Jackson
- John Seekins
- Jose Gomez-Selles
- Julien Menan
- Karan Virdi
- Laveesh Kocher
- Leigh McGowran
- Lindsay Clark
- Marc Sherwood
- Mark Baker
- Martijn Van Best
- Martin Veitch
- Mathias Palmersheim
- Michelle Sebek
- Nick Gibson
- Nikolay Khramchikhin
- Pablo Fernandez
- Phuong Le
- Rafal Szypulka
- Renato Losio
- Richard Speed
- Roman Khavronenko
- Vadim Alekseev
- Vadim Rutkovsky
- Yurii Kravets
- Zakhar Bessarab
- Zhu Jiekun
No matching authors found.
Category
- Benchmark
- Community
- Company News
- Customer Stories
- Developer Experience
- Distributed Tracing
- Events
- Go
- Go @ VictoriaMetrics
- High Cardinality
- Kubernetes
- Monitoring
- Observability
- Open Source Tech
- OpenTelemetry
- OTLP
- Performance
- PostgreSQL
- Product News
- Tech Talk
- Time Series Database
- VictoriaLogs
- VictoriaMetrics
- VictoriaTraces
No matching categories found.
Filter: Go
How Go’s Built-in Map Works with Swiss Tables
Go 1.24 replaced the built-in map’s bucket-based runtime with Swiss Tables. This article explains groups, control bytes, H1 and H2, probing, table growth, directories, deletion, load factor, and the experimental split-group layout.
Understanding Go's sync.Map from API to Hash Trie
Go’s sync.Map now uses a hash trie. This article builds the implementation from a normal map, then explains lock-free reads, fine-grained writer locking, collisions, retries, deletion, Clear, Range, and the trade-offs against map plus RWMutex.
Go 1.27 interactive tour
An interactive tour of what’s new in Go 1.27: every notable language, runtime, and standard library change, with short runnable examples you can edit and run in the browser.
Monotonic and Wall Clock Time in the Go time package
Operating systems expose a wall clock that can leap or slew with NTP and a monotonic clock that never runs backward. In Go, only time.Now (might) carries both readings, while values from time.Parse, time.Date, etc., are wall-clock-only—so naïve equality checks or time.Since on those can mislead when the system clock shifts.
Go synctest: Solving Flaky Tests
Traditional concurrent Go tests can be flaky due to non-deterministic scheduler behavior and timing. Go 1.24’s experimental synctest feature provides deterministic testing by running goroutines in isolated ‘bubbles’ where a synthetic clock only advances when all internally managed goroutines are durably blocked.
Graceful Shutdown in Go: Practical Patterns
Go applications can implement graceful shutdown by handling termination signals (SIGTERM, SIGINT) via os/signal or signal.NotifyContext. Shutdown must complete within a specified timeout (e.g., Kubernetes’ terminationGracePeriodSeconds)…
Prometheus Monitoring: Functions, Subqueries, Operators, and Modifiers
Prometheus querying involves multiple moving parts: functions, operators, modifiers, and subqueries. Small differences in how vectors are handled or rollups are applied can lead to completely different outcomes or errors. MetricsQL extends PromQL by handling these edge cases more gracefully with features like default rollups.
Container CPU Requests & Limits Explained with GOMAXPROCS Tuning
When running Go apps in Kubernetes, default CPU thread scheduling can conflict with cgroup CPU limits. The runtime sees all host CPUs, but the container may only be allowed a fraction of one. This often leads to early throttling. Properly configuring GOMAXPROCS avoids this waste and improves stability.
gRPC in Go: Streaming RPCs, Interceptors, and Metadata
Go’s gRPC implementation uses code generation to create type-safe client and server interfaces. Streaming RPCs allow sending multiple messages over a single connection, perfect for real-time updates and continuous data flows. Interceptors provide middleware-like functionality for authentication, logging, and error handling without modifying your core service logic.
Practical Protobuf - From Basic to Best Practices
Different Protobuf types dramatically impact your binary size—sint32 encoding needs just 1 byte for negative numbers while int32 wastes 10 bytes, repeated fields can balloon with large tag numbers, and poor type choices can triple your network traffic. Learn the exact patterns to optimize your Protobuf messages for production.