Why
#1 asks for a staging soak showing bounded memory, file descriptors, and process
counts, and that is the last line of its definition of done with no evidence
behind it. A short load test shows throughput; only a long mixed run shows a
leak — a goroutine per connection that is never released, a git child that is
not reaped, a cache that grows with every page.
Scope
- Run the harness against a staging instance for a documented duration, mixing clone, page reads, search, downloads, sign-in, and pushes.
- Sample memory, file descriptors, goroutines, and child processes for the whole run, and compare the end of the run with the start after the load stops and a GC has run.
- Check that per-connection and per-request counts return to their baseline,
and that the number of
gitandsshchildren tracks the configured limits rather than the number of connections served. - Record the numbers, the shape of the curve, and the configuration they were
taken under, both on the issue and in
docs/operations.md, as the section that says what those limits were measured at. - File an issue for anything that grows.
Acceptance
- A recorded run with a stated duration, configuration, and load mix.
- Memory, file descriptors, goroutines, and process counts at start, peak, and settle, with any growth explained or fixed.
docs/operations.mdpoints at the measurement from the limits it justifies, and #1’s soak line can be ticked with a link.
Part of #14. Depends on the load-test harness issue.