这是 httperf 命令,可以使用我们的多个免费在线工作站之一在 OnWorks 免费托管服务提供商中运行,例如 Ubuntu Online、Fedora Online、Windows 在线模拟器或 MAC OS 在线模拟器
程序:
您的姓名
httperf - HTTP 性能测量工具
概要
httperf [--添加标题 S[--突发长度 N[- 客户 I/N[--关闭并重置]
[-d|-调试 N[--失败状态 N[-h| - 帮帮我[--猪[--http-版本 S[- 最大限度-
连接 N[--max-管道调用 N[- 方法 S[--无主机 hdr[--num-调用 N[--数量-
连接 N[- 时期 [d|u|e]T1[,T2]][- 港口 N[--打印回复 [头|身体]] [- 打印-
请求 [头|身体]] [- 速度 X[--recv-缓冲区 N[--重试失败[--发送缓冲区 N]
[- 服务器 S[- 服务器名称 S[--会话cookie[--ssl[--ssl-密码 L[--ssl-不-
重用[--思考超时 X[- 暂停 X[--uri S[-v|--详细[-V|- 版[--wlog
y|n,F[--wsess N,N,X[--wsesslog N,X,F[--wset N,X]
商品描述
httperf 是衡量网络服务器性能的工具。 它同时使用 HTTP 协议
它的 HTTP/1.0 和 HTTP/1.1 风格并提供各种工作负载生成器。 尽管
运行时,它会跟踪以表格形式汇总的许多性能指标
在测试运行结束时打印的统计信息。 最基本的操作
httperf 是生成固定数量的 HTTP GET 请求并测量有多少回复
(响应)从服务器返回以及响应到达的速率。
重要信息: 为了获得正确的结果,最多需要运行一个 httperf 过程
每个客户端机器。 此外,应该有尽可能少的后台进程
客户端和服务器机器。
示例
httperf --hog --服务器 www
该命令导致 httperf 创建到主机 www 的连接,发送请求
根文件(http://www/),收到回复,关闭连接,然后
打印一些性能统计信息。
httperf --hog --server www --num-conns 100 --ra 10 --超时 5
同上,除了总共创建了 100 个连接并且连接
以每秒 10 个的固定速率创建。 请注意,选项“--rate”已被
缩写为“--ra”。
httperf --hog --server=www --wsess=10,5,2 --rate 1 --timeout 5
原因 httperf 以每次 10 个会话的速率生成总共 1 个会话
第二。 每个会话包含 5 个间隔为 2 秒的调用。
httperf --hog --server=www --wsess=10,5,2 --rate=1 --timeout=5 --ssl
同上,除了 httperf 通过 SSL 在端口 443 上联系服务器 www(
SSL 连接的默认端口)。
httperf --hog --server www --wsess=10,5,2 --rate=1 --timeout=5 --ssl
--ssl-ciphers=EXP-RC4-MD5:EXP-RC2-CBC-MD5 --ssl-no-reuse --http-version=1.0
同上,除了 httperf 将通知服务器它只能从
两个密码套件(EXP-RC4-MD5 或 EXP-RC2-CBC-MD5); 此外, httperf 将使用
HTTP 1.0 版,每个请求都需要一个新的 TCP 连接。 此外,SSL
session id 没有被重用,所以整个 SSL 连接建立过程
每个连接都会发生(称为 SSL 握手)。
配置
的操作 httperf 可以通过多个选项进行控制。 该工具支持
短(一个字符)和长(任意长度)选项名称。 短选项是
以单个前导破折号 (-) 为前缀,以双破折号 (--) 为长选项。 多种的
短选项可以组合在一起(例如,``-vV'' 等价于 ``-v -V'') 和长
选项可以缩写,只要它们保持唯一即可。 选项的参数可以是
通过在长选项名称后面加上等号和参数来指定
值(例如, --爆发=10) 或通过用空格分隔选项名称和值(例如,
- 爆裂 10).
--添加标题=S
指定包含字符串 S 作为额外的请求头。 有必要
明确指定终止回车/换行序列。 这可以
通过使用转义序列“\n”来完成。 这使得可以包括
多个请求头。 例如,``--add-header "Referer: foo\nAuth:
secret\n"'' 会为每个请求头添加两个请求头(``Referer'' 和 ``Auth'')
要求。 其他支持的转义序列是“\r”(回车)、“\a”
(换行)、“\\”(反斜杠)和“\N”,其中 N 是字符的代码
插入(八进制)。
--突发长度=N
指定突发的长度。 每个突发由 N 调用服务器。 这
此参数的确切含义取决于工作负载生成器。 对于常规
面向请求的工作负载,请参阅选项说明 --wsess.
--无主机 hdr
指定在发出 HTTP 时不应包含“Host:”标头
请求。
--num-调用.
对于面向会话的工作负载,请参阅选项说明 --wsess.
--客户=I/N
指定机器 httperf 正在运行的是客户端 I 在总共 N
客户端。 I 应该在 0 到 N-1. 一些工作负载生成器
(例如, --wset) 使用客户端身份作为偏差值,以确保并非所有
客户端生成完全相同的工作负载。 在进行测试时
涉及多台客户端机器,通常最好指定此
选项。
--关闭并重置
要求 httperf 通过发送 RESET 而不是去关闭 TCP 连接
通过正常的TCP连接关闭握手。 开启这个选项可以
有不良影响,例如数据损坏、卡住 TCP 控制块或错误
结果。 因此,除非绝对,否则不应使用该选项
必要的,即使这样也不应该使用它,除非它的影响是完全的
明白了。
-d=N
--调试=N
将调试级别设置为 N. 较大的值 N 将导致更多的输出。
--失败状态=N
指定 HTTP 响应状态代码为 N 应该被视为失败
(例如,被视为请求已超时)。 例如,与
``--失败状态=504'' HTTP 状态为“504 网关超时”的响应
将被视为失败。 警告:当前支持此选项
仅会话工作负载(请参阅 --wsess 和 --wsesslog 选项)。
-h
- 帮帮我 打印可用选项及其参数的摘要。
--猪 此选项要求根据需要使用尽可能多的 TCP 端口。 没有这个
选项, httperf 通常仅限于使用临时端口(范围从
1024 到 5000)。 这个有限的端口范围很快就会成为瓶颈,所以它是
通常,为认真的测试指定此选项是个好主意。 还有,这
测量 NT 服务器时必须指定选项,因为它避免了 TCP
NT 和 UNIX 机器之间的不兼容。
--http-版本=S
指定应包含在发送到
服务器。 默认情况下,使用版本字符串“1.1”。 这个选项可以设置为
``1.0'' 强制生成 HTTP/1.0 请求。 将此选项设置为任何
“1.0”或“1.1”以外的值可能会导致未定义的行为。
--最大连接数=N
指定最多 N 为每个会话打开连接。 这个选项是
与选项一起有意义 --wsess 和 --wsesslog 只。
--max-管道调用=N
指定最多 N 在每个连接上发出流水线调用。 这个
option 与 options 结合使用是有意义的 --wsess 和 --wsesslog 只。
--方法=S
指定发出 HTTP 请求时应使用的方法。 如果这
未指定选项,则使用 GET 方法。 方法 S 可以是任意的
字符串,但通常是 GET、HEAD、PUT、POST 等之一。
--调用次数=N
此选项仅对面向请求的工作负载有意义。 它规定了
在关闭每个连接之前发出的调用总数。 如果 N is
大于 1,服务器必须支持持久连接。 默认值
此选项为 1。如果 --突发长度 被设置为 B,则 N 发出呼叫
在阵阵 B 流水线调用每个。 因此,此类突发的总数将为
N / B (每个连接)。
--num-conns=N
此选项仅对面向请求的工作负载有意义。 它规定了
要创建的连接总数。 在每个连接上,调用作为
由选项指定 --num-调用 和 --突发长度. 测试立即停止 N
连接已完成或失败。 一个连接被认为具有
如果连接上的任何活动未能取得更多进展,则失败
比超时选项指定的时间 - 暂停 和 --思考超时。 该
此选项的默认值为 1。
--期间=[D]T1[,T2]
指定创建连接或会话之间的时间间隔。
默认情况下创建连接,会话(如果选项) --wsess or --wsesslog 具有
被指定。 该连接/会话“到达间隔时间”也可以是
由指定 - 速度 选项,尽管使用具有更大的灵活性
- 时期。 这款 D 参数指定到达间隔时间分布。 如果
省略或设置为``d'', 一个确定的(即固定的)周期按规定使用
按参数 T1 以秒为单位。 如果 D 设置为``e'',一个指数(即
Poisson) 分布的平均到达间隔时间为 T1. 最后,如果 D
设置为``u'',在区间 [T1,T2)用于
间隔时间。 在所有情况下,周期为 0 的结果是连接或会话
顺序生成(新的连接/会话在
前一个完成)。 此选项的默认值为 0。请注意
例如,指定 --率=5 相当于指定 --期间=d0.2 or
--周期=0.2. 通过指定 --期间=u1,3, 到达间隔时间将是随机的
从 1 到 3 秒的间隔中选择。 具体顺序
(伪)随机到达时间与一个相同 httperf 跑到另一个作为
只要值为 - 时期 和 - 客户 选项是相同的。
--端口=N
此选项指定端口号 N Web 服务器正在侦听的位置
HTTP 请求。 默认情况下, httperf 使用端口号 80。
--打印回复[=[头|身体]]
请求打印回复标题、正文和摘要。 输出是
指向标准输出。 回复标题行以“RH”为前缀,回复正文
行以“RB”为前缀,回复大小摘要以“RS”为前缀。 这
前缀后跟一个唯一标识呼叫的序列号
回复行是一个冒号 (":") 字符,它标志着
实际回复行。 要仅打印回复标题,请传递参数 头 对此
选项。 要仅打印回复正文,请传递参数 身体 到这个选项。
--打印请求[=[头|身体]]
请求打印请求标头、正文(如果存在)和
概括。 输出被定向到标准输出。 请求标题行是
以“SH”为前缀,请求正文行以“SB”为前缀,请求摘要
以“SS”为前缀。 前缀后跟呼叫的序列号和
标记实际回复行开始的冒号 (":") 字符。 打印
仅请求标头,传递参数 头 到这个选项。 只打印
请求正文,传递参数 身体 到这个选项。
--率=X
指定创建连接或会话的固定速率。 连接
默认情况下创建,会话如果选项 --wsess or --wsesslog 一直
指定的。 在这两种情况下,速率为 0 会导致连接或会话被
顺序生成(新的会话/连接会在
前一个完成)。 此选项的默认值为 0。
--recv-缓冲区=N
指定用于接收 HTTP 的套接字接收缓冲区的最大大小
回复。 默认情况下,限制为 16KB。 较小的值可能有助于记忆-
受约束的客户端,而在与客户端通信时可能需要更大的值
通过高带宽、高延迟连接的服务器。
--重试失败
此选项仅对会话工作负载有意义(请参阅 --wsess 和
--wsesslog 选项)。 如果指定,则导致失败响应的调用(如
由...定义 --失败状态 选项)立即重试而不是导致
会话失败。
--发送缓冲区=N
指定用于发送 HTTP 请求的套接字发送缓冲区的最大大小。
默认情况下,限制为 4KB。 较小的值可能有助于内存受限的客户端
而在向服务器生成大量请求时可能需要更大的值
通过高带宽、高延迟的连接进行连接。
--服务器=S
指定服务器的 IP 主机名。 默认情况下,主机名“localhost”是
用过的。 应始终指定此选项,因为这通常不是一个好主意
在同一台机器上运行客户端和服务器。
--服务器名称=S
指定出现在每个“主机:”标题中的(默认)服务器名称
请求发送 httperf. 如果没有这个选项,主机名(或 IP 地址)
由选项指定 - 服务器 改为使用。
--会话cookie
启用此选项后,会在每个会话的基础上启用 cookie 管理。
这意味着如果对会话生成的请求的回复 X
包含一个 cookie,然后由会话发送的所有未来请求 X 将包括这个
饼干也是如此。 目前,cookie 管理器在 httperf 仅支持一个 cookie
每个会话。 如果收到第二个 cookie,新的 cookie 会覆盖
如果打开了“--debug 1”,则会打印一条警告消息。
--ssl 指定之间的所有通信 httperf 并且服务器应该利用
安全套接字层 (SSL) 协议。 此选项仅在以下情况下可用 httperf 是
在启用 SSL 支持的情况下编译。
--ssl-密码=L
此选项仅在使用 SSL 时才有意义(请参阅 --ssl 选项)。 这个选项
指定列表 L 的密码套件 httperf 可用于协商安全
与服务器的连接。 如果列表包含多个密码套件,则
密码必须用冒号分隔。 如果服务器不接受任何
列出的密码套件,连接建立将失败并且 httperf 将退出
立即地。 如果未指定此选项时 --ssl 选项存在然后
httperf 将使用底层 SSL 提供的所有 SSLv3 密码套件
图书馆。
--ssl-不可重用
此选项仅在使用 SSL 和会话时才有意义(请参阅 --ssl, --wsess,
--wsesslog)。 建立 SSL 连接后,客户端会收到一个会话
来自服务器的标识符(会话 ID)。 在随后的 SSL 连接中,客户端
通常重用此会话 ID 以避免重复
(慢)SSL 握手以建立新的 SSL 会话并获取另一个会话 ID
(即使客户端尝试重新使用会话 ID,服务器也可能会强制
客户端重新协商会话)。 默认情况下 httperf 重用会话 ID
一个会话中的所有连接。 如果 --ssl-不可重用 选项有效,然后
httperf 不会重用会话 id,整个 SSL 握手将是
为会话中的每个新连接执行。
--思考超时=X
指定服务器可能需要发起发送回复的最长时间
对于给定的请求。 注意这个超时值是加在正常超时值上的
值(见选项 - 暂停)。 访问静态网页内容时,通常不会
必须指定此选项。 但是,当执行长时间运行的测试时
CGI 脚本,可能需要使用此选项以允许更大的响应-
次。 此选项的默认值是零秒,这意味着服务器
必须能够在正常超时值内响应。
--超时=X
指定时间量 X 这 httperf 愿意等待服务器
反应。 超时以秒为单位指定,可以是小数
(例如, - 暂停 3.5)。 建立 TCP 时使用此超时值
连接、发送请求时、等待回复时以及接收
回复。 如果在任何这些活动中,请求未能取得进展
在规定的时间内, httperf 认为请求已经死亡,关闭
关联的连接或会话并增加 客户端-timo 错误计数。 这
等待回复时使用的实际超时值是此超时和
思考超时(见选项 --思考超时)。 默认情况下,超时值为
无限。
--uri=S
指定该 URI S 应该在服务器上访问。 对于一些工作量
发电机(例如, --wset),此选项指定 URI 的前缀
访问。
-v
--详细
认沽期权 httperf 进入详细模式。 在这种模式下,额外的输出,如
打印单个回复率样本和连接寿命直方图。
-V
- 版
打印版本 httperf.
--wlog=B,F
此选项可用于生成特定的 URI 访问序列。 这是
例如,可用于重放记录在服务器日志文件中的访问。
产品型号 F 是包含 ASCII NUL 分隔的 URI 列表的文件的名称
应该访问的。 如果参数 B 设置为``y'', httperf 将环绕
到达列表末尾时到文件的开头(因此 URI 列表
被重复访问)。 和 B 设置为``n'',测试将不迟于
当到达 URI 列表的末尾时。
--wsess=N1,N2,X
请求生成和测量会话而不是单个请求。
会话由一系列突发组成,这些突发由用户认为-
时间。 每个突发由一个固定的数字组成 L 对服务器的调用(L is
由选项指定 --突发长度)。 突发中的呼叫发出如下:
首先,发出单个调用。 一旦对第一个电话的答复得到
完全接收,突发中所有剩余的呼叫同时发出。 这
并发调用作为对现有持久化的流水线调用发出
连接或作为单独连接上的单独呼叫。 是否执着
连接的使用取决于服务器是否用
包含“连接:关闭”标题行的回复。 如果这样的线是
目前,使用单独的连接。
该选项指定以下参数: N1 是会话总数
产生, N2 是每个会话的调用数,以及 X 是用户的思考时间
(以秒为单位)分隔连续的呼叫突发。 例如,选项
``--wsess=100,50,10 --突发长度 5'' 将导致 100 个会话,总共 50 个
调用每个。 由于每个突发的长度为 5 个呼叫,因此总共有 10 个呼叫突发
每个会话都会生成。 呼叫突发之间的用户思考时间将是
10 秒。 注意用户的思考时间 X 表示接收之间的时间
前一个呼叫突发的最后一个回复和第一个请求的发送
下一次爆发。
涉及会话的测试在请求的号码后立即完成 N1 会话数
要么失败要么完成。 如果有任何会话,则认为会话失败
会话中的操作花费的时间比选项指定的超时时间长
- 暂停 和 --思考超时. 此外,会话也会失败,如果服务器
返回状态代码与选项指定的状态代码匹配的回复 - 失败-
状态.
--wsesslog=N,X,F
这指定了一个会话工作负载生成器,类似于 --wsess (请阅读
先说明)。 和 --wsesslog 但是,用户会话的许多方面,
包括 URI 的数量和顺序、请求方法、思考时间和突发
长度参数,可以在输入文件中指定 F. 另外两个参数是
保留自 ——wsess, 亦即 N, 要启动的会话数,以及 X, 此
突发到突发用户思考时间(请注意,这成为默认时间,因为
输入文件 F 还可以在每个突发的基础上指定用户思考时间。 一个小的
示例输入文件可以最轻松地显示可设置的参数:
# 注释行以“#”作为第一行
# 特点。 只有空格分隔的行
# 会话(不生成多个空行
# ``null'' 会话)。 所有其他行指定一个
# uri-sequence(每行 1 个 uri)。 如果第一个
# 该行的字符是空格(例如空格
# 或制表符),则 uri 被认为是 a 的一部分
# 在前一个之后发出的突发
# 非突发 uri。
# session 1 定义(这是注释)
/foo.html 认为=2.0
/pict1.gif
/pict2.gif
/foo2.html 方法=POST 内容='发布数据'
/pict3.gif
/pict4.gif
# 会话 2 定义
/foo3.html 方法=POST 内容="多行\n数据"
/foo4.html 方法=HEAD
上面的描述指定了 2 个会话。 第一次会议将开始
请求 /foo.html。 当 /foo.html 响应返回时,突发 2
请求将跟随(/pict1.gif 和 /pict2.gif)。 当这些回应中的最后一个
收到,在下一个请求之前插入两秒的用户思考时间
/foo2.html 被发布。 此请求作为 POST 发送。 发布的数据可以是
包含在单引号或双引号之间。 换行符可以出现在发布的数据中
作为 ``\n'' 或作为 ``\ ''。 /foo2.html 响应之后是一个突发
/pict3.gif 和 /pict4.gif 的请求,结束本次会议。 第二
会话在第一次之后的某个时间开始,如 - 速度 or
- 时期 选项。
第二个会话由 2 个请求组成,由默认用户思考时间分隔
由 X 的参数 --wsesslog 选项。 如果 N 的参数
--wsesslog 大于输入文件中定义的会话数 F,则
定义的会话被重复使用,直到 N 会话已创建(即
定义的会话以循环方式使用)。
一应避免使用 --wsesslog 与其他一起 httperf 选项
还控制会话行为和工作负载 URI,即 --突发长度, ——wsess,
--wlog, 和 --wset。
--wset=N,X
此选项可用于以给定速率遍历 URI 列表。 范围
N 指定应该生成的不同 URI 的数量和 X 指定
访问新 URI 的速率。 一个比率 0.25 将意味着相同
在移动到下一个 URI 之前,URI 将被连续访问四次。 这个
访问模式的类型在生成工作负载时很有用
服务器磁盘 I/O 子系统中可预测的流量(假设 N
并且访问的文件大到足以超过服务器的缓冲区缓存)。 这
生成的 URI 具有以下形式 字首/径.html,其中 字首 是 URI 前缀
由选项指定 --wset 和 径 生成如下:对于 i-th 文件
工作集,写下来 i 十进制,在数字前面加上尽可能多的零
根据需要获得一个具有与数字一样多的字符串 N-1. 然后插入斜线
每个数字之间的字符。 例如,工作集中的第 103 个文件
由 1024 个文件组成将导致路径为 ``0 / 1 / 0 / 3''。 因此,如果 URI-
前缀是 /wset1024,那么被访问的 URI 将是 /wset1024/0/1/0/3.html.
换句话说,服务器上的文件需要组织为一个 10ary 树。
OUTPUT
本节描述每次测试运行结束时的统计输出。 基础的
下面显示的信息是独立于选定的工作负载生成器打印的。
总计: 连接 30000 次请求 29997 次回复 29997 次测试持续时间 299.992 秒
连接升级包 速度: 100.0 conn/s(10.0 ms/conn,<=14 个并发连接)
连接升级包 次 [多发性硬化症]: 最小值 1.4 平均值 3.0 最大值 163.4 中值 1.5 标准偏差 7.3
连接升级包 次 [多发性硬化症]: 连接0.6
连接升级包 长度 [回复/连接]: 1.000
请求 速度: 100.0 请求/秒(10.0 毫秒/请求)
请求 尺寸 [乙]: 75.0
回复 率 [回复/秒]: 最低 98.8 平均 100.0 最高 101.2 标准偏差 0.3(60 个样本)
回复 次 [多发性硬化症]: 响应 2.4 传输 0.0
回复 尺寸 [乙]: 页眉 242.0 内容 1010.0 页脚 0.0(共 1252.0)
回复 状态: 1xx=0 2xx=29997 3xx=0 4xx=0 5xx=0
中央处理器 次 [s]: 用户 94.31 系统 205.26(用户 31.4% 系统 68.4% 总计 99.9%)
净 输入/输出: 129.6 KB/秒(1.1*10^6 bps)
错误: 总共 3 个客户端-timo 0 socket-timo 0 connrefused 3 connreset 0
错误: fd-unavail 0 addrunavail 0 ftab-full 0 其他 0
有六组统计数据:总体结果(``Total''),连接相关
结果(``Connection''),与发出 HTTP 请求(``Request'')有关的结果,
与从服务器收到的回复相关的结果(“回复”),杂项
与 CPU (``CPU'') 和网络 (``Net I/O'') 利用率相关的结果,最后但
最重要的是,遇到的错误摘要(“错误”)。
总节
本节总结了有多少 TCP 连接是由 httperf,如何
它发出了多少请求,收到了多少回复,以及总共测试了多少
持续时间是。 在上面显示的示例输出中,创建了 30,000 个连接,
发出请求 29,997 条,收到回复 29,997 条。 持续时间
测试几乎正好是 5 分钟(300 秒)。
连接部分
本节传达与工具生成的 TCP 连接相关的信息。
具体来说,“连接速率”行显示了新连接
以每秒 100.0 个连接的速率启动。 该比率对应于
每个连接的周期为 10.0 毫秒。 此行中的最后一个数字显示
在任何给定时间最多打开 14 个连接。
标有“连接时间”的第一行给出成功的生命周期统计信息
连接。 连接的生命周期是 TCP 连接之间的时间
启动和连接关闭的时间。 一个连接被考虑
如果它至少有一个成功完成的调用,则成功。 在示例中
输出,该行表示最小(``min'')连接寿命为 1.4
毫秒,平均(``avg'')生命周期为 3.0 毫秒,最大
(``max'') 是 163.4 毫秒,中位数 (``median'') 寿命是 1.5
毫秒,寿命的标准偏差为 7.3
毫秒。 中值寿命是根据直方图计算的,其中一个
毫秒级分辨率和 100 秒的最长寿命。 因此,中位数是
如果至少成功一半,则精确到半毫秒内
连接的生命周期不超过 100 秒。
本节中的下一个统计数据是建立 TCP 所需的平均时间
联系。 仅计算成功的 TCP 连接建立。 在里面
例如,标有“连接时间”的第二行表明,平均而言,它
建立连接需要 0.6 毫秒。
本节的最后一行标记为“连接长度”。它给出了
在收到至少一个的每个连接上收到的平均回复数
回复(即,在产生第一个回复之前失败的连接不是
计)。 由于持续连接,此数字可能大于 1.0。
请求部分
标记为“Request rate”的行给出了发出 HTTP 请求的速率
以及该比率对应的时期。 在上面的例子中,请求
速率为每秒 100.0 个请求,对应于每 10.0 毫秒
要求。 只要不使用持久连接,结果如下
部分与连接部分中的结果非常相似或相同。
但是,当使用持久连接时,可以在一个
单个连接在这种情况下结果会有所不同。
标有“请求大小”的行给出了 HTTP 请求的平均大小
字节。 在上面的示例中,平均请求大小为 75 字节。
回复部分
对于简单的测量,这部分通常是最有趣的部分,因为线
标有“回复率”的标签给出了回复率的各种统计数据。 在示例中
上面,最小(``min'')回复率为每秒 98.8 次回复,平均
(``avg'') 是每秒 100 个回复,最大 (``max'') 速率是 101.2
每秒回复。 标准偏差为每秒 0.3 个回复。 号码
括在括号中的显示获得了 60 个回复率样本。 在
当下, httperf 每五秒收集一次速率样本。 获得一个
有意义的标准偏差,建议运行足够长的测试,以便在
至少获得三十个样品。 这对应于至少的测试持续时间
150秒。
标有“回复时间”的行提供了有关回复所用时间的信息
服务器响应以及收到回复所需的时间。 在示例中,它
从发送请求的第一个字节到发送请求的平均时间为 2.4 毫秒
接收回复的第一个字节。 “转移”或阅读的时间
回复太短而无法测量,因此显示为零。 这是典型的
整个回复适合单个 TCP 段。
下一行,标记为“回复大小”,包含平均大小的统计信息
答复---所有数字都以报告的字节为单位。 具体来说,该行列出了
回复标头、内容和页脚的平均长度(HTTP/1.1 使用页脚来
实现“分块”传输编码)。 为方便起见,平均总
答复中的字节数也在括号中给出。 在这个例子中,
平均头长度(``header'')为 242 字节,平均内容长度
(``content'') 是 1010 字节,并且没有页脚 (``footer'' 长度是
零)。 平均总回复长度为 1252 字节。
本节的最后一行是接收到的主要状态代码的直方图
来自服务器的回复。 主要状态代码是“百”位
完整的 HTTP 状态代码。 在示例中,所有 29,997 条回复都具有主要状态
代码为 2。很好地猜测所有状态代码都是“200 OK”,但是
直方图中的信息不够详细,无法区分状态
具有相同主要代码的代码。
杂项
本节首先概述客户端计算机上的 CPU 利用率。
在示例中,标记为“CPU 时间”的行显示花费了 94.31 秒
在用户模式(``user'')下执行,在系统中执行花费了 205.26 秒
模式(``系统''),这对应于 31.4% 的用户模式执行和 68.4%
系统执行。 总利用率为 99.9%,这是预期的,因为
httperf 是一个 CPU 猪。 显着低于 100% 的总 CPU 利用率是
表明存在干扰测试的竞争过程。
标记为“Net I/O”的行给出了平均网络吞吐量(以千字节为单位)
秒(其中 1024 千字节为 XNUMX 字节)和每秒兆位(其中 XNUMX 兆位
是 10^6 位)。 在示例中,平均网络使用量约为 129.6 KB
每秒持续。 括号中的数字表示这对应于
大约每秒 1.1 兆位。 该网络带宽是根据
在 TCP 连接上发送和接收的字节数。 换句话说,它确实
不考虑可能发生的网络标头或 TCP 重传。
错误部分
最后一部分包含有关在执行期间遇到的错误的统计信息
测试。 在示例中,标有“错误”的两行表明存在
总共三个错误并且所有三个错误都是由于服务器拒绝
接受一个连接(``connrefused'')。 每个错误计数器的描述
如下:
客户-蒂莫: 会话、连接或呼叫因故障而失败的次数
客户端超时(由 - 暂停 和 --思考超时) 选项。
套接字蒂莫: TCP 连接失败的次数,套接字级别
超时(ETIMEDOUT)。
拒绝: TCP 连接尝试失败的次数
“服务器拒绝连接”错误(ECONNREFUSED)。
连接重置: TCP 连接因 RESET 而失败的次数
服务器。 通常,当客户端尝试将数据发送到
服务器已关闭其连接端时的服务器。 新台币
服务器在尝试建立新连接时也会发送 RESETs
侦听队列已满。
fd 无效: 次数 httperf 进程已用完文件描述符。
每当此计数不为零时,测试结果就毫无意义,因为
客户端过载(请参阅“选择超时值”部分)。
附加功能: 客户端没有 TCP 端口号的次数
(EADDRNOTAVAIL)。 这个错误应该永远不会发生。 如果是这样,结果应该是
丢弃。
ftab 满: 系统的文件描述符表已满的次数。 再次,
这个错误永远不会发生。 如果是,则应丢弃结果。
其他: 发生其他类型错误的次数。 每当这
counter 非零,有必要追踪错误的真正原因。 到
协助做这件事, httperf 打印第一个未知数的错误代码 (errno)
测试运行期间发生的错误。
什么时候 --wsess or --wsesslog 被指定, httperf 而是生成和测量会话
在测试结束时打印单个调用和附加统计信息。 一个
示例输出如下所示。
时间 率 [会话/秒]: 最小 0.00 平均 0.59 最大 2.40 标准偏差 0.37 (240/450)
会议: 平均 6.45 个连接/会话
时间 一生 [s]: 123.9
时间 失败时间 [s]: 58.5
时间 长度 直方图: 4 7 4 ... 3 3 240
标有“会话速率”的行显示了最小、平均和最大速率
会话已完成(基于 5 秒的采样间隔)。 它还显示了标准
会话完成率的偏差。 括号中的数字表示有多少
会话成功以及启动了多少会话。 在上面的例子中,
最小、平均和最大会话完成率分别为 0.00、0.59 和 2.40 个会话
每秒,分别。 标准偏差为每秒 0.37 个会话和 240 个会话
450 个会话成功完成(210 个由于超时等错误而失败)。
下一行标有“Session:”,显示了一个会话的平均长度
连接。 在上面的例子中,平均需要 6.45 个连接
完成一个会话。
标记为“会话生命周期”的行给出了完成一个会话所花费的平均时间
成功的会话。 在上面的示例中,平均需要 123.9 秒。
标记为“会话失败时间”的行给出了在一次失败之前花费的平均时间
不成功的会话失败。 在上面的例子中,平均需要 58.5 秒
会话失败。
最后,标有“会话长度直方图”的行给出了
每届会议收到的答复。 在上面的例子中,4 个会话在收到后结束
完全没有回复,收到一个回复后 7 结束,依此类推(省略号表示
由于篇幅原因,本手册中省略了额外的直方图计数)。 笔记
该直方图不区分成功和失败的会话。
选择 超时 王斌金璟閣的價值觀
由于机器 httperf 运行在只有有限的可用资源集,它可以
不能承受任意高的 HTTP 负载。 例如,一个限制因素是
只有大约 60,000 个可以在任何给定时间使用的 TCP 端口号。 从那时起
大多数 UNIX 系统需要一分钟才能完全关闭 TCP 连接(离开
TIME_WAIT 状态),客户端可以承受的最大速率是每个最多 1,000 个请求
第二。
实际的可持续率往往比这低得多,因为在用完之前
TCP 端口,机器很可能用完文件描述符(一个文件描述符是
用于每个打开的 TCP 连接)。 默认情况下,HP-UX 10.20 允许打开 1,024 个文件
每个进程的描述符。 这意味着如果没有额外的预防措施, httperf 可以
可能会很快用完所有可用的文件描述符,此时它可以
不会在服务器上引起任何额外的负载。 为了避免这个问题, httperf 提供
选项 - 暂停 为与服务器的所有通信设置超时。 如果服务器
超时前没有响应,客户端认为对应
会话、连接或调用为“死”,关闭相关的 TCP 连接,并且
增加“client-timo”错误计数。 此规则的唯一例外是在
向服务器发送整个请求, httperf 允许服务器采取一些额外的
开始发送回复之前的时间。 这是为了适应需要
很长时间才能在服务器上完成。 这个额外的时间被称为“服务器认为
time'' 并且可以通过选项指定 --思考超时. 默认情况下,这个额外的想法
time 为零秒,因此服务器必须始终在分配的时间内响应
按选项 - 暂停.
超时允许 httperf 即使在服务器过载时也能维持高负载。
例如,超时为 2 秒并假设有 1,000 个文件描述符
可用,提供的负载可能高达每秒 500 个请求(实际上,
可持续负荷往往略小于理论值)。 不利的一面是,
超时人为地截断了连接生命周期分布。 因此,它是
建议选择一个尽可能大但又足够小以允许的超时值
维持所需的报价。 可以接受短至一秒的超时,
但更大的超时(5-10 秒)是可取的。
重要的是要记住,超时并不能保证客户端可以维持
特定提供的负载---还有许多其他潜在的资源瓶颈。 为了
例如,在某些情况下,客户端机器可能会耗尽 CPU 时间。 以确保
给定的测试真正测量了服务器的能力而不是客户端的能力,这是一个很好的
改变参与测试的机器数量的想法。 如果观察到的性能
保持不变,客户端机器数量不同,测试结果很可能
有效。
使用 onworks.net 服务在线使用 httperf