2015-01-09 16:37:42 +01:00
|
|
|
.\" Man page generated from reStructuredText.
|
|
|
|
.
|
2015-09-06 10:41:37 +02:00
|
|
|
.TH "H2LOAD" "1" "September 06, 2015" "1.3.1-DEV" "nghttp2"
|
2014-05-09 17:34:56 +02:00
|
|
|
.SH NAME
|
|
|
|
h2load \- HTTP/2 benchmarking tool
|
2015-01-09 16:37:42 +01:00
|
|
|
.
|
|
|
|
.nr rst2man-indent-level 0
|
|
|
|
.
|
|
|
|
.de1 rstReportMargin
|
|
|
|
\\$1 \\n[an-margin]
|
|
|
|
level \\n[rst2man-indent-level]
|
|
|
|
level margin: \\n[rst2man-indent\\n[rst2man-indent-level]]
|
|
|
|
-
|
|
|
|
\\n[rst2man-indent0]
|
|
|
|
\\n[rst2man-indent1]
|
|
|
|
\\n[rst2man-indent2]
|
|
|
|
..
|
|
|
|
.de1 INDENT
|
|
|
|
.\" .rstReportMargin pre:
|
|
|
|
. RS \\$1
|
|
|
|
. nr rst2man-indent\\n[rst2man-indent-level] \\n[an-margin]
|
|
|
|
. nr rst2man-indent-level +1
|
|
|
|
.\" .rstReportMargin post:
|
|
|
|
..
|
|
|
|
.de UNINDENT
|
|
|
|
. RE
|
|
|
|
.\" indent \\n[an-margin]
|
|
|
|
.\" old: \\n[rst2man-indent\\n[rst2man-indent-level]]
|
|
|
|
.nr rst2man-indent-level -1
|
|
|
|
.\" new: \\n[rst2man-indent\\n[rst2man-indent-level]]
|
|
|
|
.in \\n[rst2man-indent\\n[rst2man-indent-level]]u
|
|
|
|
..
|
2014-05-09 17:34:56 +02:00
|
|
|
.SH SYNOPSIS
|
2015-01-09 16:37:42 +01:00
|
|
|
.sp
|
|
|
|
\fBh2load\fP [OPTIONS]... [URI]...
|
2014-05-09 17:34:56 +02:00
|
|
|
.SH DESCRIPTION
|
2015-01-09 16:37:42 +01:00
|
|
|
.sp
|
2014-05-09 17:34:56 +02:00
|
|
|
benchmarking tool for HTTP/2 and SPDY server
|
2015-01-09 16:37:42 +01:00
|
|
|
.INDENT 0.0
|
2014-05-09 17:34:56 +02:00
|
|
|
.TP
|
2015-01-09 16:37:42 +01:00
|
|
|
.B <URI>
|
2015-01-15 16:10:16 +01:00
|
|
|
Specify URI to access. Multiple URIs can be specified.
|
|
|
|
URIs are used in this order for each client. All URIs
|
|
|
|
are used, then first URI is used and then 2nd URI, and
|
|
|
|
so on. The scheme, host and port in the subsequent
|
|
|
|
URIs, if present, are ignored. Those in the first URI
|
2015-08-29 17:24:11 +02:00
|
|
|
are used solely. Definition of a base URI overrides all
|
|
|
|
scheme, host or port values.
|
2015-01-09 16:37:42 +01:00
|
|
|
.UNINDENT
|
2015-02-01 10:33:24 +01:00
|
|
|
.SH OPTIONS
|
2015-01-09 16:37:42 +01:00
|
|
|
.INDENT 0.0
|
2014-05-09 17:34:56 +02:00
|
|
|
.TP
|
2015-01-09 16:37:42 +01:00
|
|
|
.B \-n, \-\-requests=<N>
|
|
|
|
Number of requests.
|
|
|
|
.sp
|
|
|
|
Default: \fB1\fP
|
|
|
|
.UNINDENT
|
|
|
|
.INDENT 0.0
|
2014-05-09 17:34:56 +02:00
|
|
|
.TP
|
2015-01-09 16:37:42 +01:00
|
|
|
.B \-c, \-\-clients=<N>
|
|
|
|
Number of concurrent clients.
|
|
|
|
.sp
|
|
|
|
Default: \fB1\fP
|
|
|
|
.UNINDENT
|
|
|
|
.INDENT 0.0
|
2014-05-09 17:34:56 +02:00
|
|
|
.TP
|
2015-01-09 16:37:42 +01:00
|
|
|
.B \-t, \-\-threads=<N>
|
|
|
|
Number of native threads.
|
|
|
|
.sp
|
|
|
|
Default: \fB1\fP
|
|
|
|
.UNINDENT
|
|
|
|
.INDENT 0.0
|
|
|
|
.TP
|
2015-07-28 17:01:12 +02:00
|
|
|
.B \-i, \-\-input\-file=<PATH>
|
2015-05-12 03:49:42 +02:00
|
|
|
Path of a file with multiple URIs are separated by EOLs.
|
2015-01-15 16:10:16 +01:00
|
|
|
This option will disable URIs getting from command\-line.
|
2015-07-28 17:01:12 +02:00
|
|
|
If \(aq\-\(aq is given as <PATH>, URIs will be read from stdin.
|
2015-01-15 16:10:16 +01:00
|
|
|
URIs are used in this order for each client. All URIs
|
|
|
|
are used, then first URI is used and then 2nd URI, and
|
|
|
|
so on. The scheme, host and port in the subsequent
|
|
|
|
URIs, if present, are ignored. Those in the first URI
|
2015-08-29 17:24:11 +02:00
|
|
|
are used solely. Definition of a base URI overrides all
|
|
|
|
scheme, host or port values.
|
2015-01-09 16:37:42 +01:00
|
|
|
.UNINDENT
|
|
|
|
.INDENT 0.0
|
2014-10-27 16:35:44 +01:00
|
|
|
.TP
|
2015-01-09 16:37:42 +01:00
|
|
|
.B \-m, \-\-max\-concurrent\-streams=(auto|<N>)
|
2015-01-15 16:10:16 +01:00
|
|
|
Max concurrent streams to issue per session. If "auto"
|
|
|
|
is given, the number of given URIs is used.
|
2015-01-09 16:37:42 +01:00
|
|
|
.sp
|
|
|
|
Default: \fBauto\fP
|
|
|
|
.UNINDENT
|
|
|
|
.INDENT 0.0
|
2014-05-09 17:34:56 +02:00
|
|
|
.TP
|
2015-01-09 16:37:42 +01:00
|
|
|
.B \-w, \-\-window\-bits=<N>
|
2015-01-15 16:10:16 +01:00
|
|
|
Sets the stream level initial window size to (2**<N>)\-1.
|
|
|
|
For SPDY, 2**<N> is used instead.
|
2015-04-27 15:36:34 +02:00
|
|
|
.sp
|
|
|
|
Default: \fB30\fP
|
2015-01-09 16:37:42 +01:00
|
|
|
.UNINDENT
|
|
|
|
.INDENT 0.0
|
2014-05-09 17:34:56 +02:00
|
|
|
.TP
|
2015-01-09 16:37:42 +01:00
|
|
|
.B \-W, \-\-connection\-window\-bits=<N>
|
2015-01-15 16:10:16 +01:00
|
|
|
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.
|
2015-04-27 15:36:34 +02:00
|
|
|
.sp
|
|
|
|
Default: \fB30\fP
|
2015-01-09 16:37:42 +01:00
|
|
|
.UNINDENT
|
|
|
|
.INDENT 0.0
|
2014-05-09 17:34:56 +02:00
|
|
|
.TP
|
2015-01-09 16:37:42 +01:00
|
|
|
.B \-H, \-\-header=<HEADER>
|
2014-10-27 16:35:44 +01:00
|
|
|
Add/Override a header to the requests.
|
2015-01-09 16:37:42 +01:00
|
|
|
.UNINDENT
|
|
|
|
.INDENT 0.0
|
2014-10-27 16:35:44 +01:00
|
|
|
.TP
|
2015-07-11 05:45:23 +02:00
|
|
|
.B \-\-ciphers=<SUITE>
|
|
|
|
Set allowed cipher list. The format of the string is
|
|
|
|
described in OpenSSL ciphers(1).
|
|
|
|
.UNINDENT
|
|
|
|
.INDENT 0.0
|
|
|
|
.TP
|
2015-01-09 16:37:42 +01:00
|
|
|
.B \-p, \-\-no\-tls\-proto=<PROTOID>
|
2015-01-15 16:10:16 +01:00
|
|
|
Specify ALPN identifier of the protocol to be used when
|
|
|
|
accessing http URI without SSL/TLS.
|
2015-05-15 17:10:41 +02:00
|
|
|
Available protocols: spdy/2, spdy/3, spdy/3.1 and h2c
|
2015-01-09 16:37:42 +01:00
|
|
|
.sp
|
2015-05-15 17:10:41 +02:00
|
|
|
Default: \fBh2c\fP
|
2015-01-09 16:37:42 +01:00
|
|
|
.UNINDENT
|
|
|
|
.INDENT 0.0
|
2014-05-09 17:34:56 +02:00
|
|
|
.TP
|
2015-07-28 17:01:12 +02:00
|
|
|
.B \-d, \-\-data=<PATH>
|
2015-03-26 16:37:12 +01:00
|
|
|
Post FILE to server. The request method is changed to
|
|
|
|
POST.
|
|
|
|
.UNINDENT
|
|
|
|
.INDENT 0.0
|
|
|
|
.TP
|
2015-07-28 17:01:12 +02:00
|
|
|
.B \-r, \-\-rate=<N>
|
2015-08-08 18:13:35 +02:00
|
|
|
Specifies the fixed rate at which connections are
|
2015-07-28 17:01:12 +02:00
|
|
|
created. The rate must be a positive integer,
|
|
|
|
representing the number of connections to be made per
|
|
|
|
second. When the rate is 0, the program will run as it
|
|
|
|
normally does, creating connections at whatever variable
|
|
|
|
rate it wants. The default value for this option is 0.
|
|
|
|
.UNINDENT
|
|
|
|
.INDENT 0.0
|
|
|
|
.TP
|
|
|
|
.B \-C, \-\-num\-conns=<N>
|
|
|
|
Specifies the total number of connections to create.
|
|
|
|
The total number of connections must be a positive
|
|
|
|
integer. On each connection, \fI\%\-m\fP requests are made. The
|
2015-08-08 18:13:35 +02:00
|
|
|
test stops once as soon as the <N> connections have
|
|
|
|
either completed or failed. When the number of
|
|
|
|
connections is 0, the program will run as it normally
|
|
|
|
does, creating as many connections as it needs in order
|
|
|
|
to make the \fI\%\-n\fP requests specified. The default value
|
|
|
|
for this option is 0. The \fI\%\-n\fP option is not required if
|
|
|
|
the \fI\%\-C\fP option is being used.
|
2015-07-28 17:01:12 +02:00
|
|
|
.UNINDENT
|
|
|
|
.INDENT 0.0
|
|
|
|
.TP
|
2015-08-29 17:24:11 +02:00
|
|
|
.B \-T, \-\-connection\-active\-timeout=<N>
|
|
|
|
Specifies the maximum time that h2load is willing to
|
|
|
|
keep a connection open, regardless of the activity on
|
|
|
|
said connection. <N> must be a positive integer,
|
|
|
|
specifying the number of seconds to wait. When no
|
|
|
|
timeout value is set (either active or inactive), h2load
|
|
|
|
will keep a connection open indefinitely, waiting for a
|
|
|
|
response.
|
|
|
|
.UNINDENT
|
|
|
|
.INDENT 0.0
|
|
|
|
.TP
|
|
|
|
.B \-N, \-\-connection\-inactivity\-timeout=<N>
|
|
|
|
Specifies the amount of time that h2load is willing to
|
|
|
|
wait to see activity on a given connection. <N> must be
|
|
|
|
a positive integer, specifying the number of seconds to
|
|
|
|
wait. When no timeout value is set (either active or
|
|
|
|
inactive), h2load will keep a connection open
|
|
|
|
indefinitely, waiting for a response.
|
|
|
|
.UNINDENT
|
|
|
|
.INDENT 0.0
|
|
|
|
.TP
|
|
|
|
.B \-\-timing\-script\-file=<PATH>
|
|
|
|
Path of a file containing one or more lines separated by
|
|
|
|
EOLs. Each script line is composed of two tab\-separated
|
|
|
|
fields. The first field represents the time offset from
|
2015-09-06 10:41:37 +02:00
|
|
|
the start of execution, expressed as a positive value of
|
|
|
|
milliseconds with microsecond resolution. The second
|
|
|
|
field represents the URI. This option will disable URIs
|
|
|
|
getting from command\-line. If \(aq\-\(aq is given as <PATH>,
|
|
|
|
script lines will be read from stdin. Script lines are
|
|
|
|
used in order for each client. If \fI\%\-n\fP is given, it must be
|
|
|
|
less than or equal to the number of script lines, larger
|
|
|
|
values are clamped to the number of script lines. If \fI\%\-n\fP
|
|
|
|
is not given, the number of requests will default to the
|
2015-08-29 17:24:11 +02:00
|
|
|
number of script lines. The scheme, host and port defined
|
|
|
|
in the first URI are used solely. Values contained in
|
|
|
|
other URIs, if present, are ignored. Definition of a
|
|
|
|
base URI overrides all scheme, host or port values.
|
|
|
|
.UNINDENT
|
|
|
|
.INDENT 0.0
|
|
|
|
.TP
|
|
|
|
.B \-B, \-\-base\-uri=<URI>
|
|
|
|
Specify URI from which the scheme, host and port will be
|
|
|
|
used for all requests. The base URI overrides all
|
|
|
|
values defined either at the command line or inside
|
|
|
|
input files.
|
|
|
|
.UNINDENT
|
|
|
|
.INDENT 0.0
|
|
|
|
.TP
|
2015-01-09 16:37:42 +01:00
|
|
|
.B \-v, \-\-verbose
|
2014-05-09 17:34:56 +02:00
|
|
|
Output debug information.
|
2015-01-09 16:37:42 +01:00
|
|
|
.UNINDENT
|
|
|
|
.INDENT 0.0
|
2014-05-09 17:34:56 +02:00
|
|
|
.TP
|
2015-01-09 16:37:42 +01:00
|
|
|
.B \-\-version
|
2014-05-09 17:34:56 +02:00
|
|
|
Display version information and exit.
|
2015-01-09 16:37:42 +01:00
|
|
|
.UNINDENT
|
|
|
|
.INDENT 0.0
|
2014-05-09 17:34:56 +02:00
|
|
|
.TP
|
2015-01-09 16:37:42 +01:00
|
|
|
.B \-h, \-\-help
|
2014-05-09 17:34:56 +02:00
|
|
|
Display this help and exit.
|
2015-01-09 16:37:42 +01:00
|
|
|
.UNINDENT
|
2015-02-01 10:19:16 +01:00
|
|
|
.SH OUTPUT
|
|
|
|
.INDENT 0.0
|
|
|
|
.TP
|
|
|
|
.B requests
|
|
|
|
.INDENT 7.0
|
|
|
|
.TP
|
|
|
|
.B total
|
|
|
|
The number of requests h2load was instructed to make.
|
|
|
|
.TP
|
|
|
|
.B started
|
|
|
|
The number of requests h2load has started.
|
|
|
|
.TP
|
|
|
|
.B done
|
|
|
|
The number of requests completed.
|
|
|
|
.TP
|
|
|
|
.B succeeded
|
|
|
|
The number of requests completed successfully. Only HTTP status
|
|
|
|
code 2xx or3xx are considered as success.
|
|
|
|
.TP
|
|
|
|
.B failed
|
|
|
|
The number of requests failed, including HTTP level failures
|
|
|
|
(non\-successful HTTP status code).
|
|
|
|
.TP
|
|
|
|
.B errored
|
|
|
|
The number of requests failed, except for HTTP level failures.
|
2015-08-14 16:59:47 +02:00
|
|
|
This is the subset of the number reported in \fBfailed\fP and most
|
|
|
|
likely the network level failures or stream was reset by
|
|
|
|
RST_STREAM.
|
2015-08-29 17:24:11 +02:00
|
|
|
.TP
|
|
|
|
.B timeout
|
|
|
|
The number of requests whose connection timed out before they were
|
|
|
|
completed. This is the subset of the number reported in
|
|
|
|
\fBerrored\fP\&.
|
2015-02-01 10:19:16 +01:00
|
|
|
.UNINDENT
|
|
|
|
.TP
|
|
|
|
.B status codes
|
|
|
|
The number of status code h2load received.
|
|
|
|
.TP
|
|
|
|
.B traffic
|
|
|
|
.INDENT 7.0
|
|
|
|
.TP
|
|
|
|
.B total
|
|
|
|
The number of bytes received from the server "on the wire". If
|
|
|
|
requests were made via TLS, this value is the number of decrpyted
|
|
|
|
bytes.
|
|
|
|
.TP
|
|
|
|
.B headers
|
|
|
|
The number of response header bytes from the server without
|
|
|
|
decompression. For HTTP/2, this is the sum of the payload of
|
|
|
|
HEADERS frame. For SPDY, this is the sum of the payload of
|
|
|
|
SYN_REPLY frame.
|
|
|
|
.TP
|
|
|
|
.B data
|
|
|
|
The number of response body bytes received from the server.
|
|
|
|
.UNINDENT
|
|
|
|
.TP
|
|
|
|
.B time for request
|
|
|
|
.INDENT 7.0
|
|
|
|
.TP
|
|
|
|
.B min
|
|
|
|
The minimum time taken for request and response.
|
|
|
|
.TP
|
|
|
|
.B max
|
|
|
|
The maximum time taken for request and response.
|
|
|
|
.TP
|
|
|
|
.B mean
|
|
|
|
The mean time taken for request and response.
|
|
|
|
.TP
|
|
|
|
.B sd
|
2015-05-07 13:55:10 +02:00
|
|
|
The standard deviation of the time taken for request and response.
|
2015-02-01 10:19:16 +01:00
|
|
|
.TP
|
|
|
|
.B +/\- sd
|
|
|
|
The fraction of the number of requests within standard deviation
|
|
|
|
range (mean +/\- sd) against total number of successful requests.
|
|
|
|
.UNINDENT
|
2015-05-07 13:55:10 +02:00
|
|
|
.TP
|
|
|
|
.B time for connect
|
|
|
|
.INDENT 7.0
|
|
|
|
.TP
|
|
|
|
.B min
|
|
|
|
The minimum time taken to connect to a server.
|
|
|
|
.TP
|
|
|
|
.B max
|
|
|
|
The maximum time taken to connect to a server.
|
|
|
|
.TP
|
|
|
|
.B mean
|
|
|
|
The mean time taken to connect to a server.
|
|
|
|
.TP
|
|
|
|
.B sd
|
|
|
|
The standard deviation of the time taken to connect to a server.
|
|
|
|
.TP
|
|
|
|
.B +/\- sd
|
|
|
|
The fraction of the number of connections within standard
|
|
|
|
deviation range (mean +/\- sd) against total number of successful
|
|
|
|
connections.
|
|
|
|
.UNINDENT
|
|
|
|
.TP
|
|
|
|
.B time for 1st byte (of (decrypted in case of TLS) application data)
|
|
|
|
.INDENT 7.0
|
|
|
|
.TP
|
|
|
|
.B min
|
|
|
|
The minimum time taken to get 1st byte from a server.
|
|
|
|
.TP
|
|
|
|
.B max
|
|
|
|
The maximum time taken to get 1st byte from a server.
|
|
|
|
.TP
|
|
|
|
.B mean
|
|
|
|
The mean time taken to get 1st byte from a server.
|
|
|
|
.TP
|
|
|
|
.B sd
|
|
|
|
The standard deviation of the time taken to get 1st byte from a
|
|
|
|
server.
|
|
|
|
.TP
|
|
|
|
.B +/\- sd
|
|
|
|
The fraction of the number of connections within standard
|
|
|
|
deviation range (mean +/\- sd) against total number of successful
|
|
|
|
connections.
|
|
|
|
.UNINDENT
|
2015-02-01 10:19:16 +01:00
|
|
|
.UNINDENT
|
2015-04-27 15:36:34 +02:00
|
|
|
.SH FLOW CONTROL
|
|
|
|
.sp
|
|
|
|
h2load sets large flow control window by default, and effectively
|
|
|
|
disables flow control to avoid under utilization of server
|
|
|
|
performance. To set smaller flow control window, use \fI\%\-w\fP and
|
|
|
|
\fI\%\-W\fP options. For example, use \fB\-w16 \-W16\fP to set default
|
|
|
|
window size described in HTTP/2 and SPDY protocol specification.
|
2015-01-09 16:37:42 +01:00
|
|
|
.SH SEE ALSO
|
|
|
|
.sp
|
|
|
|
\fInghttp(1)\fP, \fInghttpd(1)\fP, \fInghttpx(1)\fP
|
|
|
|
.SH AUTHOR
|
|
|
|
Tatsuhiro Tsujikawa
|
|
|
|
.SH COPYRIGHT
|
2015-01-10 09:12:24 +01:00
|
|
|
2012, 2015, Tatsuhiro Tsujikawa
|
2015-01-09 16:37:42 +01:00
|
|
|
.\" Generated by docutils manpage writer.
|
|
|
|
.
|