您的位置:首页 > 运维架构 > Apache

优化之路-----Apache-ab并发负载压力测试的初接触

2017-06-01 15:19 561 查看
上一篇文章已经说道,最近接到了优化接口与sql的任务,接触了Druid,对sql进行监控,现在开始进行接口的压力测试,这里使用Apache自带的性能测试工具--ab(不是anglababy哦)

首先了解一下ab吧.Apache的ab命令模拟多线程并发请求,测试服务器负载压力,也可以测试nginx、lighthttp、IIS等其它Web服务器的压力。 

ab命令对发出负载的计算机要求很低,既不会占用很多CPU,也不会占用太多的内存,但却会给目标服务器造成巨大的负载,因此是某些DDOS攻击之必备良药,老少皆宜。自己使用也须谨慎。否则一次上太多的负载,造成目标服务器直接因内存耗光死机,而不得不硬重启,得不偿失。

在带宽不足的情况下,最好是本机进行测试,建议使用内网的另一台或者多台服务器通过内网进行测试,这样得出的数据,准确度会高很多。远程对web服务器进行压力测试,往往效果不理想(因为网络延时过大或带宽不足).

(以上解释来自网络...)

=============================分割线=============================

接下来开始使用ab吧.

1.首先你要有安装Apache.

2.打开doc窗口,进入到ab.exe所在的目录之中(Apache下的bin文件夹中)输入ab,打开ab程序.

3.ab
的用法是:ab -n 30000-c 1000  http://localhost:8080/honghclient/SysMessage/getMyUnRead?info={"accountid":"9000000001001003031","totype":"1"}

在这个例子中,参数含义如下:

-n :总共的请求执行数,缺省是1;

-c: 并发数,缺省是1;

-t:测试所进行的总时间,秒为单位,缺省50000s

-p:POST时的数据文件

-w: 以HTML表的格式输出结果

4.然后等待压测结果吧(如下单例)

Document Path:         /honghclient/SysMessage/getMyUnRead?info={accountid:9000000001001003031,totype:1}

Document Length:        1045 bytes HTTP响应数据的正文长度

Concurrency Level:      1000

Time taken for tests:   258.412 seconds 所有这些请求处理完成所花费的时间 

Complete requests:      30000 完成请求数 

Failed requests:        1  失败请求数 

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

Non-2xx responses:      30000

Total transferred:      37770000 bytes  网络总传输量 

HTML transferred:       31350000 bytes  HTML内容传输量

Requestsper second:    116.09 [#/sec] (mean) 吞吐量-每秒请求数 

Time perrequest:       8613.745 [ms] (mean)  服务器收到请求,响应页面要花费的时间

Time perrequest:       8.614 [ms] (mean, acrossall concurrent requests)  并发的每个请求平均消耗时间 

##########################添加索引(bas_message_readlog的accoundid)

Requestsper second:    249.04 [#/sec] (mean)

Time perrequest:       4015.406 [ms] (mean)

Time perrequest:       4.015 [ms] (mean, acrossall concurrent requests)

##########################添加索引(bas_message_readlog的messageid)

Requestsper second:    263.79 [#/sec] (mean)

Time perrequest:       3790.832 [ms] (mean)

Time perrequest:       3.791 [ms] (mean, acrossall concurrent requests)

 

Transfer rate:          142.74 [Kbytes/sec] received 平均每秒网络上的流量,可以帮助排除是否存在网络流量过大导致响应时间延长的问题

Connection Times (ms)

              min  mean[+/-sd] median   max

网络上消耗的时间的分解:

Connect:        0   4  43.6      0    699

Processing:    94 8534 25612.8   3456 154885

Waiting:       22 6607 23785.7   2376 154873

Total:         94 8538 25613.0   3459 15488

整个场景中所有请求的响应情况。在场景中每个请求都有一个响应时间 

其中 50% 的用户响应时间小于 3459 毫秒 

80 % 的用户响应时间小于  3883 毫秒 

最大的响应时间小于 154885 毫秒 

Percentage of the requests served within acertain time (ms)

 50%   3459

  66%  3694

 75%   3794

 80%   3883

 90%   4839

 95%  10084

 98%  145947

 99%  146148

 100% 154885 (longest request)
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息