参考文章1
https://www.cnblogs.com/xienb/p/9708724.html
一、安装
1.下载地址:http://www.acme.com/software/http_load/http_load-09Mar2016.tar.gz
2.解压后进入目录,执行make & make install命令
3.查看安装结果,输入http_load不报错即成功
二、使用
1.新建一个.txt文件(vim urllist.txt),用来存储目标URL(每个URL占一行)
2.输入命令 http_load -p 5 -s 15 urllist.txt
三、结果分析:
1.1724 fetches, 5 max parallel, 3.99564e+06 bytes, in 15 seconds
说明在上面的测试中运行了1724个请求,最大的并发进程数是5,总计传输的数据是3.99564e+06 bytes, 运行的时间是15秒
2.2317.66 mean bytes/connection
说明每一连接平均传输的数据量2317.66
3.114.933 fetches/sec, 266376 bytes/sec
说明每秒的响应请求为114.933,每秒传递的数据为266376 bytes/sec
4.msecs/connect: 17.6778 mean, 74.314 max, 9.921 min
说明每连接的平均响应时间是17.6778毫秒,最大响应时间是74.314毫秒,最小的响应时间9.921毫秒
5.msecs/first-response: 18.525 mean, 399.071 max, 9.795 min
首次平均响应时间18.525msecs, 最大耗时399.071 msecs, 最小耗时9.795msecs
6.HTTP response codes:
code 200 -- 337
code 400 -- 1387
返回200的有337次,返回400的有1387次
四、参数解析:
-parallel 简写-p :含义是并发的用户进程数。
-fetches 简写-f :含义是总计的访问次数
-rate 简写-r :含义是每秒的访问频率
-seconds简写-s :含义是总计的访问时间
五、https配置
1.修改配置,vim Makefile
修改以下几个配置项:
SSL_TREE 指向本机openssl安装目录
2.由于http_load自身https的算法问题,发送压力测试请求的client机器成为了瓶颈,无法体现真实的https数据。所以又采用了httperf进行测试。
用法详见:http://blog.csdn.net/LongMarch12/archive/2011/05/26/6448346.aspx
http://www.softwareqatest.com/qatweb1.html#LOAD
参考文章2
https://www.cnblogs.com/cqingt/p/6043126.html
http_load压力测试
http_load是基于linux平台的性能测试工具,它体积非常小,仅100KB。它以并行复用的方式运行,可以测试web服务器的吞吐量与负载。
一、安装http_load
A、进入/usr/local目录下创建man文件夹,并赋予权限;
[root@localhost ~]#cd /usr/local
[root@localhost local]#mkdir man
[root@localhost local]#chmod 777 man
B、进man文件夹中,下载http_load安装包;
[root@localhost local]#cd man
[root@localhost man]# wget http://acme.com/software/http_load/http_load-12mar2006.tar.gz
C、解压、并安装http_load-12mar2006.tar.gz包;
[root@localhost man]# tar zxvf http_load-12mar2006.tar.gz
[root@localhost man]# cd http_load-12mar2006
[root@localhost http_load-12mar2006]# make
[root@localhost http_load-12mar2006]# sudo make install
二、使用方法
1、每次使用前,需要先切换到http_load目录下
cd http_load-12mar2006
2、了解参数和文件
参数 | 全称 | 含义 |
-p | -parallel | 并发的用户进程数。 |
-f | -fetches | 总计的访问次数 |
-r | -rate | 含义是每秒的访问频率 |
-s | -seconds | 连续的访问时间 |
url | 网站连接地址或url文件 |
其中,“url”是http_load-12mar2006目录下其中一个文件,在使用前,先在http_load-12mar2006新建一个空白的名为urls.txt的文件,使用vi命令新建。urls.txt文件,每个URL一行,且不能有空行,否则报错。
http_load使用方式:
http_load -parallel 100 -fetches 10000
#100个并发执行10000次
http_load -parallel 100 -seconds 3600
#100个并发执行1小时
http_load -rate 100 -fetches 10000
#每秒100个请求频率,请求10000次
http_load -rate 100 -seconds 3600
#每秒100个请求频率执行1小时
3、开始测试
结果分析:
1.10 fetches, 10 max parallel, 20480bytes, in 0.052394 seconds
说明在上面的测试中运行了10个请求,最大的并发进程数是10,总计传输的数据是20480bytes,运行的时间是0.052394秒
2.2048 mean bytes/connection
说明每一连接平均传输的数据量2048/10(fetches)=204.8
3.190.862 fetches/sec, 390884 bytes/sec
说明每秒的响应请求为190.862,每秒传递的数据为390884 bytes/sec
4.msecs/connect: 1.4946 mean, 1.649 max, 1.353 min
说明每连接的平均响应时间是1.4946 毫秒,最大的响应时间1.649 毫秒,最小的响应时间1.353 毫秒
5.msecs/first-response: 26.9952 mean, 48.305 max,7.454 min
6、HTTP response codes: code 200 -- 10
每秒响应用户数和response time
每连接响应用户时间
结果分析:
1.49 fetches, 1 max parallel, 100352bytes, in 10 seconds
说明在上面的测试中运行了49个请求,最大的并发进程数是1,总计传输的数据是100352bytes,运行的时间是 10秒
2.2048 mean bytes/connection
说明每一连接平均传输的数据量100352/49(fetches)=2048
3.4.89999 fetches/sec, 10035.2 bytes/sec
说明每秒的响应请求为4.89999,每秒传递的数据为10035.2 bytes/sec
4.msecs/connect:0.284837 mean, 0.639 max, 0.163 min
说明每连接的平均响应时间是0.284837 毫秒,最大的响应时间0.639 毫秒,最小的响应时间0.163 毫秒
5.msecs/first-response: 4.91612 mean, 38.309 max, 3.393 min
6、HTTP response codes: code 200 -- 49
说明:
一般使用http_load做压力测试时,主要会考虑这“fetches/sec、msecs/connect ”两个项的结果,即服务器每秒能够响应的查询次数来衡量性能指标。
参考文章3
https://blog.csdn.net/taoy86/article/details/80537714
http_load:以并行复用的方式运行,用以测试webx服务器的吞吐量与负载。但是它不同于大多数压力测试工具,它可以以一个单一的进程运行,一般不会把客户机高斯,还可以测试https类的网站请求。
http_load用法:
usage: ./http_load [-checksum] [-throttle] [-proxy host:port] [-verbose] [-timeout secs] [-sip sip_file]
-parallel N | -rate N [-jitter]
-fetches N | -seconds N
-cmd get(|post)
url_file
One start specifier, either -parallel or-rate, is required.
One start specifier, either -cmd get or-cmd post, is required.
One end specifier, either -fetches or-seconds, is required.
注:
常用方式:
./http_load –r 200 –s 900 http.txt 2>2.log 1>1.txt (-r 模拟qps)
./http_load –p 200 –s 900 http.txt 2>2.log 1>1.tx t(-p 并发数)
模拟qps200,连续压测15分钟,错误日志输出到2.log文件中,最终的压测结果输出到1.txt文件中。
结果分析:
1. 10799998 fetches, 1020 max parallel, 3.17224e+10 bytes, in 43200 seconds//说明测试中运行了10799998个请求,最大的并发进程数是1020,总计传输的数据是3.17224e+10 bytes,运行的时间是432000秒
2. 2937.26 mean bytes/connection//说明每一连接平均传输的数据量是(3.17224e+10)/10799998=2937.26
3. 250 fetches/sec, 734315 bytes/sec//说明每秒的响应请求为250,每秒传递的数据为734315 bytes
4. msecs/connect: 0.194116 mean, 30.207 max, 0.125 min//说明每链接的平均响应时间是0.194116 msecs,最大的响应时间是30.207msecs,最小的响应时间是0.125 msecs
5. msecs/first-response: 22.9355 mean, 59996.9 max, 0.07 min//说明每个请求的平均响应时间是22.9355msecs,最大的响应时间是30.207msecs,最小的响应时间是0.07msecs。
6. 23088 timeouts//运行中有23088个请求超时
7. 27503 bad byte counts//同一个http请求,不一样的结果的个数。
8. HTTP response codes://说明打开响应页面的类型,如果403的类型过多,那可能要注意是否系统遇到了瓶颈。
code 200 – 10772495
这里主要看的参数有fetches/sec,msecs/first-response。要统计timeout的比例:timeouts/ fetches。这里的超时比例就是:23088/10799998=0.213%。
同时还要服务器端的cpu,mem和load。通常load数/cpu个数<=1是比较好的。
关于超时:http_load默认的超时时间为10s,这里的超时可以自己定义,但必须是int整数,不能是浮点数。
关于每秒种的请求数-r,如果pd有给期望的pv或uv,那么可大概算出qps,一般
qps=pv/(60×60×6)一般,每天按照6个小时算。如果没有期望值和参考值,就要去一个个试,看r为多少时,系统的性能达到最大值,试出一个临界值。
注:r就代表qps,即结果中的参数fetches/sec值。如果r太大时,系统可能会压挂或者不稳定,此时qps跟r的差别较大,压测结果不具备参考性,要适当降低r值。
cat urls.txt | awk '{print "http://172.27.13.17:8900/test?id="$1}' > urls2.txt