This includes scripts to run performance tests against CouchDB to evaluate changes feed filtering performance, which directly relates to the filtering part of replication performance.
We are testing three different filtering options:
- built-in
doc_ids
filter with 20k ids Mango selector using(disabled bc of poor performance)$in
operator for_id
against 20k ids- Mango selector using
$gt
for_id
- Mango selector using
$regex
for_id
This project includes a few files:
- a Makefile which combines the tasks
- a setup script to configure the couch
- the actual script: run-perf-test.sh
- a Gnuplot script: plot.gpi
Running the tests is a three part progress:
- start and configure the couch
- run the perf script, this generates data.csv
- plot the data, outputs graph.png
This project depends on
- docker
- curl
- jq
- gnuplot
- some standard unix tools: cat, tr, fold, head, xargs and time
Make sure thats all available. This project has been developed on Fedora 32 with dnf-installed requirements.
We provide a Makefile for convenience. You can also run the scripts and commands directly. Look inside the Makefile for usage information.
In order to run the script you first start a couch:
make start
and the provision it via
make setup
Now you have a running, configured couch you can start the process:
make data.csv
You might want to clean up the file if it already exists bc Make will not overwrite it otherwise.
We use Gnuplot for plotting the data. This is done via that little plot.gpi script:
make graph.png
I haven't gitignored the artefacts, so I can include it here for convenience:
This is the data.csv, and this the resulting graph:
Made with passion for the couch © 2020 by Johannes