【实战】如何使用apache ab性能工具进行压力测试

2020-06-18 00:00:00 请求 时间 压力 并发 负载

作为后端工程师,除了实现业务需求之外,需要考虑的就是自己写的服务,在大并发下是否能正常运行了。但是,在一般开发情况下,没那么多大并发情况让你测试,那该怎么办呢?

这时候,我们就要用到apache的压力测试工具了,apache bench简称ab。


介绍

ab是apache自带的压力测试工具,ab是apache bench命令的缩写。

当安装完apache后,就可以在bin下面找到ab.exe然后进行apache 负载压力测试。


ab命令会创建多个并发访问线程,模拟多个访问者同时对某一URL地址进行访问。它的测试目标是基于URL的,因此,它既可以用来测试apache的负载压力,也可以测试nginx、lighthttp、tomcat、IIS等其它Web服务器的压力。

ab命令对发出负载的计算机要求很低,它既不会占用很高CPU,也不会占用很多内存。但是自己测试使用也需要注意,否则一次上太多的负载。可能造成目标服务器资源耗完,严重时甚至导致死机。


简单使用

ab压力测试工具使用非常简单,只需一个命令即可。

示例:

ab -n 200000 -c 20000 http://192.168.1.179/ >>d:1.html

-n:请求数

-c:并发数

上面的示例表示:每次并发20000个请求,总共请求200000次,并把结果输出到指定文件里。


执行结果:


结果参数解释

参数说明:

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

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

Complete requests: 800 完成请求数

Failed requests: 0 失败请求数

Total transferred: 393600 bytes 网络总传输量

HTML transferred: 252000 bytes HTML内容传输量

Requests per second: 875.22 [#/sec] (mean) 吞吐量-每秒请求数

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

Time per request: 1.143 [ms] (mean, across all concurrent requests) 并发的每个请求平均消耗时间

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

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

Connection Times (ms)

min mean[+/-sd] median max

Connect: 0 1 0.5 1 3

##连接的小时间,平均值,中值,大值

Processing: 245 534 125.2 570 682

Waiting: 11 386 189.1 409 669

Total: 246 535 125.0 571 684

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

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

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

大的响应时间小于 684 毫秒

相关文章