Skip to content

nickva/k6-couch

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

2 Commits
 
 
 
 

Repository files navigation

CouchDB K6 Bench

Benchmark doc put, get, bulk_docs and other operations with K6

  • Install k6 (version 1.7+) from https://grafana.com/docs/k6/latest/set-up/install-k6/

  • Start or point to a cluster

  • Run benchmark with k6 run ./k6_couchdb.js

  • Configuration options can be passed in as env variables by prefixing them with BENCH_. The list of options and defaults are in the js file:

const URL            = env_str('URL', 'http://localhost:15984');
const USER           = env_str('USER', 'adm');
const PASS           = env_str('PASS', 'pass');
const DB             = env_str('DB', 'bench_db');
const Q              = env_str('Q', '4');
const DOCS           = env_num('DOCS', 100000);
const DOC_SIZE       = env_num('DOC_SIZE', 256);
const DURATION       = env_str('DURATION', '5m');
// Rates for individual scenarios
const WELCOME_RATE   = env_num('WELCOME_RATE', 1000);
const GET_RATE       = env_num('GET_RATE', 1000);
const INSERT_RATE    = env_num('INSERT_RATE', 100);
const UPDATE_RATE    = env_num('UPDATE_RATE', 100);
const BULK_DOCS_RATE = env_num('BULK_DOCS_RATE', 2);
const BULK_GET_RATE  = env_num('BULK_GET_RATE', 2);
const ALL_DOCS_RATE  = env_num('ALL_DOCS_RATE', 1);
const CHANGES_RATE   = env_num('CHANGES_RATE', 1);
const TAG            = env_str('TAG', '');
// Default set of scenarios
const SCENARIOS      = env_str('SCENARIOS', 'doc_get,doc_insert');
const XHEADER        = env_str('XHEADER', '');
const BATCH_SIZE     = env_num('BATCH_SIZE', 500);

A few examples:

  • Run all secenarios for 30sec with given user/pass:
$ BENCH_DURATION=30s BENCH_USER=adm BENCH_PASS=pass k6 run k6_couchdb.js
  • Run just doc_update
$ BENCH_SCENARIOS=doc_update k6 run k6_couchdb.js
  • Run just doc_get at 10 rps, starting with 25k docs of 64KB each
$ BENCH_DOCS=25000 BENCH_SCENARIOS=doc_get BENCH_GET_RATE=10 k6 run k6_couchdb.js
  • Run doc_get scenario with a particular url and an extra header
$ BENCH_URL=https://foo.example.com BENCH_SCENARIOS=doc_get BENCH_XHEADER=x-foo:bar ./k6 run k6_couchdb.js

About

CouchDB K6 Benchmark

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors