How rakyll/hey works
hey is a command-line HTTP load generator. A user supplies a URL and load/request options; the command builds a configured request and Work, which runs concurrent workers against the target, records per-request timing and status results, and reports summary or CSV metrics. The documented feature branches include HTTP/2, proxying, request customization and rate/duration limits. Edges reflect the shown call sites; platform-specific clock implementations are represented together, and external target traffic is documented by the README.
Main entry points: requester.go Concurrent HTTP workers · report.go Metrics aggregation · hey.go Options and request setup · print.go Summary and CSV formatting
Components 10
Command setup
- Options and request setup
hey.go
Load execution
- Load coordinator
requester/requester.go - Concurrent HTTP workers
requester/requester.go - Request results
requester/requester.go - Timing clock
requester/now_other.go
Metrics and output
- Metrics aggregation
requester/report.go - Summary and CSV formatting
requester/print.go
Other components
- CLI user
- HTTP target
- Report destination
Connections 10
- CLI user → Options and request setup: supplies options
README.md - Options and request setup → Load coordinator: configures and runs
hey.go - Load coordinator → Concurrent HTTP workers: starts workers
requester/requester.go - Concurrent HTTP workers → HTTP target: sends HTTP requests
README.md - Concurrent HTTP workers → Request results: publishes measurements
requester/requester.go - Load coordinator → Metrics aggregation: starts reporter
requester/requester.go - Metrics aggregation → Request results: consumes results
requester/report.go - Metrics aggregation → Summary and CSV formatting: renders report
requester/report.go - Summary and CSV formatting → Report destination: writes formatted output
requester/print.go - Concurrent HTTP workers → Timing clock: measures timings
requester/requester.go