Sign inSign up

qarlm/ghz

By qarlm

•Updated about 5 years ago

A docker image that wraps up a gRPC load tester called ghz

Image
1

8.4K

qarlm/ghz repository overview

⁠Docker: ghz

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.

⁠Usage:

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⁠

Tag summary

Content type

Image

Digest

Size

540.4 MB

Last updated

about 5 years ago

docker pull qarlm/ghz