美文网首页
(原创)初识Apache Bench测试

(原创)初识Apache Bench测试

作者: mona_alwyn | 来源:发表于2017-12-08 00:54 被阅读0次

    Apache Bench是Apache附带的一个工具,Apache Benchmark测试简称ab测试,也叫ab压力测试,用来帮助web开发者了解所开发网站的性能。

    1.安装

    网上关于ab测试的下载、安装已经有很多帖子写的很详尽,这里就不多说。
    可以参考:
    web性能测试:apache benchmark(ab)
    使用Apache Bench对网站性能进行测试

    2.参数解析

     我这里是Windows系统,所以用cmd窗口示例
    

    打开cmd窗口,cd到Apache的bin目录下,执行"ab",它就会告诉你参数错误,并给出正确使用方法的提示

    1.png

    如图1所示,每个参数都有解释,静心读一遍差不多能弄明白,比较常用的就是前面几个参数

    -n 总的请求数
    -c 并发请求数
    -p post请求的参数文件,同时要配合 -T指定参数类型
    -u put请求的参数文件,同时要配合 -T指定参数类型
    -T 指定模拟request的headers中的Content-Type参数,比如POST请求时使用“application/x-www-form-urlencoded”类型,默认是“text/plain”
    

    懂了这几个参数就可以算是入门了,如图2所示,执行 “ab -n 10 -c 10 http://www.baidu.com/path” (path见后续说明),就是对百度做了一次总请求数10、并发10的ab压力测试了。

    2.png

    3.ab 与 abs

    如果仔细的话就会发现Apache的bin目录下除了ab.exe还有一个abs.exe
    这两个的关系就是:

    ab      只能测试使用http协议的网站
    abs    可以测试使用http或者https协议的网站
    

    使用ab测试https协议的网站会报错“SSL not compiled in; not https support”

    3.png

    只执行abs,不给参数的话,可以发现参数列表中多了-Z和-f两项,如图4所示,分别用来设置SSL的密钥算法套件和SSL协议。

    4.png

    4. 加不加/path

    之前查看博客使用Apache Bench对网站性能进行测试的时候,说是要在url后加"/path",而博客web性能测试:apache benchmark(ab)中并没有添加;
    同时,前面本机测试百度是我也要添加"/path"参数,而今天在公司测试时并没有添加;
    这样就搞得我有点困惑了。
    开始我怀疑是版本问题,因为本机是Apache2.2,而公司用的是Apache2.4;然后对比两篇博客、以及本机显示结果,发现不论Apache是哪个版本,ApacheBench的Version 都是2.3,这个在每次测试结果中都有声明、包括版权。

    然后我再想了想,得出自己的判断:

    访问page url时,要在尾部加“/path”,表明测试访问的是页面内容;
    访问api url时,不用加,表明测试访问的是数据接口。
    

    如果判断有误,希望指正!

    5. POST 请求的3种数据格式的参数模拟

    大家知道POST请求的数据有如下3种传输格式

    application/x-www-form-urlencoded
    multipart/form-data
    application/json
    
    • 对于“application/x-www-form-urlencoded”格式网上也比较多,比如ab 发送post请求 测试API性能这篇博客就实现了,并且说明了由于占位符的原因要添加冗余参数如图5
    5.png 6.png
    • 对于“application/json”这种格式,网上实现的比较少,甚至有人疑问是否不支持这种数据格式的POST请求测试。

    我今天在公司恰好用的是这种格式,不知道是不是和文件类型有关,我使用的参数文件是json文件、而不是txt文件,如图7所示,命令为:

    abs -n 10 -c 10 -p accdetect_ab_test.json -T application/json "https://x.x.com/task"
    
    7.png
    • 不论哪种格式,ab测试都只能使用同一组参数进行重复请求,若想对不同参数组合进行遍历测试,需要另谋出路。
    1. 测试结果分析

    从前面对百度测试截图也可以看到返回的数据有很多,我们最主要关心的就是以下三个:

    Requests pre second          每秒响应请求次数
    Time per request                 用户平均等待时间(一次并发全部完成的耗时)
    Time per request                 请求平均处理时间(并发内单个请求的耗时,1 / Requests pre second )
    

    贴上今天在测试服务器上对将上线的爬虫系统做的小测试,
    分别是POST提交异步任务总数10并发10(图8)、GET查询任务结果总数10000并发100(图9),测试结果显示单机部署的性能数据不尽人意,希望生产环境的集群化部署会有更好的性能表现。

    8.png 9.png

    参考

    web性能测试:apache benchmark(ab)
    使用Apache Bench对网站性能进行测试
    ab 发送post请求 测试API性能

    相关文章

      网友评论

          本文标题:(原创)初识Apache Bench测试

          本文链接:https://www.haomeiwen.com/subject/pqhsixtx.html