A docker image that wraps up a gRPC load tester called ghz
8.4K
This repository exists to create a docker image. The image is located at qarlm/ghz. This image is used to easily run ghz without dependencies or requirements as long as you have docker installed.
It is highly recommended that you use volume mounts, to mount your proto files into the container before executing your call. This will allow you to call your service with minimal configuration:
docker run \
--volume "$(pwd)/protos:/app/protos" \
qarlm/ghz
--proto=/app/protos/my_service.proto
--call=package.Service.Method
This will start the ghz siege.
You can easily show help as follows:
$ docker run qarlm/ghz --help
usage: ghz [<flags>] [<host>]
Flags:
-h, --help Show context-sensitive help (also try --help-long
and --help-man).
--config= Path to the JSON or TOML config file that
specifies all the test run settings.
--proto= The Protocol Buffer .proto file.
--protoset= The compiled protoset file. Alternative to proto.
-proto takes precedence.
--call= A fully-qualified method name in
'package.Service/method' or
'package.Service.Method' format.
-i, --import-paths= Comma separated list of proto import paths. The
current working directory and the directory of
the protocol buffer file are automatically added
to the import list.
--cacert= File containing trusted root certificates for
verifying the server.
--cert= File containing client certificate (public key),
to present to the server. Must also provide -key
option.
--key= File containing client private key, to present to
the server. Must also provide -cert option.
--cname= Server name override when validating TLS
certificate - useful for self signed certs.
--skipTLS Skip TLS client verification of the server's
certificate chain and host name.
--skipFirst=0 Skip the first X requests when doing the results
tally.
--insecure Use plaintext and insecure connection.
--authority= Value to be used as the :authority pseudo-header.
Only works if -insecure is used.
-c, --concurrency=50 Number of requests to run concurrently. Total
number of requests cannot be smaller than the
concurrency level. Default is 50.
-n, --total=200 Number of requests to run. Default is 200.
-q, --qps=0 Rate limit, in queries per second (QPS). Default
is no rate limit.
-t, --timeout=20s Timeout for each request. Default is 20s, use 0
for infinite.
-z, --duration=0 Duration of application to send requests. When
duration is reached, application stops and exits.
If duration is specified, n is ignored. Examples:
-z 10s -z 3m.
-x, --max-duration=0 Maximum duration of application to send requests
with n setting respected. If duration is reached
before n requests are completed, application
stops and exits. Examples: -x 10s -x 3m.
--duration-stop="close" Specifies how duration stop is reported. Options
are close, wait or ignore.
-d, --data= The call data as stringified JSON. If the value
is '@' then the request contents are read from
stdin.
-D, --data-file= File path for call data JSON file. Examples:
/home/user/file.json or ./file.json.
-b, --binary The call data comes as serialized binary message
or multiple count-prefixed messages read from
stdin.
-B, --binary-file= File path for the call data as serialized binary
message or multiple count-prefixed messages.
-m, --metadata= Request metadata as stringified JSON.
-M, --metadata-file= File path for call metadata JSON file. Examples:
/home/user/metadata.json or ./metadata.json.
--stream-interval=0 Interval for stream requests between message
sends.
--reflect-metadata= Reflect metadata as stringified JSON used only
for reflection request.
-o, --output= Output path. If none provided stdout is used.
-O, --format= Output format. One of: summary, csv, json,
pretty, html, influx-summary, influx-details.
Default is summary.
--connections=1 Number of connections to use. Concurrency is
distributed evenly among all the connections.
Default is 1.
--connect-timeout=10s Connection timeout for the initial connection
dial. Default is 10s.
--keepalive=0 Keepalive time duration. Only used if present and
above 0.
--name= User specified name for the test.
--tags= JSON representation of user-defined string tags.
--cpus=11 Number of cpu cores to use.
--debug= The path to debug log file.
-e, --enable-compression Enable Gzip compression on requests.
-v, --version Show application version.
Args:
[<host>] Host and port to test.
For more information on running see ghz: https://github.com/bojand/ghz
Content type
Image
Digest
Size
540.4 MB
Last updated
about 5 years ago
docker pull qarlm/ghz