vtbench is a simple load testing client to compare workloads in Vitess across the various client/server protocols.
Usage:
vtbench [flags]
Examples:
There are a number of command line options to control the behavior,
but as a basic example, the three supported client protocols are:
Mysql protocol to vtgate:
vtbench \
--protocol mysql \
--host vtgate-host.my.domain \
--port 15306 \
--user db_username \
--db-credentials-file ./vtbench_db_creds.json \
--db @replica \
--sql "select * from loadtest_table where id=123456789" \
--threads 10 \
--count 10
GRPC to vtgate:
vtbench \
--protocol grpc-vtgate \
--host vtgate-host.my.domain \
--port 15999 \
--db @replica \
$VTTABLET_GRPC_ARGS \
--sql "select * from loadtest_table where id=123456789" \
--threads 10 \
--count 10
GRPC to vttablet:
vtbench \
--protocol grpc-vttablet \
--host tablet-loadtest-00-80.my.domain \
--port 15999 \
--db loadtest/00-80@replica \
--sql "select * from loadtest_table where id=123456789" \
--threads 10 \
--count 10
Flags:
--alsologtostderr log to standard error as well as files
--config-file string Full path of the config file (with extension) to use. If set, --config-path, --config-type, and --config-name are ignored.
--config-file-not-found-handling ConfigFileNotFoundHandling Behavior when a config file is not found. (Options: error, exit, ignore, warn) (default warn)
--config-name string Name of the config file (without extension) to search for. (default "vtconfig")
--config-path strings Paths to search for config files in. (default [/tmp])
--config-persistence-min-interval duration minimum interval between persisting dynamic config changes back to disk (if no change has occurred, nothing is done). (default 1s)
--config-type string Config file type (omit to infer config type from file extension).
--count int Number of queries per thread (default 1000)
--db string Database name to use when connecting / running the queries (e.g. @replica, keyspace, keyspace/shard etc)
--db-credentials-file string db credentials file; send SIGHUP to reload this file
--db-credentials-server string db credentials server type ('file' - file implementation; 'vault' - HashiCorp Vault implementation) (default "file")
--db-credentials-vault-addr string URL to Vault server
--db-credentials-vault-path string Vault path to credentials JSON blob, e.g.: secret/data/prod/dbcreds
--db-credentials-vault-role-mountpoint string Vault AppRole mountpoint; can also be passed using VAULT_MOUNTPOINT environment variable (default "approle")
--db-credentials-vault-role-secretidfile string Path to file containing Vault AppRole secret_id; can also be passed using VAULT_SECRETID environment variable
--db-credentials-vault-roleid string Vault AppRole id; can also be passed using VAULT_ROLEID environment variable
--db-credentials-vault-timeout duration Timeout for vault API operations (default 10s)
--db-credentials-vault-tls-ca string Path to CA PEM for validating Vault server certificate
--db-credentials-vault-tokenfile string Path to file containing Vault auth token; token can also be passed using VAULT_TOKEN environment variable
--db-credentials-vault-ttl duration How long to cache DB credentials from the Vault server (default 30m0s)
--deadline duration Maximum duration for the test run (default 5 minutes) (default 5m0s)
--grpc-dial-concurrency-limit int Maximum concurrency of grpc dial operations. This should be less than the golang max thread limit of 10000. (default 1024)
--grpc_auth_static_client_creds string When using grpc_static_auth in the server, this file provides the credentials to use to authenticate with server.
--grpc_compression string Which protocol to use for compressing gRPC. Default: nothing. Supported: snappy
--grpc_enable_tracing Enable gRPC tracing.
--grpc_initial_conn_window_size int gRPC initial connection window size
--grpc_initial_window_size int gRPC initial window size
--grpc_keepalive_time duration After a duration of this time, if the client doesn't see any activity, it pings the server to see if the transport is still alive. (default 10s)
--grpc_keepalive_timeout duration After having pinged for keepalive check, the client waits for a duration of Timeout and if no activity is seen even after that the connection is closed. (default 10s)
--grpc_max_message_size int Maximum allowed RPC message size. Larger messages will be rejected by gRPC with the error 'exceeding the max size'. (default 16777216)
--grpc_prometheus Enable gRPC monitoring with Prometheus.
-h, --help help for vtbench
--host string VTGate host(s) in the form 'host1,host2,...'
--keep_logs duration keep logs for this long (using ctime) (zero to keep forever)
--keep_logs_by_mtime duration keep logs for this long (using mtime) (zero to keep forever)
--log_backtrace_at traceLocations when logging hits line file:N, emit a stack trace
--log_dir string If non-empty, write log files in this directory
--log_err_stacks log stack traces for errors
--log_rotate_max_size uint size in bytes at which logs are rotated (glog.MaxSize) (default 1887436800)
--logtostderr log to standard error instead of files
--mysql_server_version string MySQL server version to advertise. (default "8.0.40-Vitess")
--port int VTGate port
--pprof strings enable profiling
--pprof-http enable pprof http endpoints
--protocol string Client protocol, either mysql (default), grpc-vtgate, or grpc-vttablet (default "mysql")
--purge_logs_interval duration how often try to remove old logs (default 1h0m0s)
--security_policy string the name of a registered security policy to use for controlling access to URLs - empty means allow all for anyone (built-in policies: deny-all, read-only)
--sql string SQL statement to execute
--sql-max-length-errors int truncate queries in error logs to the given length (default unlimited)
--sql-max-length-ui int truncate queries in debug UIs to the given length (default 512) (default 512)
--stderrthreshold severityFlag logs at or above this threshold go to stderr (default 1)
--tablet_grpc_ca string the server ca to use to validate servers when connecting
--tablet_grpc_cert string the cert to use to connect
--tablet_grpc_crl string the server crl to use to validate server certificates when connecting
--tablet_grpc_key string the key to use to connect
--tablet_grpc_server_name string the server name to use to validate server certificate
--threads int Number of parallel threads to run (default 2)
--unix_socket string VTGate unix socket
--user string Username to connect using mysql (password comes from the db-credentials-file)
--v Level log level for V logs
-v, --version print binary version
--vmodule vModuleFlag comma-separated list of pattern=N settings for file-filtered logging
--vtgate_grpc_ca string the server ca to use to validate servers when connecting
--vtgate_grpc_cert string the cert to use to connect
--vtgate_grpc_crl string the server crl to use to validate server certificates when connecting
--vtgate_grpc_key string the key to use to connect
--vtgate_grpc_server_name string the server name to use to validate server certificate
Options (67)
| Option | Description | Source |
|---|---|---|
--count 10 | help | |
--db @replica | \ | help |
--alsologtostderr | log to standard error as well as files | help |
--config-file string | Full path of the config file (with extension) to use. | help |
--config-file-not-found-handling ConfigFileNotFoundHandling | Behavior when a config file is not found. | help |
--config-name string | Name of the config file (without extension) to search for. | help |
--config-path strings | Paths to search for config files in. | help |
--config-persistence-min-interval duration | minimum interval between persisting dynamic config changes back to disk (if no change has occurred, nothing is done). | help |
--config-type string | Config file type (omit to infer config type from file extension). | help |
--db-credentials-file string | db credentials file; | help |
--db-credentials-server string | db credentials server type ('file' - file implementation; | help |
--db-credentials-vault-addr string | URL to Vault server | help |
--db-credentials-vault-path string | Vault path to credentials JSON blob, e.g.: secret/data/prod/dbcreds | help |
--db-credentials-vault-role-mountpoint string | Vault AppRole mountpoint; | help |
--db-credentials-vault-role-secretidfile string | Path to file containing Vault AppRole secret_id; | help |
--db-credentials-vault-roleid string | Vault AppRole id; | help |
--db-credentials-vault-timeout duration | Timeout for vault API operations (default 10s) | help |
--db-credentials-vault-tls-ca string | Path to CA PEM for validating Vault server certificate | help |
--db-credentials-vault-tokenfile string | Path to file containing Vault auth token; | help |
--db-credentials-vault-ttl duration | How long to cache DB credentials from the Vault server (default 30m0s) | help |
--deadline duration | Maximum duration for the test run (default 5 minutes) (default 5m0s) | help |
--grpc-dial-concurrency-limit int | Maximum concurrency of grpc dial operations. | help |
--grpc_auth_static_client_creds string | When using grpc_static_auth in the server, this file provides the credentials to use to authenticate with server. | help |
--grpc_compression string | Which protocol to use for compressing gRPC. | help |
--grpc_enable_tracing | Enable gRPC tracing. | help |
--grpc_initial_conn_window_size int | gRPC initial connection window size | help |
--grpc_initial_window_size int | gRPC initial window size | help |
--grpc_keepalive_time duration | After a duration of this time, if the client doesn't see any activity, it pings the server to see if the transport is still alive. | help |
--grpc_keepalive_timeout duration | After having pinged for keepalive check, the client waits for a duration of Timeout and if no activity is seen even after that the connection is closed. | help |
--grpc_max_message_size int | Maximum allowed RPC message size. | help |
--grpc_prometheus | Enable gRPC monitoring with Prometheus. | help |
-h, --help | help for vtbench | help |
--host string | VTGate host(s) in the form 'host1,host2,...' | help |
--keep_logs duration | keep logs for this long (using ctime) (zero to keep forever) | help |
--keep_logs_by_mtime duration | keep logs for this long (using mtime) (zero to keep forever) | help |
--log_backtrace_at traceLocations | when logging hits line file:N, emit a stack trace | help |
--log_dir string | If non-empty, write log files in this directory | help |
--log_err_stacks | log stack traces for errors | help |
--log_rotate_max_size uint | size in bytes at which logs are rotated (glog.MaxSize) (default 1887436800) | help |
--logtostderr | log to standard error instead of files | help |
--mysql_server_version string | MySQL server version to advertise. | help |
--port int | VTGate port | help |
--pprof strings | enable profiling | help |
--pprof-http | enable pprof http endpoints | help |
--protocol string | Client protocol, either mysql (default), grpc-vtgate, or grpc-vttablet (default "mysql") | help |
--purge_logs_interval duration | how often try to remove old logs (default 1h0m0s) | help |
--security_policy string | the name of a registered security policy to use for controlling access to URLs - empty means allow all for anyone (built-in policies: deny-all, read-only) | help |
--sql string | SQL statement to execute | help |
--sql-max-length-errors int | truncate queries in error logs to the given length (default unlimited) | help |
--sql-max-length-ui int | truncate queries in debug UIs to the given length (default 512) (default 512) | help |
--stderrthreshold severityFlag | logs at or above this threshold go to stderr (default 1) | help |
--tablet_grpc_ca string | the server ca to use to validate servers when connecting | help |
--tablet_grpc_cert string | the cert to use to connect | help |
--tablet_grpc_crl string | the server crl to use to validate server certificates when connecting | help |
--tablet_grpc_key string | the key to use to connect | help |
--tablet_grpc_server_name string | the server name to use to validate server certificate | help |
--threads int | Number of parallel threads to run (default 2) | help |
--unix_socket string | VTGate unix socket | help |
--user string | Username to connect using mysql (password comes from the db-credentials-file) | help |
--v Level | log level for V logs | help |
-v, --version | print binary version | help |
--vmodule vModuleFlag | comma-separated list of pattern=N settings for file-filtered logging | help |
--vtgate_grpc_ca string | the server ca to use to validate servers when connecting | help |
--vtgate_grpc_cert string | the cert to use to connect | help |
--vtgate_grpc_crl string | the server crl to use to validate server certificates when connecting | help |
--vtgate_grpc_key string | the key to use to connect | help |
--vtgate_grpc_server_name string | the server name to use to validate server certificate | help |