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.
Go @ VictoriaMetrics
- 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 @ VictoriaMetrics
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.
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)…
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.
How Protobuf Works—The Art of Data Encoding
Protocol Buffers is faster and smaller than JSON, but the interesting part is understanding why. This article breaks down the encoding techniques that make Protobuf efficient, backed by benchmark results and practical examples
How HTTP/2 Works and How to Enable It in Go
HTTP/2 solves head-of-line blocking at the application layer by multiplexing multiple streams over a single TCP connection. While HTTP/1.1 requires requests to be processed sequentially, HTTP/2 allows parallel processing through independent streams, each with its own ID. The Go standard library supports HTTP/2 out of the box when using HTTPS, and with some configuration, it can work over plain HTTP too
From net/rpc to gRPC in Go Applications
The net/rpc package in Go demonstrates basic RPC concepts by establishing TCP connections between clients and servers, using sequence numbers to match requests with responses, and supporting both gob (Go-specific) and JSON codecs for data serialization. While net/rpc is simpler and limited to Go services by default, gRPC offers advanced features like HTTP/2 streaming, cross-language support, and better performance