http_load
简介
http_load
以并行复用的方式运行,用以测试Web服务器的吞吐量与负载。但是它不同于大多数压力测试工具,其可以以一个单一的进程运行,这样就不会把客户机搞死,还可以测试HTTPS类的网站请求。关于http_load
的详细信息参见这里,点击这里下载。
安装
# tar xzvf http_load-09Mar2016.tar.gz
# cd http_load-09Mar2016
# make && make install
- 1
- 2
- 3
测试
http_load
的命令参数比较简单,直接在命令行下执行http_load
就能看到,具体如下:
-parallel简写-p:并发的用户进程数。
-fetches简写-f:总计的访问次数
-rate简写-r:每秒的访问频率
-seconds简写-s:总计的访问时间
http_load的命令格式也比较简单,各参数可以自由组合,常用格式如下:
$ http_load -p 并发访问进程数 -f 访问总数 需要访问的URL文件
$ http_load -r 每秒访问频率 -s 访问时间 需要访问的URL文件
- 1
- 2
通常:参数pf一起使用,参数rs一起使用。
这里以某网页测试为例说明之:
$ vi test.url
http://www.xxxxx.com
- 1
- 2
当然上面存放请求URL的文件中,可以存放多个URL,每行一个。
$ http_load -p 5 -s 300 test.url
11694 fetches, 5 max parallel, 5.6872e+08 bytes, in 300 seconds
48633.5 mean bytes/connection
38.98 fetches/sec, 1.89573e+06 bytes/sec
msecs/connect: 10.476 mean, 9008.81 max, 5.002 min
msecs/first-response: 36.5928 mean, 5383.94 max, 16.614 min
7 timeouts
10428 bad byte counts
HTTP response codes:
code 200 -- 7552
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
上面命令表示:5个并发进程,持续300秒请求某网页。
#http_load -r 5 -s 300 test.url
1499 fetches, 5 max parallel, 9.49031e+07 bytes, in 300.017 seconds
63310.9 mean bytes/connection
4.99638 fetches/sec, 316326 bytes/sec
msecs/connect: 21.5961 mean, 3020.17 max, 16.782 min
msecs/first-response: 36.6554 mean, 61.907 max, 17.919 min
1261 bad byte counts
HTTP response codes:
code 200 -- 1261
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
上面命令表示:每秒频率为5条请求,持续300秒请求某网页。
结果分析如下:
(1)1499 fetches, 5 max parallel, 9.49031e+07 bytes, in 300.017 seconds
说明在上面的测试中运行了1499个请求,最大的并发进程数是5,总计传输的数据是9.49031e+07 bytes,运行的时间是300.017秒
(2)63310.9 mean bytes/connection
说明每个连接平均传输的数据量63310.9/1499=42.24
(3)4.99638 fetches/sec, 316326 bytes/sec
说明每秒的响应请求为4.99638,每秒传递的数据为316326 bytes/sec
(4)msecs/connect: 21.5961 mean, 3020.17 max, 16.782 min
说明每个连接的平均响应时间是21.5961 msecs,最大的响应时间3020.17 msecs,最小的响应时间16.782 msecs
(5)HTTP response codes: code 200 — 1261
说明打开响应页面的类型,如果403的类型过多,那可能要注意是否系统遇到了瓶颈
特殊说明:测试结果中主要的指标是fetches/sec和msecs/connect,即服务器每秒能够响应的请求次数和每个连接的平均响应时间。当然仅有这两个指标并不能完成对性能的分析,这两个指标主要反映的是QPS和RT。此外,还需要对服务器的CPU(idle和load)、Mem进行分析,才能得出结论。
需要注意的是:http_load请求方式默认为GET方式,不支持POST方式。