Testing storage changes
In order to keeps PuppetDB’s storage code nice and fast, we have developed some tooling to help test its performance.
The load testing tool
The load testing (aka benchmark) tool is useful for generating sample data and for loading the storage engine. See the docs for information on its use.
Fact storage benchmark
If you’re making changes to fact storage specifically, there is a special-purpose fact storage benchmark tool to check its performance in different scenarios.
Run the tool with
lein run fact-storage-benchmark localhost. Pass it the
hostname of a machine where PuppetDB is running, without ssl, on port 8080. If
you’re testing a significant amount of load, you should run the benchmark on a
different machine from puppetdb.
This will automatically run test with different fact profiles and report the
time it took to store all facts, in milliseconds. For focused testing or
optimization purposes, you can select just one to run:
fact-storage-benchmark localhost medium.
The data generated by this tool is intentionally deterministic, so that results can be compared between subsequents runs. But it does not clear the database; if you want to evaluate performance against an empty database, you should clear it yourself first.
Adding more profiles
Fact storage benchmark profiles are configured in
test-configs var in
src/puppetlabs/puppetdb/cli/fact_storage_benchmark.clj. The profiles are run
in order if none is specified at the command line.