web性能测试工具——http_load
- http_load是一款基于Linux平台的web服务器性能测试工具,用于测试web服务器的吞吐量与负载,web页面的性能。
-
http_load是基于linux、unix平台的一种性能测工具
-
它以并行复用的方式运行,用以测试web服务器的吞吐量与负载,测试web页面的性能
-
但是它不同于大多数压力测试工具,它可以以一个单一的进程运行,一般不会把客户机搞死
-
还可以测试HTTPS类的网站请求
wget http://www.acme.com/software/http_load/http_load-12mar2006.tar.gz
tar xzvf http_load-12mar2006.tar.gz
cd http_load-12mar2006
make &make install
可能会出现以下错误:
解决依赖包 yum install -y gcc*
解决方法: mkdir /usr/local/man
http_load的使用
建立URL集合文件
vim url.txt #我的博客地址网站 http://192.168.31.66:8686/upload/
使用方法: -parallel 简写-p :含义是并发的用户进程数。 -fetches 简写-f :含义是总计的访问次数 -rate 简写-p :含义是每秒的访问频率 -seconds简写-s :含义是总计的访问时间
-
只要使用http_load命令,-parallel或者-rate必须填一个
-
只要使用http_load命令,-fetche或者-seconds必须填一个
[root@MiWiFi-R1CM-srv ~]# http_load -rate 5 -seconds 10 url.txt http://192.168.31.66:8686/upload/: byte count wrong 49 fetches, 1 max parallel, 659443 bytes, in 10.0001 seconds 13458 mean bytes/connection 4.89996 fetches/sec, 65943.8 bytes/sec msecs/connect: 1.24116 mean, 4.237 max, 0.361 min msecs/first-response: 41.323 mean, 53.493 max, 27.973 min 1 bad byte counts HTTP response codes: code 200 -- 49 执行了一个持续时间10秒的测试,每秒的频率为5。
[root@MiWiFi-R1CM-srv ~]# http_load -p 10 -f 5000 url.txt 5000 fetches, 10 max parallel, 6.7295e+07 bytes, in 137.336 seconds 13459 mean bytes/connection 36.4071 fetches/sec, 490003 bytes/sec msecs/connect: 0.347501 mean, 4.285 max, 0.11 min msecs/first-response: 271.953 mean, 455.505 max, 79.432 min HTTP response codes: code 200 -- 5000
执行了一个总访问次数为5000 并发进程数为10的测试
结果解释
5000 fetches, 10 max parallel, 6.7295e+07 bytes, in 137.336 seconds 说明在上面的测试中运行了5000个请求,最大的并发进程数是10,总计传输的数据是 6.7295e+07bytes,运行的时间是 137.336 13459 mean bytes/connection 说明每一连接平均传输的数据量6.7295e+07/5000=13459 36.4071 fetches/sec, 490003 bytes/sec 说明每秒的响应请求为36.4071 ,每秒传递的数据为490003 bytes/sec msecs/connect: 0.347501 mean, 4.285 max, 0.11 min 说明每连接的平均响应时间是0.347501msecs,最大的响应时间4.285 msecs,最小的响应时间0.11 msecs msecs/first-response: 271.953 mean, 455.505 max, 79.432 min 每秒响应用户数和response time,每连接响应用户时间 HTTP response codes: code 200 -- 5000 明打开响应页面的类型,如果403的类型过多,那可能要注意是否系统遇到了瓶颈。 特殊说明:这里,我们一般会关注到的指标是fetches/sec、msecs/connect
可能出现的输出错误 1)byte count wrong http_load在处理时会去关注每次访问同一个URL返回结果(即字节数)是否一致,若不一致就会抛出
byte count wrong 2)too many open files 系统限制的open files太小,ulimit -n 修改open files值即可 3)无法发送大请求 (请求长度>600个字符) 默认接受请求的buf大小 http_load.c 4)Cannot assign requested address 客户端频繁的连服务器,由于每次连接都在很短的时间内结束,导致很多的TIME_WAIT,以至于用光了可用
的端口号,所以新的连接没办法绑定端口,所以要改客户端机器的配置, 在sysctl.conf里加: net.ipv4.tcp_tw_reuse = 1 表示开启重用。允许将TIME-WAIT sockets重新用于新的TCP连接,
默认为0,表示关闭; net.ipv4.tcp_timestamps=1 开启对于TCP时间戳的支持,若该项设置为0,则下面一项设置不起作用 net.ipv4.tcp_tw_recycle=1 表示开启TCP连接中TIME-WAIT sockets的快速回收