压力测试工具-ab工具 短信压力测试工具

出境入境2024-03-10 12:34小乐

压力测试工具-ab工具 短信压力测试工具

在学习ab工具之前,我们需要先了解一下关于压力测试的几个概念

吞吐率(Requests per Second)的概念:服务器并发处理能力的定量描述。单位是reqs/s,指一定数量的并发用户,单位时间内处理的请求数。在一定并发用户数下,单位时间能够处理的最大请求数称为最大吞吐率。

计算公式:请求总数/处理这些请求所花费的时间,即每秒请求数=完成的请求数/测试所花费的时间

并发连接数(The number of Concurrent Connections)概念:服务器在某一时刻接受的请求数量,简单来说就是一个会话。

并发用户数(Concurrency Level)概念:要注意这个概念和并发连接数的区别。一个用户可能同时产生多个会话,即连接数。

用户平均请求等待时间(Time per request)的计算公式:完成所有请求的时间/(总请求数/并发用户数),即每个请求的时间=测试时间/(完成的请求数) /并发级别)

服务器平均请求等待时间(Time per request: across all并发请求)的计算公式为:完成所有请求所花费的时间/请求总数,即Time take for/testsComplete requests。正如您所看到的,它是吞吐量的倒数。同时它也=平均用户请求等待时间/并发用户数,即Time per request/Concurrency Level。

ab工具介绍,ab的全称是:apache bench

官网的解释如下:ab是Apache超文本传输协议(HTTP)的性能测试工具。它的设计意图是描绘当前安装的Apache的执行性能,主要是展示你安装的Apache每秒可以处理多少个请求。

其他网站解释:ab是apache自带的压力测试工具。 ab很实用。不仅可以对apache服务器进行网站访问压力测试,还可以对其他类型的服务器进行压力测试。如nginx、tomcat、IIS等。

下载ab工具Window官方下载地址:https://www.apachehaus.com/cgi-bin/download.plx

下载后解压并修改解压根目录下的conf/httpd.conf文件的端口配置。默认是80端口,应该被占用,无法安装。您可以将其修改为另一项。我这里修改为端口8088,然后输入命令安装:httpd -k install

启动ab 工具。如果需要在命令行任意路径下输入ab测试,可以将bin目录路径添加到环境变量的路径中。我在bin目录下打开了命令行。

开始测试,输入命令ab -n 100 -c 10 http://test.com/其中-n 代表请求数,-c 代表并发数

其余命令请参见http://apache.jz123.cn/programs/ab.html

ab参数说明关于ab命令的使用,我们可以通过help命令查看。如下:

[root@localhost bin]# ab --helpab: 参数数量错误Usage: ab [选项] [http[s]://]主机名[:端口]/路径选项为: -n requests 执行的请求数-c concurrency 多个请求数一次-t timelimit 秒到最大。花费在基准测试上这意味着-n 50000 -s 超时最大秒数。等待每个响应默认值为30 秒-b windowsize TCP 发送/接收缓冲区的大小(以字节为单位) - B 地址建立传出连接时要绑定的地址-p postfile 包含要POST 的数据的文件。还要记住设置-T -u putfile 包含要PUT 的数据的文件。还要记住设置-T -T content-type 内容类型标头以用于POST/PUT 数据,例如。 'application/x-www-form-urlencoded' 默认为'text/plain' -v 详细程度打印多少故障排除信息-w 在HTML 表中打印结果-i 使用HEAD 而不是GET - x 属性要作为表属性插入的字符串- y 属性要作为tr 属性插入的字符串-z 属性要作为td 或th 属性插入的字符串-C 属性添加cookie,例如。 '阿帕奇=1234'。 (可重复) -H 属性添加任意标题行,例如。 'Accept-Encoding: gzip' 插入到所有正常标题行之后。 (可重复) -A 属性添加基本WWW 身份验证,属性是冒号分隔的用户名和密码。 -P attribute 添加基本代理身份验证,属性是冒号分隔的用户名和密码。 -X proxy:port 要使用的代理服务器和端口号-VPrint 版本号并退出-k 使用HTTP KeepAlive 功能-d 不显示服务百分位数表。 -S不显示置信度估计器和警告。 -q 执行超过150 个请求时不显示进度-g filename 将收集的数据输出到gnuplot 格式文件。 -e 文件名输出带有服务百分比的CSV 文件-r 套接字接收错误时不退出。 -h 显示使用信息(此消息) -Z ciphersuite 指定SSL/TLS 密码套件(参见openssl ciphers) -f protocol 指定SSL/TLS 协议(SSL3、TLS1、TLS1.1、TLS1.2 或ALL) 下面我们将解释这些参数。如下:

范围

阐明

-n

测试会话期间执行的请求数。默认情况下,只执行一次请求。

-C

一次生成的请求数。默认为一次一个。

-t

测试运行的最大秒数。其内部隐式值为-n 50000,它将服务器的测试限制为固定的总时间。默认情况下,没有时间限制。

-p

包含需要POST 的数据的文件。

-P

为运输代理提供经过BASIC 认证的信任。用户名和密码以:分隔,并以base64编码发送。无论服务器是否需要(即是否发送了401 身份验证要求代码),都会发送此字符串。

-T

POST 数据使用的内容类型标头信息。

-v

设置显示信息的详细程度- 4 或更大将显示标题信息,3 或更大将显示响应代码(404、200 等),2 或更大将显示警告和其他信息。

-V

显示版本号并退出。

-w

以HTML 表格格式输出结果。默认情况下,它是一个白色背景的两列宽度的表格。

-我

执行HEAD 请求而不是GET。

-X

使用代理服务器来处理请求。

-X

设置属性的字符串。

-y

设置

-z

设置

属性的字符串。

-C

将cookie 行附加到请求中。其典型形式是名称=值的参数对,并且该参数可以重复。

-H

将附加标头信息附加到请求中。此参数的典型形式是包含冒号分隔的字段和值对的有效标题行(例如,“Accept-Encoding:zip/zop;8bit”)。

-A

向服务器提供基本身份验证信任。用户名和密码以:分隔,并以base64编码发送。无论服务器是否需要(即是否发送了401 身份验证要求代码),都会发送此字符串。

-H

显示用法。

-d

不显示“XX [ms] 表内服务的百分比”消息(支持以前的版本)。

-e

生成一个逗号分隔(CSV) 文件,其中包含处理每个相应百分比的请求(从1% 到100%)所需的相应时间百分比(以微秒为单位)。由于这种格式是“二值化”的,因此它比gnuplot 格式更有用。

-G

将所有测试结果写入gnuplot 或TSV(制表符分隔)文件。该文件可以轻松导入到Gnuplot、IDL、Mathematica、Igor 甚至Excel 中。第一行是标题。

-k

启用HTTP KeepAlive 功能,该功能在一个HTTP 会话中执行多个请求。默认情况下,KeepAlive 功能未启用。

-q

如果处理的请求数大于150,ab 每次处理大约10% 或100 个请求时都会在stderr 上输出进度计数。 -q 标志禁止这些消息。

属性的字符串。

测试结果分析:运行上述命令后,测试报告就会出来。

此部分显示Web 服务器的信息。可以看到服务器使用nginx,域名为wan.bigertech.com,端口为80

本段是有关所请求文件的相关信息。位置为“/”,文档大小为338436字节(这是http响应的主体长度)

本段展示了压力测试的几个重要指标

并发级别: 100==并发请求数测试所用时间: 50.872 秒==整个测试所用时间完成请求数: 1000==已完成请求数失败请求数: 0==失败请求数总传输数: 13701482 字节==网络中的网络整个场景传输量HTML Transfer: 13197000 bytes==整个场景HTML 内容传输量每秒请求数: 19.66 [#/sec] (mean)==吞吐率,大家最关心的指标之一,相当于LR 中每秒的事务数,后面括号中的mean表示这是一个平均值Time per request: 5087.180 [ms] (mean)==用户平均请求等待时间,大家最关心的第二个指标是相当于LR中的平均事务响应时间,后面括号中的mean表示这是一个平均值。每个请求的时间: 50.872 [ms](所有并发请求的平均值)==服务器的平均请求处理时间。大家最关心的第三个指标是Transferrate: 263.02[Kbytes/sec]received==每秒网络上的平均流量,可以帮助排除是否存在网络流量过大导致响应时间延长的问题。此部分表示网络上花费的时间的细分。这一段是每个请求处理时间的分配,50%的处理时间。在4930ms中,66%的处理时间在5008ms.重要的是看90%的处理时间。关于登录问题,有时候压测需要用户登录,怎么办?请参考以下步骤:

使用账号和密码登录后,使用开发者工具找到标识本次会话的Cookie值(Session ID)并记录下来。如果只使用一个Cookie,那么只需输入命令:ab -n 100 -C key=value http://test.com/如果需要多个Cookie,直接设置Header 即可:ab -n 100 -H "Cookie: Key1=Value1; Key2=Value2》http://test.com/Summary 总的来说,ab工具ab小巧简单,上手学习也很快。它可以提供所需的基本性能指标,但没有图形结果,无法监控。因此ab工具可以用于临时紧急任务和简单测试。

类似类型的压力测试工具还有:webbench、siege、http_load等。

开始测试。如果需要在命令行任意路径输入ab test,可以将bin目录路径添加到环境变量的路径中。

我在bin目录下打开了命令行。注意,以下是错误的,因为域名后面需要添加/path。

ab -n 100 -c 10 http://www.baidu.com 错误信息如下:

ab: invalid URLUsage: ab [options] [http://]hostname[:port]/path 必须连接path,所以我改了测试命令:

ab -n 100 -c 10 http://www.baidu.com/s -n 表示请求数,-c 表示并发数。 s为path,表示指定的测试地址。如果不指定,可能会报“ab: invalid url”错误。还有-t 表示s内的并发数和请求数

测试数据如下:

D:\apacheab\Apache24\binab -n 100 -c 10 http://www.baidu.com/s这是ApacheBench,版本2.3 $Revision: 1807734 $ 版权所有1996 Adam Twiss,Zeus Technology Ltd,http://www.zeustech.net/授权给Apache Software Foundation , http://www.apache.org/Benchmarking www.baidu.com (耐心等待).doneServer Software: BWS/1.1 ##服务器软件及版本Server Hostname: www.baidu.com ##请求的地址/域名Server Port: 80 # #端口文档路径: /s ##请求路径文档长度: 112435字节##页面数据/返回数据量并发级别: 10 ##并发数测试耗时: 4.764秒##总共用了多少时间完成请求: 100 ##数量请求数Failed requests: 99 ## 为什么向百度的失败请求失败这么多?百度应该有所防范(Connect: 0, Receive: 0, Length: 99, Exceptions: 0) Total Transfer: 11342771 bytes ##传输的总字节数,包括http headers信息等HTML Transfer:11247622 bytes ##Html字节数,实际页面传输字节数Requests per Second: 20.99 [#/sec] (mean) ##每秒有多少个请求,这是一个很重要的参数值,服务器的吞吐量Time per request:476.427 [ms] (mean) ##用户平均请求等待时间每个请求的时间:47.643 [ms](平均值,所有并发请求)##服务器平均处理时间,即服务器吞吐量的倒数传输率: 2325.00 [Kbytes/sec]收到##每秒获取的数据长度连接时间(ms )minmean[+/-sd]medianmaxConnect:22 41 12.4 39 82##最短连接时间、平均值、中值、最大值处理: 113 386 211.1 330 1246##处理时间等待:25 80 43.9 73 266##等待时间总计: 152 427 210.1 373 1283 ##总时间一定时间内服务请求的百分比(毫秒) 50% 373 ##50%的请求在373毫秒内返回66% 400 ## 60%的请求在400毫秒内返回75% 426 80% 465 90% 761 95% 930 98% 1192 99% 1283 100% 1283(最长请求) 由于ab工具消耗量较小,所以有些人也用来进行ddos攻击,被认为是ddos攻击工具。

[Linux]ApacheBench (ab) 压力测试工具AB介绍ab是apachebench命令的缩写。

ab是apache自带的压力测试工具。 ab很实用。不仅可以对apache服务器进行网站访问压力测试,还可以对其他类型的服务器进行压力测试。如nginx、tomcat、IIS等。

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

ab 命令对发出负载的计算机的要求非常低。它不会占用大量CPU,也不会占用大量内存。但会对目标服务器造成巨大的负载,其原理与CC攻击类似。自己测试和使用时也需要小心,否则会一下子施加太大的负载。可能会导致目标服务器资源耗尽,严重时甚至导致崩溃。

ab安装安装命令:yum -y install httpd-tools 查看版本命令:ab -V 查看参数说明:ab --help

ab的常用使用方法:ab -c 500 -n 5000 http://localhost/

[root@H__D /]# ab -c 500 -n 5000 http://localhost/这是ApacheBench,版本2.3 $Revision: 1430300 $版权所有1996 Adam Twiss,Zeus Technology Ltd,http://www.zeustech.net/授权给Apache 软件基金会,http://www。 apache.org/Benchmarking localhost (耐心点)Completed 500 requestsCompleted 1000 requestsCompleted 1500 requestsCompleted 2000 requestsCompleted 2500 requestsCompleted 3000 requestsCompleted 3500 requestsCompleted 4000 requestsCompleted 4500 requestsCompleted 5000 requestsCompleted 5000 requests服务器软件: ngin x/1 .15.3 #测试服务器名称Server Hostname: localhost #请求的URL主机名Server Port: 80 #请求端口Document Path:/#请求路径Document Length: 613 bytes #HTTP响应数据的文本长度Concurrency Level: 500 #并发用户数,这是我们设置的参数之一Time take for tests: 0.407 秒#All 处理这些请求所花费的总时间,以秒为单位。 Complete requests: 5000 #请求总数,这是我们设置的参数之一。 Failed requests: 0 #表示失败的请求数。写入错误: 0Total returned: 4230000 bytes #所有请求的响应数据长度。和。包括每个HTTP响应数据HTML传输的头信息和主体数据的长度:3065000字节#所有请求的响应数据中主体数据的总和,即减去Total中HTTP响应数据中头信息的长度Transfers Requests per Second: 12284.44 [#/sec] (mean) #吞吐量,计算公式:完成的请求/测试所花费的时间总请求数/处理这些请求所花费的时间Time per request:40.702 [ms] (mean) #用户平均请求等待时间,计算公式:测试时间/(完成请求数/并发度)。处理所有请求所花费的时间/(总请求数/并发用户数) Time per request:0.081 [ms] (mean, across all concurrent requests) #服务器平均请求等待时间,计算公式:测试所花费的时间/完整请求为恰好是吞吐率的倒数。也可以这样计算:每个请求的时间/并发级别接收的传输率: 10149.06 [Kbytes/sec]。 #表示这些请求在单位时间内从服务器获取的数据长度。计算公式为:传输总量/测试时间。这个统计数据很好地说明了服务器处理能力达到极限时对出口宽带的需求。连接时间(ms)min 平均值[+/-sd] 中值maxConnect: 0 2 0.8 16Processing: 3 5 7.9 5 399Waiting: 0 4 7.9 4 399Total: 4 7 8.0 7 404WARNING: 初始连接时间的中值和平均值不在正常偏差范围内结果可能不太可靠。特定时间内服务的请求百分比(毫秒) 50% 7 #50% 用户请求在7 毫秒内返回66% 7 #60% 用户请求在7 毫秒内返回75% 7 80% 7 90 % 7 95% 7 98% 12# 98%的用户请求在12ms内返回99%12 100%404(最长的请求)。使用注意事项1. MAC 需自带Apache。

2、使用ab命令时,如果并发过高,会出现错误:Too much open files,因为打开文件的数量受到系统的限制。

查看系统打开文件数,命令:ulimit -a

修改打开文件数为1024,命令:ulimit -n 1024

查看修改情况,命令:ulimit -n

参考:

https://www.cnblogs.com/behindman/p/8700611.html https://blog.csdn.net/qq_26525215/article/details/79182674

https://www.cnblogs.com/hd/p/9903959.html

https://www.jianshu.com/p/d222b7c80e97

猜你喜欢