tidb-operator/docs/benchmark-tidb.md

2.7 KiB

Benchmark TiDB

Table Of Contents

Prerequisites

You must run a TiDB cluster in your Kubernetes environment first. You can follow our docs here.

Please note that it's recommended to prepare a dedicated node to run your benchmark tool, e.g. sysbench.

We also require [kustomize] to customize our manifest yaml files. You can follow this to install latest kustomize on your machine.

Sysbench

Customize with kustomize

We assume you are working in the root of tidb-operator repo. If you don't have a copy, you can run git clone --depth=1 https://github.com/pingcap/tidb-operator to clone it onto your local machine.

Configure environments:

TIDB_HOST="<your-tidb-host>" # this can be tidb service name, pod ip or load balancer ip, etc.

Create kustomization.yaml:

mkdir -p sysbench/output
cat <<EOF > sysbench/kustomization.yaml
resources:
- ../manifests/sysbench
commonAnnotations:
  tidb-host: $TIDB_HOST
EOF

Optionally, if you want to change tidb user, port, password or other configurations you can customize them in commonAnnotations or patches fields:

commonAnnotations:
  tidb-password: "root"
patches:
- patch: |-
    apiVersion: batch/v1
    kind: Job
    metadata:
      name: sysbench-bench
    spec:
      template:
        metadata:
          annotations:
            sysbench-threads: "100"
            sysbench-test-name: oltp_read_write

Label the node to run sysbench:

kubectl label nodes <sysbench-node> dedicated=sysbench

Run kustomize:

kustomize build sysbench/ -o sysbench/output/

More customizations

Change sysbench image, here is an example:

patches:
- patch: |-
    - op: replace
      path: /spec/template/spec/containers/0/image
      value: your-sysbench-image
  target:
    kind: Job

Prepare: Create test tables and insert test records

kubectl apply -f sysbench/output/*config.yaml
kubectl apply -f sysbench/output/*prepare.yaml

You can run kubectl logs -l job-name=sysbench-prepare to view logs.

Warmup TiDB

kubectl apply -f sysbench/output/*warmup.yaml

You can run kubectl logs -l job-name=sysbench-warmup to view logs.

Run benchmark

kubectl apply -f sysbench/output/*bench.yaml

You can run kubectl logs -l job-name=sysbench-bench to view logs.