Skip to content
Latchkey

fortio server / report: Serve and Visualize

fortio server starts a web UI plus echo/debug endpoints on port 8080, and fortio report serves saved result JSON files as browsable latency graphs.

Beyond generating load, Fortio can be the target (a built-in echo server) and the report viewer. In CI you can point a load run at fortio server for a control baseline, and use fortio report to publish saved histograms.

What it does

fortio server runs an HTTP server exposing a UI (/fortio/), an echo endpoint, and a debug endpoint, useful as a stable target for calibrating a load run. fortio report starts a lightweight server that loads previously saved -json result files and renders their histograms as interactive charts.

Common usage

Terminal
# run Fortio's own echo server as a baseline target
fortio server -http-port 8080 &

# generate load, saving JSON, then view the histogram
fortio load -qps 0 -t 20s -json out.json http://localhost:8080/echo
fortio report -http-port 8081

Options

FlagWhat it does
serverRun the UI + echo/debug server
-http-port <p>Port for the server or report UI
-ui-path <path>URL path for the UI (default /fortio/)
reportServe saved JSON result files as graphs
-data-dir <dir>Directory report reads result JSON from

In CI

Use fortio server as a known-good echo target to prove your load tooling and thresholds are wired correctly before pointing them at the real service. Save load results with -json into a directory and archive them; a later job or a developer can run fortio report -data-dir ./results to inspect them. Start the server in the background and wait for the port before loading.

Common errors in CI

listen tcp :8080: bind: address already in use means another process (or a prior step) holds the port; pick a different -http-port. If fortio report shows no data, the -data-dir has no matching *.json result files or they were written by an incompatible version. Backgrounding fortio server without waiting for readiness makes the first load requests fail with connection refused.

Related guides

Run this faster and cheaper on Latchkey managed runners. Start free →