Apache ab 压力测试

ab命令原理

Apache的ab命令模拟多线程并发请求,测试服务器负载压力,也可以测试nginx、lighthttp、IIS等其它Web服务器的压力。
ab命令对发出负载的计算机要求很低,既不会占用很多CPU,也不会占用太多的内存,但却会给目标服务器造成巨大的负载,使用时设置参数需要谨慎,由小到大,一步一个脚印往上递增。否则一次目标服务器承受过多负载,会造成目标服务器直接因内存耗光而宕机。
在带宽不足的情况下,最好是本机进行测试,建议使用内网的另一台或者多台服务器通过内网进行测试,这样得出的数据,准确度会高很多。远程对web服务器进行压力测试,往往效果不理想(因为网络延时过大或带宽不足)

官方文档:
http://httpd.apache.org/docs/current/programs/ab.html

Linux 安装 ab 命令

yum -y install httpd-tools

查看ab版本

ab -v

常用参数详解

-n:总请求次数(最小默认为1)

-c:并发次数(模拟多少客户端,最小默认为1且不能大于总请求次数,如:10个请求,10个并发,实际就是1人请求1次)

-p:post参数文档路径(-p和-T参数要配合使用)

-T:header头内容类型(此处切记是大写英文字母T)

后面直接写请求路径即可:http://www.test.com/xxx/xxx.html

无参

ab -n 100 -c 50 'http://10.43.xx.xx:8080/TV/api/getPayQrcode.do'

(-n发出100个请求,-c模拟50并发,相当50人同时访问,-T 指定)

其中-n代表请求数,-c代表并发数

模拟get请求

ab -n 1000 -c 50 'http://10.43.xx.xx:8080/TV/api/getPayQrcode.do?rechargeOrderId=365'
 请求次数1000 并发 50 

This is ApacheBench, Version 2.3 <$Revision: 1430300 $>

Copyright 1996 Adam Twiss, Zeus Technology Ltd, [http://www.zeustech.net/](http://www.zeustech.net/)

Licensed to The Apache Software Foundation, [http://www.apache.org/](http://www.apache.org/)

Benchmarking 10.43.124.145 (be patient)

Completed 100 requests

Completed 200 requests

Completed 300 requests

Completed 400 requests

Completed 500 requests

Completed 600 requests

Completed 700 requests

Completed 800 requests

Completed 900 requests

Completed 1000 requests

Finished 1000 requests

Server Software:        

Server Hostname:        10.43.xx.xx

Server Port:            8080

Document Path:          /TV/getPayQrcode.do?rechargeOrderId=365&channel=WX

Document Length:        7080 bytes

Concurrency Level:      50   并发数

Time taken for tests:   160.645 seconds   一共使用了160.645s  

Complete requests:      1000  请求的次数

Failed requests:        998  失败的请求    

   (Connect: 0, Receive: 0, Length: 998, Exceptions: 0)

Write errors:           0

Total transferred:      6945667 bytes

HTML transferred:       6872667 bytes

Requests per second:    6.22 [#/sec] (mean)  吞吐率

Time per request:       8032.249 [ms] (mean) 用户平均请求等待时间

Time per request:       160.645 [ms] (mean, across all concurrent requests) 服务器平均请求处理时间

Transfer rate:          42.22 [Kbytes/sec] received

Connection Times (ms)

              min  mean[+/-sd] median   max

Connect:        0    1   0.7      0       5

Processing:   571 7773 2815.0   8189   15428

Waiting:      566 7772 2815.0   8189   15428

Total:        571 7773 2814.7   8189   15428

WARNING: The median and mean for the initial connection time are not within a normal deviation

        These results are probably not that reliable.

Percentage of the requests served within a certain time (ms)

  50%   8189

  66%   8863

  75%   9373

  80%   9816

  90%  11219

  95%  11914

  98%  12621

  99%  14548

100%  15428 (longest request)

测试结果

主要看三个数据

Requests per second:吞吐率

服务器并发处理能力的量化描述,单位是reqs/s,指的是某个并发用户数下单位时间内处理的请求数。某个并发用户数下单位时间内能处理的最大请求数,称之为最大吞吐率。
计算公式:总请求数 / 处理完成这些请求数所花费的时间,即
Request per second = Complete requests / Time taken for tests

Time per request:上面的是用户平均请求等待时间

处理完成所有请求数所花费的时间/ (总请求数 / 并发用户数),即
Time per request = Time taken for tests /( Complete requests / Concurrency Level)

Time per request:下面的是服务器平均请求处理时间

处理完成所有请求数所花费的时间 / 总请求数,即
Time taken for / testsComplete requests
可以看到,它是吞吐率的倒数。
同时,它也=用户平均请求等待时间/并发用户数,即
Time per request / Concurrency Level

可以根据固定并发数,增加请求次数或者固定请求次数,调整并发数来查看上面三个值得变化来调优服务器

模拟post请求

方式1

新建一个文件crate_order.txt,里面放POST参数(承载POST参数的文件,不依赖于后缀名。可跨平台)
POST参数文本内容如下rechargeOrderId=365&city=SGS&channel=WX

ab -n 500 -c 500 -p create_order.txt -T application/x-www-form-urlencoded 'http://10.43.xx.xx:0000/api/create_order'

[注意] -p是参数文件路径,-T是大写英文字母,post表单格式为:application/x-www-form-urlencoded

方式2:json格式文件[没测成功]
ab -n 50 -c 50 -p create_order.json -T 'application/json'   'http://10.43.xx.xx:0000/api/create_order'

ab压测参数化,可以同时执行多条[未测试]

参考:https://blog.csdn.net/qq_23668615/article/details/50801497

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 205,386评论 6 479
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 87,939评论 2 381
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 151,851评论 0 341
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,953评论 1 278
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,971评论 5 369
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,784评论 1 283
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 38,126评论 3 399
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,765评论 0 258
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 43,148评论 1 300
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,744评论 2 323
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,858评论 1 333
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,479评论 4 322
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 39,080评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 30,053评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,278评论 1 260
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 45,245评论 2 352
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,590评论 2 343