高级性能测试系列《32. 性能测试工具:ab 》

2022-12-02 21:56:13 浏览数 (1)

目录

  • 一、什么是ab
    • 1.ApacheBench(ab)
    • 2.ab安装
    • 3.ab参数选项
  • 二、ab演练
    • 1.指定并发用户和时长
    • 2.指定并发用户和总请求数
    • 3.get请求
    • 4.post请求
  • 三、ab报告

一、什么是ab?

1.ApacheBench(ab)

随apache一起发布,免费、开源。是一个衡量http服务器性能的单线程命令行工具。

在apache中自带了ab这个工具。centos、Ubuntu中安装这个ab工具,ab工具的名称不一样。

特点:

小巧灵活,学习上手快。统计功能强大。但是:不能做复杂的脚本开发、没有图形界面、不能做监控。

2.ab安装

安装:
代码语言:javascript复制
#  centos
[root@centos7 wrk]# yum install httpd-tools -y

# ubuntu
apt-get -y install apache2-utils

验证:
代码语言:javascript复制
# 获得版本信息:
ab -v

ab --help

输入ab -v,得到:
代码语言:javascript复制
   总共的请求数量:
    -n requests     Number of requests to perform
    
    并发用户数:
    -c concurrency  Number of multiple requests to make at a time
    
    时间的限制:
    -t timelimit    Seconds to max. to spend on benchmarking
                    This implies -n 50000
    超时时间:
    -s timeout      Seconds to max. wait for each response
                    Default is 30 seconds
    -b windowsize   Size of TCP send/receive buffer, in bytes
    -B address      Address to bind to when making outgoing connections
    
    发一个post请求的时候也是个post文件:
    -p postfile     File containing data to POST. Remember also to set -T
    
    

3.ab参数选项:

如果没有设置-n和-t,默认就是5万次结束。

如果设置了-t,那就看设置的运行时长是多少,需要运行多久,不管总请求次数了。

二、ab演练

1.指定并发用户和时长:

ab -c 10 -t 30 https://****/注意:域名后面的这个/是不能省略的。

ab报告:
代码语言:javascript复制
[root@centos7 ~]# ab -c10 -t30 https://www.baidu.com/
This is ApacheBench, Version 2.3 <$Revision: 1430300 $>
Copyright 1996 Adam Twiss, Zeus Technology Ltd, http://www.zeustech.net/
Licensed to The Apache Software Foundation, http://www.apache.org/

Benchmarking www.baidu.com (be patient)
Finished 121 requests


Server Software:        BWS/1.1
Server Hostname:        www.baidu.com
Server Port:            443
SSL/TLS Protocol:       TLSv1.2,ECDHE-RSA-AES128-GCM-SHA256,2048,128

Document Path:          /
Document Length:        227 bytes

Concurrency Level:      10
Time taken for tests:   30.137 seconds
Complete requests:      121
Failed requests:        0
Write errors:           0

总共的事务数:
Total transferred:      134428 bytes

html的大小:
HTML transferred:       27467 bytes

每秒请求的数量:
Requests per second:    4.01 [#/sec] (mean)

10个并发用户数总的事务每秒:
Time per request:       2490.697 [ms] (mean)

每个并发用户数的tps值是多少:
Time per request:       249.070 [ms] (mean, across all concurrent requests)

每秒传输多少kb的数据:
Transfer rate:          4.36 [Kbytes/sec] received

响应时间相关的数据:

Connection Times (ms)
              min  mean[ /-sd] median   max
Connect:      135 1567 1648.6   1423    8081
Processing:    39  305 265.6    224     990
Waiting:       38  303 265.6    214     990
Total:        176 1873 1668.8   1922    8174

Percentage of the requests served within a certain time (ms)
  50%   1898
  66%   2260
  75%   2338
  80%   2372
  90%   2851
  95%   3593
  98%   7829
  99%   7946
 100%   8174 (longest request)


2.指定并发用户和总请求数:

ab -c10 -n1000 https:// ****/

3.get请求:

ab -c 10 -t 30 http://ip:port/***?parm1=value1&parm2=value2

4.post请求:

ab -c 10 -n1000 -p user.json -T“application/json”http://ip:port/***

同目录下user.json文件:{“key1”:"value1” “key2”:"value2”}

三、ab报告

代码语言:javascript复制
服务器信息

性能测试概况

时间消耗:
mim  mean  [ /-sd]  median max 最小值、平均值、方差、中位数、最大值。
connect      socket链路建立消耗,代表网络状况。 
Processing   写入缓冲区消耗 链路消耗 服务器消耗。 
waiting      写入缓冲区消耗 链路消耗 服务器消耗 读取数据消耗。 
Total        单个事务总时间 

聚合报告


文章中除标明“图片来自网络”的图片,皆为小编本人所画所截图,计算机知识都一样,如有雷同,纯属巧合。「文章是清菡编写的,如有转载,请标明出处!」

0 人点赞