AB

简介: AB是Apache自带的压力测试工具。AB非常实用,它不仅可以对Apache服务器进行网站访问压力测试,也可以对或其它类型的服务器进行压力测试。比如Nginx、Tomcat、IIS等。 AB对发出负载的计算机要求很低,它既不会占用很高CPU,也不会占用很多内存。

1.AB简介

AB是Apache自带的压力测试工具。AB非常实用,它不仅可以对Apache服务器进行网站访问压力测试,也可以对或其它类型的服务器进行压力测试。比如Nginx、Tomcat、IIS等。

AB对发出负载的计算机要求很低,它既不会占用很高CPU,也不会占用很多内存。但却会给目标服务器造成巨大的负载,其原理类似CC攻击。自己测试使用也需要注意,否则一次上太多的负载。可能造成目标服务器资源耗完,严重时甚至导致死机。

AB是一条命令,集成在了HTTPD-Tools工具中。

2.安装AB到CentOS

系统版本:CentOS Linux release 7.3.1611 (Core)
软件版本:httpd-tools-2.4.6
硬件要求:无

2.1.安装YUM-EPEL源

HTTP-Tools软件包由YUM-EPEL源提供。

[root@localhost ~]# yum -y install epel-release.noarch

2.2.安装HTTPD-Tools

[root@localhost ~]# yum -y install httpd-tools

3.AB命令详解

语法: ab [选项] 访问地址
选项:
    -n requests     要执行的请求总数。
    -c concurrency  一次发出多个请求的数量。
    -t timelimit    设置测试的最大时长,单位为秒。
    -s timeout      设置响应超时时间,单位为秒,默认为30秒。
    -b windowsize   设置TCP发送/接受缓冲区的大小,单位为字节。
    -B address      当有多张网卡时,设置进行传出连接时绑定的网卡地址。
    -p postfile     设置POST请求包含的数据文件。需要与"-T"选项一起连用。
    -u putfile      设置PUT请求所包含的数据文件。需要与"-T"选项一起连用。
    -T content-type 设置POST/PUT请求时指定的数据MIME类型的头部信息,默认值为"text/plain"。
    -w              以HTML网页的方式显示结果。
    -i              使用HEAD方法请求而不是GET方法。
    -C attribute    添加cookie,例如:'Apache=1234'。
    -H attribute    添加任意标头,例如:'Accept-Encoding:gzip',在所有正常标题行之后插入此信息。
    -A attribute    添加基本的网络身份验证,属性是以冒号分割的用户名和密码。
    -P attribute    添加基本的代理身份验证,属性是以冒号分割的用户名和密码。
    -X proxy:port   设置要使用的代理服务器地址和端口。
    -V              显示软件版本号并退出。
    -k              使用HTTP Keepalive保持长连接功能。
    -d              不显示百分比报告信息。
    -S              不显示置信度估算值和警告信息。
    -q              执行超过150个请求不要显示进度。
    -g filename     将收集到的数据输出到Gnuplot格式的文件中。
    -e filename     将收集到的数据输出到已提供百分比的CSV文件中。
    -r              在接受到套接字错误不会退出。
    -h              显示使用信息。
    -Z ciphersuite  设置SSL/TLS密码套件(请参阅OpenSSL)。
    -f protocol     设置支持的SSL/TLS协议(SSL3, TLS1, TLS1.1, TLS1.2 or ALL)。

4.使用AB对WEB服务进行压测

4.1.调整系统限制

系统默认情况下允许一个进程同时打开的文件描述符数量是1024,若我们需要进行超过1024并发测试的话,可能需要调高此值,客户端和服务端都需要调整。

[root@localhost ~]# ulimit -n 65535                       => 设置进程并发文件数(当前生效)
[root@localhost ~]# vim /etc/security/limits.conf         => 设置进程并发文件数(永久生效)
# 用户      软硬限制 限制类型    值
root       soft    nofile    65535
root       hard    nofile    65535
*          soft    nofile    65535
*          hard    nofile    65535
# *           表示所有用户。
# soft        软限制,当用户使用超出设定值系统会发出告警。
# hard        硬限制,绝对限制,用户使用绝对不能超出设置的值。
# nofile      限制类型,进程可同时打开的并发文件描述符数量。
[root@localhost ~]# ulimit -n                 
65535

4.2.开始测试

我们在进行压力测试的时候应合理的从小到大一段一段测试WEB服务器负载,并通过压力测试了解WEB服务器的资源瓶颈,根据业务需求合理的采购服务器。

[root@localhost ~]# ab -n 1000 -c 100 -s 30 http://www.szaybc.com/
# -n   设置请求总数量。
# -c   设置并发请求数量。
# -s   设置请求超时时间。
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.szaybc.com (be patient)   
开始基准测试(请耐心等待)
Completed 100 requests   完成100个请求
Completed 200 requests   完成200个请求
Completed 300 requests   完成300个请求
Completed 400 requests   完成400个请求
Completed 500 requests   完成500个请求
Completed 600 requests   完成600个请求
Completed 700 requests   完成700个请求
Completed 800 requests   完成800个请求
Completed 900 requests   完成900个请求
Completed 1000 requests  完成1000个请求
Finished 1000 requests   完成了1000个请求

Server Software:        nginx/1.13.1     服务器软件
Server Hostname:        www.szaybc.com   服务器主机名
Server Port:            80               服务器端口

Document Path:          /                文件路径
Document Length:        65732 bytes      文件长度(大小)

Concurrency Level:      100              并发级别(数量),并发用户数量
Time taken for tests:   5.713 seconds    测试时间,完成所有请求所花费的时间
Complete requests:      1000             完成请求数
Failed requests:        0                失败请求数
Write errors:           0                写入错误
Total transferred:      65969000 bytes   总传输数据大小
HTML transferred:       65732000 bytes   总传输HTML数据大小
Requests per second:    175.04 [#/sec](mean)
吞吐率,每秒能完成请求处理的数量。计算:吞吐率=完成请求数/测试时间
Time per request:       571.302 [ms](mean)
所有并发用户都请求一次的等待时间(平均值),单位为毫秒。计算:测试时间/(完成请求数/并发用户数量)
Time per request:       5.713 [ms](mean, across all concurrent requests)
单个用户请求一次的等待时间(平均值),单位为毫秒。计算:所有并发用户都请求一次的等待时间/并发用户数量
Transfer rate:          11276.50 [Kbytes/sec] received
接受响应数据的传输速率,单位KB/S。计算:传输速率=总传输数据大小/测试时间

Connection Times (ms)   
连接时间(毫秒)
              min  mean[+/-sd] median   max    最小值 平均值 标准差 中间值 最大值
Connect:        1   33  14.9     29     108    网络连接时间:
Processing:    14  530  35.7    539     603    系统处理时间:
Waiting:        2   43  16.6     42     129    等待时间:
Total:         15  563  32.0    566     650    请求完成总时间:

Percentage of the requests served within a certain time (ms)
按完成请求的百分比,得出完成请求中花费时间最长的那一个请求的时间,也就是这些请求完成时间的最大值,单位为毫秒
  50%    566                       50%请求完成时间的最大值是566毫秒
  66%    569                       66%请求完成时间的最大值是569毫秒
  75%    570                       75%请求完成时间的最大值是570毫秒
  80%    571                       80%请求完成时间的最大值是571毫秒
  90%    578                       90%请求完成时间的最大值是578毫秒
  95%    625                       95%请求完成时间的最大值是625毫秒
  98%    626                       98%请求完成时间的最大值是626毫秒
  99%    627                       99%请求完成时间的最大值是627毫秒
 100%    650 (longest request)     100%请求完成时间的最大值是650毫秒(最长请求)
目录
相关文章
|
7月前
|
传感器
AC31 40和50系列
AC31 40和50系列
AC31 40和50系列
|
算法 搜索推荐 数据挖掘
AB实验设计
AB实验的原理、优缺点及流程
1470 0
AB实验设计
|
Python
计算S=a+aa+…+aa…a
计算S=a+aa+…+aa…a
147 0
|
人工智能
CF628B
CF628B
71 0
|
网络协议 网络安全 数据安全/隐私保护