测试工具之http接口性能测试工具
白羽 2019-01-10 来源 :网络 阅读 1783 评论 0

摘要:本文将带你了解测试工具http接口性能测试工具,希望本文对大家学测试工具有所帮助。

    本文将带你了解测试工具http接口性能测试工具,希望本文对大家学测试工具有所帮助。



   

  一、   http_load

  程序非常小,解压后也不到100K。http_load以并行复用的方式运行,用以测试web服务器的吞吐量与负载。

  但是它不同于大多数压力测试工具,它可以以一个单一的进程运行,一般不会把客户机搞死。还可以测试HTTPS类的网站请求。

  安装很简单:

  tar   zxvf http_load-12mar2006.tar.gz

  cd   http_load-12mar2006

  make

  make   install

   

  命令格式:http_load   -p 并发访问进程数 -s 访问时间   需要访问的URL文件

  参数其实可以自由组合,参数之间的选择并没有什么限制。比如你写成http_load   -parallel 5 -seconds 300   urls.txt也是可以的。我们把参数给大家简单说明一下:

  -parallel 简写-p   :含义是并发的用户进程数。

  -fetches 简写-f   :含义是总计的访问次数。

  -rate    简写-p   :含义是每秒的访问频率。

  -seconds简写-s   :含义是总计的访问时间

   

  准备URL文件:urllist.txt,文件格式是每行一个URL,URL最好超过50-100个测试效果比较好。文件格式如下:

  //127.0.0.1:80/getuserinfo?uid=1

  //127.0.0.1:80/getgroupinfo?gid=1

  ...   ...

   

  我们来看运行一条命令来看看它的返回结果   命令:% ./http_load -rate 5 -seconds 10   urls说明执行了一个持续时间10秒的测试,每秒的频率为5。

  49   fetches, 2 max parallel, 289884 bytes, in 10.0148 seconds5916 mean   bytes/connection4.89274

  fetches/sec, 28945.5   bytes/secmsecs/connect: 28.8932 mean, 44.243 max, 24.488   minmsecs/first

  -response: 63.5362 mean, 81.624 max,   57.803 minHTTP response codes: code 200 —   49

   

  结果分析:

  1.49   fetches, 2 max parallel, 289884 bytes, in 10.0148 seconds   说明在上面的测试中运行了49个请求,最大的并发进程数是2,总计传输的数据是289884bytes,运行的时间是10.0148秒

  2.5916   mean   bytes/connection说明每一连接平均传输的数据量289884/49=5916

  3.4.89274   fetches/sec, 28945.5 bytes/sec 说明每秒的响应请求为4.89274,每秒传递的数据为28945.5   bytes/sec

  4.msecs/connect: 28.8932 mean, 44.243 max,   24.488 min说明每连接的平均响应时间是28.8932 msecs,最大的响应时间44.243 msecs,最小的响应时间24.488   msecs

  5.msecs/first-response: 63.5362 mean, 81.624   max, 57.803 min

  6、HTTP response codes: code 200 —   49     说明打开响应页面的类型,如果403的类型过多,那可能要注意是否系统遇到了瓶颈。

   

  特殊说明:   测试结果中主要的指标是 fetches/sec、msecs/connect   这个选项,即服务器每秒能够响应的查询次数,

  用这个指标来衡量性能。似乎比   apache的ab准确率要高一些,也更有说服力一些。 Qpt-每秒响应用户数和response time,每连接响应用户时间。   测试的结果主要也是看这两个值。当然仅有这两个指标并不能完成对性能的分析,我们还需要对服务器的cpu、men进行分析,才能得出结论。

  二、wrk

  wrk   是一个很简单的 http 性能测试工具,也可以叫做   http benchmark工具。只有一个命令行,就能做很多基本的 http 性能测试。wrk 是开源的,代码在 github   上

  首先要说的一点是: wrk 只能运行在 Unix 类的系统上. 比如 linux, mac,   solaris 等. 也只能在这些系统上编译. wrk 的一个很好的特性就是能用很少的线程压出很大的并发量. 原因是它使用了一些操作系统特定的高性能   io 机制, 比如 select, epoll, kqueue 等. 其实它是复用了 redis 的 ae 异步事件驱动框架.    确切的说 ae 事件驱动框架并不是 redis 发明的, 它来至于 Tcl的解释器 jim, 这个小巧高效的框架, 因为被 redis   采用而更多的被大家所熟知.

  要用 wrk, 首先要编译 wrk. 你的机器上需要已经安装了 git 和基本的c编译环境.   wrk 本身是用 c 写的. 代码很少. 并且没有使用很多第三方库.    所以编译基本不会遇到什么问题.

  1、下载编译:

  git   clone https://github.com/wg/wrk.git

  cd   wrk

  make

   

  就   ok了. make 成功以后在目录下有一个 wrk 文件. 就是它了. 你可以把这个文件复制到其他目录, 比如 bin 目录.   或者就这个目录下执行.

  如果编译过程中出现:

  src/wrk.h:11:25:   fatal error: openssl/ssl.h: No such file or   directory

  #include   <openssl/ssl.h>    是因为系统中没有安装openssl的库.

  sudo apt-get install libssl-dev

  或   sudo yum install    openssl-devel

   

  2、测试运行:

  我们先来做一个简单的性能测试:

  ./wrk -t10   -c10 -d10s -T10s --latency   '//127.0.0.1:7001/login/im?appid=1&udata=2'     

     30秒钟结束以后可以看到如下输出:

   

  核数的2到4倍足够了.   多了反而因为线程切换过多造成效率降低. 因为 wrk 不是使用每个连接一个线程的模型, 而是通过异步网络 io 提升并发量.   所以网络通信不会阻塞线程执行.

  这也是 wrk 可以用很少的线程模拟大量网路连接的原因.   而现在很多性能工具并没有采用这种方式, 而是采用提高线程数来实现高并发. 所以并发量一旦设的很高, 测试机自身压力就很大.   测试效果反而下降.

  3、脚本扩展:

  我们通过一些测试场景在看看怎么使用   lua 脚本.

  POST + header   + body.    

  首先创建一个   post.lua 的文件:

  wrk.method   = "POST"

  wrk.body   =   "foo=bar&baz=quux"

  wrk.headers["Content-Type"]   =   "application/x-www-form-urlencoded"

   

  就这三行就可以了,   当然 headers 可以加入任意多的内容. 然后执行:

  wrk -t12 -c100   -d30s -T30s --script=post.lua --latency     '//127.0.0.1:7001/login/im?appid=1&udata=2'    


     


   
                   

本文由职坐标整理并发布,希望对同学们有所帮助。了解更多详情请关注职坐标软件测试之测试工具频道!


本文由 @白羽 发布于职坐标。未经许可,禁止转载。
喜欢 | 0 不喜欢 | 0
看完这篇文章有何感觉?已经有0人表态,0%的人喜欢 快给朋友分享吧~
评论(0)
后参与评论

您输入的评论内容中包含违禁敏感词

我知道了

助您圆梦职场 匹配合适岗位
验证码手机号,获得海同独家IT培训资料
选择就业方向:
人工智能物联网
大数据开发/分析
人工智能Python
Java全栈开发
WEB前端+H5

请输入正确的手机号码

请输入正确的验证码

获取验证码

您今天的短信下发次数太多了,明天再试试吧!

提交

我们会在第一时间安排职业规划师联系您!

您也可以联系我们的职业规划师咨询:

小职老师的微信号:z_zhizuobiao
小职老师的微信号:z_zhizuobiao

版权所有 职坐标-一站式IT培训就业服务领导者 沪ICP备13042190号-4
上海海同信息科技有限公司 Copyright ©2015 www.zhizuobiao.com,All Rights Reserved.
 沪公网安备 31011502005948号    

©2015 www.zhizuobiao.com All Rights Reserved

208小时内训课程