Documentation
¶
Overview ¶
Command prodsim drives an ISOLATED wr manager with a production-shaped workload made only of harmless commands, and samples the manager's health while it does. It is developer tooling for developers/wrdev.sh prodsim; it is not part of the shipped binary. See developers/README.md.
The workload is modelled on the clients the real production manager serves:
- ibackup server: every simulated minute re-submits the same N "put" jobs (mostly duplicates), limit group irods, OnFailure Remove.
- ibackup fofn watcher: polls incomplete jobs and last completion times by rep group PREFIX, removes buried jobs, and now and then submits a new fofn's batch of chunk jobs in a new rep group.
- wrstat multi: walk jobs that themselves `wr add` stat jobs into the walk's dep group, a combine job depending on it and a tidy job depending on the combine, all behind a datetime< limit group.
- wrstat-ui watch: hourly submits nothing (production's hourly "bad request" line) and sometimes a build/publish pair.
- portal: occasional huge two-phase bursts with ~KB-long commands behind one results_portal limit group.
- status page users: websocket clients that connect, take the seed, refresh, click a rep group, and occasionally search.
- wr status pollers, a Go client waiting through a subscription, and an operator changing limits, retrying and killing.
Every client call is timed and appended to calls.tsv; the sampler appends manager RSS/goroutines/heap/DB size to samples.tsv and saves pprof profiles. prodsim -report <dir> summarises a run.
prodsim refuses to start unless WR_CONFIG_DIR is set and wr's config for the deployment names the manager whose runtime directory is -rundir, so it cannot drive a real deployment.