优化之路-----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)
首先了解一下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)
相关文章推荐
- apache-ab并发负载压力测试
- apache-ab并发负载压力测试
- apache-ab并发负载压力测试(转)
- apache-ab并发负载压力测试
- Apache ab并发负载压力测试
- apache-ab并发负载压力测试
- apache-ab并发负载压力测试
- apache-ab并发负载压力测试
- apache-ab 并发负载压力测试
- apache 自带的ab.exe 测试网站的并发量(网站压力测试)
- 压力并发测试工具Apache ab
- PHP使用Apache中的ab(ApacheBench)测试网站的并发量
- apache并发测试工具ab为什么测不准
- 关于apache的ab工具测试请求数及并发数
- ab 测试 和 apache 修改 并发数 mpm
- Ubuntu 16.04/CentOS 6.9安装Apache压力(并发)测试工具ab
- 使用ab命令对Apache服务器进行负载压力测试
- apache 自带的ab.exe 测试网站的并发量(网站压力测试)
- 使用Ab命令对Apache服务器进行负载压力测试
- apache ab测试并发多次实例与单次实例