barrage v0.7.0Go
Is it your app, or the database underneath it?
HTTP, database, and Redis driven on one shared clock, bucketed onto one timeline. Every latency spike gets blamed on the layer that actually caused it.
install
latest release
curl -fsSL https://raw.githubusercontent.com/codetesla51/barrage/main/install.sh | bash
$ barrage run -c config.yaml
15s · bucket 1s · c10
RUNNER REQUESTS SUCCESS MEAN P95 P99
http 135 100.0% 927µs 2.5ms 4.4ms
db 67 100.0% 12.9ms 69.0ms 136.2ms
redis 269 100.0% 797µs 2.3ms 3.5ms
correlated spikes
TIME RUNNER HTTP_P99 STORAGE_P99 NOTE
20:52:22 db <100ms 136.2ms db-only
p99 latency by bucket
31×db p99 over http136.2ms ÷ 4.4ms
Postgres spiked to 136ms while the API never left 4ms. One latency curve would have shown a perfectly healthy service. The bottleneck is already there, it just hasn't backed up yet.
some features
- auto-ramp
- Doubles concurrency until a layer breaks, then fine-fills to pin the exact level, and names which runner caused the break.
- capacity finder
- Maps buckets to active users and reports where it starts straining, instead of handing you a number to interpret.
- compare & CI gate
- Diff two JSON runs, exit non-zero when a P99 crosses budget. A regression fails the pipeline before it ships.
- scenario mode
- Weighted user journeys with per-virtual-user token extraction and
{{var}}interpolation across steps. - masked spikes
- Storage spiked but HTTP held? Still flagged. That's the bottleneck you find before your users do.
- chaos mode
- Break dependencies on a schedule while the load runs — take the db proxy down, inject 500ms, reset peers — and see which layer actually degrades.