ab 压力测试介绍

压测常用工具有:ab、http_load、webbench、siege。其中 ab 就是一个非常使用的命令,可以测试近乎所有的服务器,他的命令格式如下

ab -h

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

ab -n 100 -c 10 https://blog.souche.com/

ab 有限制,并发数不能超过 100。寻求其他做压力测试的工具。

具体运行如下:

$ ab -n 100 -c 10 https://blog.souche.com/
This is ApacheBench, Version 2.3 <$Revision: 1826891 $> (服务器版本)
Copyright 1996 Adam Twiss, Zeus Technology Ltd, http://www.zeustech.net/
Licensed to The Apache Software Foundation, http://www.apache.org/

Benchmarking blog.souche.com (be patient).....done


Server Software:
Server Hostname:        blog.souche.com
Server Port:            443
SSL/TLS Protocol:       TLSv1.2,ECDHE-RSA-AES128-GCM-SHA256,2048,128
TLS Server Name:        blog.souche.com

Document Path:          /
Document Length:        41251 bytes (此URL返回的文档大小)

Concurrency Level:      10 (并发数)
Time taken for tests:   7.713 seconds (压测消耗总时间)
Complete requests:      100 (总请求数)
Failed requests:        0
Total transferred:      4153100 bytes (传输的总数据量)
HTML transferred:       4125100 bytes (HTML 文档的总数据量)
Requests per second:    12.96 [#/sec] (mean) (吞吐率,也就是平均每秒请求数)
Time per request:       771.332 [ms] (mean) (用户平均请求等待时间:总消耗时间/(总请求数/并发用户数))
Time per request:       77.133 [ms] (mean, across all concurrent requests) (服务器平均请求等待时间:总消耗时间/总请求数)
Transfer rate:          525.81 [Kbytes/sec] received (传输速率)

Connection Times (ms)
              min  mean[+/-sd] median   max
Connect:       31   59  20.7     57     168
Processing:   114  670 121.1    664     924
Waiting:      101  652 121.6    652     905
Total:        247  729 120.1    730    1085

Percentage of the requests served within a certain time (ms)
  50%    730
  66%    755
  75%    779
  80%    809
  90%    909
  95%    950
  98%    966
  99%   1085
 100%   1085 (longest request)

吞吐率(Requests per second)是越大越好。

如果把上面的命令换成 ab -n 1000 -c 100 https://blog.souche.com/ ,做个更大压力的测试,最关键的几条测试结果如下:

Requests per second:    15.61 [#/sec] (mean) (平均每秒请求数)
Time per request:       6407.951 [ms] (mean) (用户平均请求等待时间)
Time per request:       64.080 [ms] (mean, across all concurrent requests) (服务器平均请求等待时间)
Transfer rate:          632.93 [Kbytes/sec] received

似乎性能还提高了?这是因为吞吐率指的是在某个并发用户数下单位时间内处理的请求数,不同并发用户数下,吞吐率一般是不同的,其数值自然是越大越好。

ab 的原理

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

ab 命令对发出负载的计算机要求很低,它既不会占用很高CPU,也不会占用很多内存。但却会给目标服务器造成巨大的负载。类似 CC 攻击。

posted @ 2020-04-18 11:12  Ever-Lose  阅读(1363)  评论(0编辑  收藏  举报