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 [{{ .Workdir }}])
      --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)
      --deadline duration                                           Maximum duration for the test run (default 5 minutes) (default 5m0s)
      --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 traceLocation                              when logging hits line file:N, emit a stack trace (default :0)
      --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.30-Vitess")
      --port int                                                    VTGate port
      --pprof strings                                               enable profiling
      --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 severity                                    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 moduleSpec                                          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
