| --- |
| layout: default |
| |
| # Top navigation |
| top-nav-group: admin-guide |
| top-nav-pos: 2 |
| top-nav-title: Load Test |
| |
| # Sub-level navigation |
| sub-nav-group: admin-guide |
| sub-nav-parent: admin-guide |
| sub-nav-id: performance |
| sub-nav-pos: 2 |
| sub-nav-title: Load Test |
| --- |
| |
| .. contents:: Load Test |
| |
| Load Test |
| ========= |
| |
| Overview |
| -------- |
| |
| Under distributedlog-benchmark you will find a set of applications intended for generating large amounts of load in a distributedlog cluster. These applications are suitable for load testing, performance testing, benchmarking, or even simply smoke testing a distributedlog cluster. |
| |
| The dbench script can run in several modes: |
| |
| 1. bkwrite - Benchmark the distributedlog write path using the core library |
| |
| 2. write - Benchmark the distributedlog write path, via write proxy, using the thin client |
| |
| 3. read - Benchmark the distributedlog read path using the core library |
| |
| |
| Running Dbench |
| -------------- |
| |
| The distributedlog-benchmark binary dbench is intended to be run simultaneously from many machines with identical settings. Together, all instances of dbench comprise a benchmark job. How you launch a benchmark job will depend on your operating environment. We recommend using a cluster scheduler like aurora or kubernetes to simplify the process, but tools like capistrano can also simplify this process greatly. |
| |
| The benchmark script can be found at |
| |
| :: |
| |
| distributedlog-benchmark/bin/dbench |
| |
| Arguments may be passed to this script via environment variables. The available arguments depend on the execution mode. For an up to date list, check the script itself. |
| |
| |
| Write to Proxy with Thin Client |
| ------------------------------- |
| |
| The proxy write test (mode = `write`) can be used to send writes to a proxy cluster to be written to a set of streams. |
| |
| For example to use the proxy write test to generate 10000 requests per second across 10 streams using 50 machines, run the following command on each machine. |
| |
| :: |
| |
| STREAM_NAME_PREFIX=loadtest_ |
| BENCHMARK_DURATION=60 # minutes |
| DL_NAMESPACE=<dl namespace> |
| NUM_STREAMS=10 |
| INITIAL_RATE=200 |
| distributedlog-benchmark/bin/dbench write |
| |
| |
| Write to BookKeeper with Core Library |
| ------------------------------------- |
| |
| The core library write test (mode = `bkwrite`) can be used to send writes to directly to bookkeeper using the core library. |
| |
| For example to use the core library write test to generate 100MBps across 10 streams using 100 machines, run the following command on each machine. |
| |
| :: |
| |
| STREAM_NAME_PREFIX=loadtest_ |
| BENCHMARK_DURATION=60 # minutes |
| DL_NAMESPACE=<dl namespace> |
| NUM_STREAMS=10 |
| INITIAL_RATE=1024 |
| MSG_SIZE=1024 |
| distributedlog-benchmark/bin/dbench bkwrite |
| |
| |
| Read from BookKeeper with Core Library |
| -------------------------------------- |
| |
| The core library read test (mode = `read`) can be used to read directly from bookkeeper using the core library. |
| |
| For example to use the core library read test to read from 10 streams on 100 instances, run the following command on each machine. |
| |
| :: |
| |
| STREAM_NAME_PREFIX=loadtest_ |
| BENCHMARK_DURATION=60 # minutes |
| DL_NAMESPACE=<dl namespace> |
| MAX_STREAM_ID=9 |
| NUM_READERS_PER_STREAM=5 |
| TRUNCATION_INTERVAL=60 # seconds |
| distributedlog-benchmark/bin/dbench read |