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) --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.30-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