Apache Bench 到底应该怎么用?

吐槽:

        先来吐个槽,交代一下故事背景,楼主接手这个服务端开发刚刚完成了一个服务端项目,需要做并发测试,之前也没有怎么接触过这块的东西,请教大哥得到两个字母:ab,科普了一下,大致了解到这是一个神器。我需要对一个多媒体上传服务做并发测试,按照国内各大论坛的搞法没有一个交代清楚的,翻来翻去也基本都一样,不得不吐槽一下国内科技圈还真不大,翻来覆去都是抄来抄去。后面在大stackoverflow上面找到了关键问题点。

    关键帖子 (最近遇到的多数问题,都是可以在stackoverflow这个论坛上面找到问题的根本所在,比国内的各大网站论坛都要好使)

        解释一下问题的根本性原因,如果你的请求是post的 multipart的请求,使用ab的时候,-p参数后面跟的不是国内搜到论坛上面说的那个简单的,也不是简单的需要上传的文件,而是符合multipart报文格式的文件,至于什么是multipart报文格式,google一下吧(抵制百度,人人有责)。

下面我分别介绍使用ab做的几种不同请求。

1:ab  -p    post多媒体文件

 指令格式:

    ab -n 50000 -c 100 -p /home/hehr/桌面/1234  -T "multipart/form-data;boundary=--------------------64c101aedbb9856a"   127.0.0.1/m

    -n :请求数据(50000次请求)

    -c :请求并发数(100个并发)

    -p :后面就是我自己编辑过符合multipart的文件。

    -T :请求头文件信息,科普一下把,multipart/form-data 指明multipart请求,boundary后面一长串就是multipart分段格式。

 文件:(我本想直接上传这个文件的,奈何这个开源中国的博客确实有点挫

----------------------64c101aedbb9856a

Content-Disposition: form-data; name="audio";filename="1462931607252_CC.wav";

Conten-Type: application/octet-stream

 

Hello,word!

----------------------64c101aedbb9856a--

 

这样的文件格式就是符合multipart报文格式的文件格式,如果你要post一个文件,使用vim -b 打开你的文件,替换上面的Hello,word!,这样就可以实现上传了。

2:ab  -p    post简单的body信息

 指令格式:

    ab -n 50000 -c 100 -p /home/hehr/桌面/4321 -T 'application/x-www-form-urlencoded'  127.0.0.1/m/xxx

    -n

    -c 同上

    -p 这次后面跟随的文件内容如下:

 deviceId=12324333&l=39&ln=117&addr=米克斯量贩KTV&coordType=wgs84 

 也就是一个文件,里面跟随的是你的body信息了

 -T 指明头文件信息 application/x-www-form-urlencoded

3:ab 简单的get请求

 指令格式:

ab -n 50000 -c 100  127.0.0.1/m/88qI8v/xxxx

这么简单的请求当然很easy了。

 

结果分析:(楼主拿出来一个我比较满意的结果出来)

This is ApacheBench, Version 2.3 <$Revision: 1706008 $>
Copyright 1996 Adam Twiss, Zeus Technology Ltd, http://www.zeustech.net/
Licensed to The Apache Software Foundation, http://www.apache.org/

Benchmarking 127.0.0.1 (be patient)
Completed 5000 requests
Completed 10000 requests
Completed 15000 requests
Completed 20000 requests
Completed 25000 requests
Completed 30000 requests
Completed 35000 requests
Completed 40000 requests
Completed 45000 requests
Completed 50000 requests
Finished 50000 requests


Server Software:        openresty/1.9.7.1
Server Hostname:        127.0.0.1
Server Port:            6699

Document Path:         不给看~~~
Document Length:        3304 bytes

Concurrency Level:      100
Time taken for tests:   1.181 seconds
Complete requests:      50000
Failed requests:        0
Total transferred:      177150000 bytes
HTML transferred:       165200000 bytes
Requests per second:    42347.11 [#/sec] (mean)
Time per request:       2.361 [ms] (mean)
Time per request:       0.024 [ms] (mean, across all concurrent requests)
Transfer rate:          146519.36 [Kbytes/sec] received

Connection Times (ms)
              min  mean[+/-sd] median   max
Connect:        0    0   0.0      0       1
Processing:     0    2   0.1      2       3
Waiting:        0    2   0.1      2       3
Total:          2    2   0.1      2       3

Percentage of the requests served within a certain time (ms)
  50%      2
  66%      2
  75%      2
  80%      2
  90%      3
  95%      3
  98%      3
  99%      3
 100%      3 (longest request)

 

需要重点注的点我都结果标记出来了。

Failed requests:首先就应该关注失败的请求,在高并发情况下可以覆盖到平时测试不易覆盖的地方,出现了失败,一定赶紧去追查日志。

Requests per second: 一秒钟的处理数量,这个基本能衡量你的程序处理性能了,可以通过这个算一下你的程序一天的访问量吧,一天按照3个小时高峰期算:3*60*60*Requests per second  看看你的程序一天能否支撑千万级别的访问量。

Time per request (上):每次并发请求时间(所有并发)

Time per request(下):每一请求时间(并发平均)   

 

总结:一个好的程序猿一定是需要把工具用的比较流畅的程序猿。之前我并不怎么看中工具,我觉得程序猿最重要的应该是思想,解决问题的思想,面向对象的思维模式神马的。工作一年下来,我发现工具其实挺重要的,因为用好一个工具可以帮你节约很多时间,你才有充分的时间去思考和写代码。其实,能够安安静静的写代码,是一件幸福的事。所以,工具还是挺重要的。

 

            

转载于:https://my.oschina.net/u/2278066/blog/689130

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值