h2load - HTTP/2 benchmarking tool - HOW-TO¶
+h2load is benchmarking tool for HTTP/2. If built with +spdylay (http://tatsuhiro-t.github.io/spdylay/) library, it also +supports SPDY protocol. It supports SSL/TLS and clear text for both +HTTP/2 and SPDY.
+Basic Usage¶
+In order to set benchmark settings, specify following 3 options.
+-
+
- -n +
- The number of total requests. Default: 1 +
- -c +
- The number of concurrent clients. Default: 1 +
- -m +
- The max concurrent streams to issue per client. +If auto is given, the number of given URIs is used. +Default: auto +
Here is a command-line to perform benchmark to URI https://localhost +using total 100000 requests, 100 concurrent clients and 10 max +concurrent streams:
+$ h2load -n100000 -c100 -m10 https://localhost
+
The benchmarking result looks like this:
+finished in 0 sec, 385 millisec and 851 microsec, 2591 req/s, 1689 kbytes/s
+requests: 1000 total, 1000 started, 1000 done, 1000 succeeded, 0 failed, 0 errored
+status codes: 1000 2xx, 0 3xx, 0 4xx, 0 5xx
+traffic: 667500 bytes total, 28700 bytes headers, 612000 bytes data
+
The number of failed is the number of requests returned with non +2xx status. The number of error is the number of failed plus +the number of requests which failed with connection error.
+The number of total in traffic is the received application +data. If SSL/TLS is used, this number is calculated after decryption. +The number of headers is the sum of payload size of response +HEADERS (or SYN_REPLY for SPDY). This number comes before +decompressing header block. The number of data is the sum of +response body.
+Flow Control¶
+HTTP/2 and SPDY/3 or later employ flow control and it may affect +benchmarking results. To adjust receiver flow control window size, +there is following options:
+-
+
- -w +
- Sets the stream level initial window size to +(2**<N>)-1. For SPDY, 2**<N> is used instead. +
- -W +
- Sets the connection level initial window size to +(2**<N>)-1. For SPDY, if <N> is strictly less +than 16, this option is ignored. Otherwise +2**<N> is used for SPDY. +
Multi-Threading¶
+Sometimes benchmarking client itself becomes a bottleneck. To remedy +this situation, use -t option to specify the number of native +thread to use.
+-
+
- -t +
- The number of native threads. Default: 1 +
Selecting protocol for clear text¶
+By default, if http:// URI is given, HTTP/2 protocol is used. To +change the protocol to use for clear text, use -p option.
+Multiple URIs¶
+If multiple URIs are specified, they are used in round robin manner.
+Note
+Please note that h2load uses sheme, host and port in the first URI +and ignores those parts in the rest of the URIs.
+