New workspace crate: an open-loop, coordinated-omission-corrected HTTP load generator + capacity ramp for the standalone and multi-process cluster surfaces, modeling a thepeach feed session (feed reads + view/like/skip signals + search, signal-dominated per their user-graph spec). Throttleable target rate, ramp presets (smoke/quick/peach-100k/max) or rps:secs specs, peach/reads/writes/custom mixes, leader vs sharded write paths, per-op p50/p90/p99/p999/max latency, a backpressure-aware status breakdown (429/408/503/4xx/5xx/transport), and a verdict translated to supported DAU. Runs in-cluster as a k8s Job (tidal-stress/k8s/). Open-loop scheduler (scheduler.rs) fires at a fixed arrival rate and measures latency from each request's intended send time, so a server stall inflates the percentiles a closed-loop test hides; it shed-and-counts rather than blocking when the in-flight cap is reached. Pure-Rust (tokio + reqwest/rustls), no engine deps. Findings on the live 3-region k3s cluster (docs/ops/stress-test-thepeach.md): reads scale to thousands/s at <15ms p99; the replicated /signals path saturates at ~90 signals/s (single-leader funnel + 2-worker write pool + synchronous gRPC ship); the sharded path sustains 3,669 signals/s at 0 errors and ~27% cluster CPU (≈ the 100k-DAU peak, knee not reached). Overload degrades gracefully (429; 0 pod restarts). thepeach's planned in-process embedding sidesteps all of it (write ≈82ns).
27 lines
638 B
Plaintext
27 lines
638 B
Plaintext
# Allowlist .dockerignore — ignore everything, then re-include only the
|
|
# workspace sources cargo needs to build `-p tidal-server` from the repo root.
|
|
# The `docker/*` Dockerfiles `COPY . .` against this repository root.
|
|
*
|
|
|
|
# Workspace manifests + lockfile (cargo needs every member manifest present to
|
|
# resolve the workspace graph, even when building a single member).
|
|
!Cargo.toml
|
|
!Cargo.lock
|
|
|
|
# Member crates
|
|
!tidal
|
|
!tidal-net
|
|
!tidal-server
|
|
!tidalctl
|
|
!tidal-stress
|
|
!applications
|
|
|
|
# Re-exclude heavy / generated / secret paths nested inside the allowed dirs.
|
|
**/target
|
|
**/node_modules
|
|
**/.next
|
|
**/*.tsbuildinfo
|
|
**/.env
|
|
**/.env.*
|
|
.git
|